diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2021-11-29 12:07:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-29 12:07:47 +0100 |
commit | 5178e093ed366b59964bc435b0d1bd127a83df8c (patch) | |
tree | c3674264d85219a87cdf463501b26004fa4cc6f3 /runtime/js | |
parent | 6c09e023049631ea8b168aec53db4f652a1ec0aa (diff) |
Revert "fix(test): Improve reliability of `deno test`'s op sanitizer with timers (#12908)" (#12929)
This reverts commit d335343a79afbcfe719109af510fe7a1dd0df2e8.
Diffstat (limited to 'runtime/js')
-rw-r--r-- | runtime/js/40_testing.js | 35 |
1 files changed, 1 insertions, 34 deletions
diff --git a/runtime/js/40_testing.js b/runtime/js/40_testing.js index e8b07d494..053afc5da 100644 --- a/runtime/js/40_testing.js +++ b/runtime/js/40_testing.js @@ -30,37 +30,6 @@ } = window.__bootstrap.primordials; let testStepsEnabled = false; - let opSanitizerDelayResolve = null; - - // Even if every resource is closed by the end of a test, there can be a delay - // until the pending ops have all finished. This function returns a promise - // that resolves when it's (probably) fine to run the op sanitizer. - // - // This is implemented by adding a macrotask callback that runs after the - // timer macrotasks, so we can guarantee that a currently running interval - // will have an associated op. An additional `setTimeout` of 0 is needed - // before that, though, in order to give time for worker message ops to finish - // (since timeouts of 0 don't queue tasks in the timer queue immediately). - function opSanitizerDelay() { - return new Promise((resolve, reject) => { - setTimeout(() => { - if (opSanitizerDelayResolve !== null) { - reject(new Error("There is an op sanitizer delay already.")); - } else { - opSanitizerDelayResolve = resolve; - } - }, 0); - }); - } - - function handleOpSanitizerDelayMacrotask() { - if (opSanitizerDelayResolve !== null) { - opSanitizerDelayResolve(); - opSanitizerDelayResolve = null; - } - return true; - } - // Wrap test function in additional assertion that makes sure // the test case does not leak async "ops" - ie. number of async // completed ops after the test is the same as number of dispatched @@ -76,7 +45,7 @@ // Defer until next event loop turn - that way timeouts and intervals // cleared can actually be removed from resource table, otherwise // false positives may occur (https://github.com/denoland/deno/issues/4591) - await opSanitizerDelay(); + await new Promise((resolve) => setTimeout(resolve, 0)); } if (step.shouldSkipSanitizers) { @@ -497,8 +466,6 @@ finishing test case.`; filter = null, shuffle = null, } = {}) { - core.setMacrotaskCallback(handleOpSanitizerDelayMacrotask); - const origin = getTestOrigin(); const originalConsole = globalThis.console; |