diff --git a/testing/mod.ts b/testing/mod.ts index d1ddb9c8ce7b..51fa62cea60f 100644 --- a/testing/mod.ts +++ b/testing/mod.ts @@ -69,8 +69,29 @@ function print(txt: string, newline: boolean = true): void { Deno.stdout.writeSync(encoder.encode(`${txt}`)); } +declare global { + interface Window { + /** + * A global property to collect all registered test cases. + * + * It is required because user's code can import multiple versions + * of `testing` module. + * + * If test cases aren't registered in a globally shared + * object, then imports from different versions would register test cases + * to registry from it's respective version of `testing` module. + */ + __DENO_TEST_REGISTRY: TestDefinition[]; + } +} + +let candidates: TestDefinition[] = []; +if (window["__DENO_TEST_REGISTRY"]) { + candidates = window.__DENO_TEST_REGISTRY as TestDefinition[]; +} else { + window["__DENO_TEST_REGISTRY"] = candidates; +} let filterRegExp: RegExp | null; -const candidates: TestDefinition[] = []; let filtered = 0; // Must be called before any test() that needs to be filtered.