Ignore test-only paths in dev restart tracking
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
parent
eac3f3fa69
commit
75c7eb3868
3 changed files with 57 additions and 0 deletions
35
scripts/dev-runner-paths.mjs
Normal file
35
scripts/dev-runner-paths.mjs
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
const testDirectoryNames = new Set([
|
||||||
|
"__tests__",
|
||||||
|
"_tests",
|
||||||
|
"test",
|
||||||
|
"tests",
|
||||||
|
]);
|
||||||
|
|
||||||
|
const ignoredTestConfigBasenames = new Set([
|
||||||
|
"jest.config.cjs",
|
||||||
|
"jest.config.js",
|
||||||
|
"jest.config.mjs",
|
||||||
|
"jest.config.ts",
|
||||||
|
"playwright.config.ts",
|
||||||
|
"vitest.config.ts",
|
||||||
|
]);
|
||||||
|
|
||||||
|
export function shouldTrackDevServerPath(relativePath) {
|
||||||
|
const normalizedPath = String(relativePath).replaceAll("\\", "/").replace(/^\.\/+/, "");
|
||||||
|
if (normalizedPath.length === 0) return false;
|
||||||
|
|
||||||
|
const segments = normalizedPath.split("/");
|
||||||
|
const basename = segments.at(-1) ?? normalizedPath;
|
||||||
|
|
||||||
|
if (ignoredTestConfigBasenames.has(basename)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (segments.some((segment) => testDirectoryNames.has(segment))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (/\.(test|spec)\.[^/]+$/i.test(basename)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
@ -5,6 +5,7 @@ import path from "node:path";
|
||||||
import { createInterface } from "node:readline/promises";
|
import { createInterface } from "node:readline/promises";
|
||||||
import { stdin, stdout } from "node:process";
|
import { stdin, stdout } from "node:process";
|
||||||
import { fileURLToPath } from "node:url";
|
import { fileURLToPath } from "node:url";
|
||||||
|
import { shouldTrackDevServerPath } from "./dev-runner-paths.mjs";
|
||||||
|
|
||||||
const mode = process.argv[2] === "watch" ? "watch" : "dev";
|
const mode = process.argv[2] === "watch" ? "watch" : "dev";
|
||||||
const cliArgs = process.argv.slice(3);
|
const cliArgs = process.argv.slice(3);
|
||||||
|
|
@ -164,6 +165,7 @@ function readSignature(absolutePath) {
|
||||||
function addFileToSnapshot(snapshot, absolutePath) {
|
function addFileToSnapshot(snapshot, absolutePath) {
|
||||||
const relativePath = toRelativePath(absolutePath);
|
const relativePath = toRelativePath(absolutePath);
|
||||||
if (ignoredRelativePaths.has(relativePath)) return;
|
if (ignoredRelativePaths.has(relativePath)) return;
|
||||||
|
if (!shouldTrackDevServerPath(relativePath)) return;
|
||||||
snapshot.set(relativePath, readSignature(absolutePath));
|
snapshot.set(relativePath, readSignature(absolutePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
20
server/src/__tests__/dev-runner-paths.test.ts
Normal file
20
server/src/__tests__/dev-runner-paths.test.ts
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
import { shouldTrackDevServerPath } from "../../../scripts/dev-runner-paths.mjs";
|
||||||
|
|
||||||
|
describe("shouldTrackDevServerPath", () => {
|
||||||
|
it("ignores common test file paths", () => {
|
||||||
|
expect(shouldTrackDevServerPath("server/src/__tests__/health.test.ts")).toBe(false);
|
||||||
|
expect(shouldTrackDevServerPath("packages/shared/src/lib/foo.test.ts")).toBe(false);
|
||||||
|
expect(shouldTrackDevServerPath("packages/shared/src/lib/foo.spec.tsx")).toBe(false);
|
||||||
|
expect(shouldTrackDevServerPath("packages/shared/_tests/helpers.ts")).toBe(false);
|
||||||
|
expect(shouldTrackDevServerPath("packages/shared/tests/helpers.ts")).toBe(false);
|
||||||
|
expect(shouldTrackDevServerPath("packages/shared/test/helpers.ts")).toBe(false);
|
||||||
|
expect(shouldTrackDevServerPath("vitest.config.ts")).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("keeps runtime paths restart-relevant", () => {
|
||||||
|
expect(shouldTrackDevServerPath("server/src/routes/health.ts")).toBe(true);
|
||||||
|
expect(shouldTrackDevServerPath("packages/shared/src/index.ts")).toBe(true);
|
||||||
|
expect(shouldTrackDevServerPath("server/src/testing/runtime.ts")).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
Add table
Reference in a new issue