mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 16:37:23 +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 ret;
|
||||||
|
let is_promise = false;
|
||||||
try {
|
try {
|
||||||
ret = test_function({override, override_rewire, disallow, disallow_rewire});
|
ret = test_function({override, override_rewire, disallow, disallow_rewire});
|
||||||
|
is_promise = typeof ret?.then === "function";
|
||||||
|
ok = !is_promise;
|
||||||
|
} finally {
|
||||||
|
if (!is_promise) {
|
||||||
|
restore_callbacks.reverse();
|
||||||
|
for (const restore_callback of restore_callbacks) {
|
||||||
|
restore_callback();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_promise) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (async () => {
|
||||||
|
try {
|
||||||
|
ret = await ret;
|
||||||
ok = true;
|
ok = true;
|
||||||
|
return ret;
|
||||||
} finally {
|
} finally {
|
||||||
restore_callbacks.reverse();
|
restore_callbacks.reverse();
|
||||||
for (const restore_callback of restore_callbacks) {
|
for (const restore_callback of restore_callbacks) {
|
||||||
restore_callback();
|
restore_callback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
})();
|
||||||
return ret;
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user