Skip to content

Commit

Permalink
Revert "fix(test): Improve reliability of deno test's op sanitizer …
Browse files Browse the repository at this point in the history
…with timers (denoland#12908)"

This reverts commit d335343.
  • Loading branch information
bartlomieju committed Nov 29, 2021
1 parent 96d02de commit 7036327
Show file tree
Hide file tree
Showing 4 changed files with 1 addition and 67 deletions.
5 changes: 0 additions & 5 deletions cli/tests/integration/test_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,6 @@ itest!(ops_sanitizer_unstable {
output: "test/ops_sanitizer_unstable.out",
});

itest!(ops_sanitizer_timeout_failure {
args: "test test/ops_sanitizer_timeout_failure.ts",
output: "test/ops_sanitizer_timeout_failure.out",
});

itest!(exit_sanitizer {
args: "test test/exit_sanitizer.ts",
output: "test/exit_sanitizer.out",
Expand Down
6 changes: 0 additions & 6 deletions cli/tests/testdata/test/ops_sanitizer_timeout_failure.out

This file was deleted.

22 changes: 0 additions & 22 deletions cli/tests/testdata/test/ops_sanitizer_timeout_failure.ts

This file was deleted.

35 changes: 1 addition & 34 deletions runtime/js/40_testing.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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) {
Expand Down Expand Up @@ -497,8 +466,6 @@ finishing test case.`;
filter = null,
shuffle = null,
} = {}) {
core.setMacrotaskCallback(handleOpSanitizerDelayMacrotask);

const origin = getTestOrigin();
const originalConsole = globalThis.console;

Expand Down

0 comments on commit 7036327

Please sign in to comment.