deno/tests/testdata/test/load_unload.ts
Matt Mastracci b6e44f91ad
fix(cli): ensure that pre- and post-test output is flushed at the appropriate times (#22611)
Some `deno_std` tests were failing to print output that was resolved
after the last test finished. In addition, output printed before tests
began would sometimes appear above the "running X tests ..." line, and
sometimes below it depending on timing.

We now guarantee that all output is flushed before and after tests run,
making the output consistent.

Pre-test and post-test output are captured in `------ pre-test output
------` and `------ post-test output ------` blocks to differentiate
them from the regular output blocks.

Here's an example of a test (that is much noisier than normal, but an
example of what the output will look like):

```
Check ./load_unload.ts
------- pre-test output -------
load
----- output end -----
running 1 test from ./load_unload.ts
test ...
------- output -------
test
----- output end -----
test ... ok ([WILDCARD])
------- post-test output -------
unload
----- output end -----
```
2024-02-28 22:12:21 +00:00

26 lines
489 B
TypeScript

let interval: number | null = null;
addEventListener("load", () => {
if (interval) {
throw new Error("Interval is already set");
}
console.log("load");
interval = setInterval(() => {}, 0);
});
addEventListener("unload", () => {
if (!interval) {
throw new Error("Interval was not set");
}
console.log("unload");
clearInterval(interval);
});
Deno.test("test", () => {
console.log("test");
if (!interval) {
throw new Error("Interval was not set");
}
});