From 732ed2b7dfaf9b32b45a63da404e9cde30d4263a Mon Sep 17 00:00:00 2001 From: Dariush Alipour Date: Mon, 22 Jul 2024 22:25:42 +0200 Subject: [PATCH] Fix: test coverage node_modules exclusion in Windows (#12691) --- src/cli/test_command.zig | 2 +- test/cli/test/coverage.test.ts | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/cli/test_command.zig b/src/cli/test_command.zig index ebf9ef5b06..86e04c4ddb 100644 --- a/src/cli/test_command.zig +++ b/src/cli/test_command.zig @@ -598,7 +598,7 @@ const Scanner = struct { }; // always ignore node_modules. - if (strings.contains(slice, "/" ++ "node_modules" ++ "/")) { + if (strings.contains(slice, "/node_modules/") or strings.contains(slice, "\\node_modules\\")) { return false; } diff --git a/test/cli/test/coverage.test.ts b/test/cli/test/coverage.test.ts index d5bb7bdb7a..c598cc7269 100644 --- a/test/cli/test/coverage.test.ts +++ b/test/cli/test/coverage.test.ts @@ -54,3 +54,26 @@ export class Y { expect(result.signalCode).toBeUndefined(); expect(readFileSync(path.join(dir, "coverage", "lcov.info"), "utf-8")).toMatchSnapshot(); }); + +test("coverage excludes node_modules directory", () => { + const dir = tempDirWithFiles("cov", { + "node_modules/pi/index.js": ` + export const pi = 3.14; + `, + "demo.test.ts": ` + import { pi } from 'pi'; + console.log(pi); + `, + }); + const result = Bun.spawnSync([bunExe(), "test", "--coverage"], { + cwd: dir, + env: { + ...bunEnv, + }, + stdio: [null, null, "pipe"], + }); + expect(result.stderr.toString("utf-8")).toContain("demo.test.ts"); + expect(result.stderr.toString("utf-8")).not.toContain("node_modules"); + expect(result.exitCode).toBe(0); + expect(result.signalCode).toBeUndefined(); +});