From 6e99b8dadbcc2b2f46c4261a3214ffc08ed9dc50 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 25 Jun 2021 16:36:25 -0700 Subject: [PATCH 1/2] Forbid duplicate tests only in compiler runner Not in fourslash, user, docker, etc. --- src/testRunner/runner.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/testRunner/runner.ts b/src/testRunner/runner.ts index 0c5561332d656..35220f12f9fb5 100644 --- a/src/testRunner/runner.ts +++ b/src/testRunner/runner.ts @@ -9,15 +9,16 @@ namespace Harness { const seen = new Map(); const dupes: [string, string][] = []; for (const runner of runners) { - for (const sf of runner.enumerateTestFiles()) { - const full = typeof sf === "string" ? sf : sf.file; - const base = vpath.basename(full).toLowerCase(); - // exempt fourslash-fourslash conflicts since they're less likely to emit baselines - if (seen.has(base) && !(/fourslash/.test(seen.get(base)!) && /fourslash/.test(full))) { - dupes.push([seen.get(base)!, full]); - } - else { - seen.set(base, full); + if (runner instanceof CompilerBaselineRunner) { + for (const sf of runner.enumerateTestFiles()) { + const full = typeof sf === "string" ? sf : sf.file; + const base = vpath.basename(full).toLowerCase(); + if (seen.has(base)) { + dupes.push([seen.get(base)!, full]); + } + else { + seen.set(base, full); + } } } runner.initializeTests(); From 3a69eba631fefc2f084b441ca69a83991adb9280 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Fri, 25 Jun 2021 16:55:47 -0700 Subject: [PATCH 2/2] Include fourslash, but exempt shims and server --- src/testRunner/runner.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/testRunner/runner.ts b/src/testRunner/runner.ts index 35220f12f9fb5..4427390d7f398 100644 --- a/src/testRunner/runner.ts +++ b/src/testRunner/runner.ts @@ -9,11 +9,12 @@ namespace Harness { const seen = new Map(); const dupes: [string, string][] = []; for (const runner of runners) { - if (runner instanceof CompilerBaselineRunner) { + if (runner instanceof CompilerBaselineRunner || runner instanceof FourSlashRunner) { for (const sf of runner.enumerateTestFiles()) { const full = typeof sf === "string" ? sf : sf.file; const base = vpath.basename(full).toLowerCase(); - if (seen.has(base)) { + // allow existing dupes in fourslash/shims and fourslash/server + if (seen.has(base) && !/fourslash\/(shim|server)/.test(full)) { dupes.push([seen.get(base)!, full]); } else {