mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +00:00 
			
		
		
		
	zjsunit: Support asynchronous overrides.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
		
				
					committed by
					
						
						Anders Kaseorg
					
				
			
			
				
	
			
			
			
						parent
						
							b0dba411d9
						
					
				
				
					commit
					7200c9f8e4
				
			@@ -446,15 +446,34 @@ exports.with_overrides = function (test_function) {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    let ret;
 | 
			
		||||
    let is_promise = false;
 | 
			
		||||
    try {
 | 
			
		||||
        ret = test_function({override, override_rewire, disallow, disallow_rewire});
 | 
			
		||||
        ok = true;
 | 
			
		||||
        is_promise = typeof ret?.then === "function";
 | 
			
		||||
        ok = !is_promise;
 | 
			
		||||
    } finally {
 | 
			
		||||
        restore_callbacks.reverse();
 | 
			
		||||
        for (const restore_callback of restore_callbacks) {
 | 
			
		||||
            restore_callback();
 | 
			
		||||
        if (!is_promise) {
 | 
			
		||||
            restore_callbacks.reverse();
 | 
			
		||||
            for (const restore_callback of restore_callbacks) {
 | 
			
		||||
                restore_callback();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
    if (!is_promise) {
 | 
			
		||||
        return ret;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return (async () => {
 | 
			
		||||
        try {
 | 
			
		||||
            ret = await ret;
 | 
			
		||||
            ok = true;
 | 
			
		||||
            return ret;
 | 
			
		||||
        } finally {
 | 
			
		||||
            restore_callbacks.reverse();
 | 
			
		||||
            for (const restore_callback of restore_callbacks) {
 | 
			
		||||
                restore_callback();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    })();
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user