fix: reject empty removal fixture scans
This commit is contained in:
@@ -6,7 +6,10 @@ import { afterEach, expect, it } from "vitest";
|
||||
|
||||
import { loadCiGateContract } from "../../scripts/contracts/ci-gates.ts";
|
||||
import {
|
||||
assertNoRuntimeImports,
|
||||
pruneRemovalFixtureCiContract,
|
||||
removeRuntimeDependentTests,
|
||||
runtimeImportGraph,
|
||||
} from "../../scripts/lib/removal-fixture.ts";
|
||||
|
||||
const temporaryRoots: string[] = [];
|
||||
@@ -17,6 +20,39 @@ afterEach(async () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("rejects an empty scanned module universe", async () => {
|
||||
const root = await mkdtemp(path.join(tmpdir(), "removal-fixture-empty-modules-"));
|
||||
temporaryRoots.push(root);
|
||||
|
||||
await expect(runtimeImportGraph(root, ["src/runtime"])).rejects.toThrow(
|
||||
/scanned module universe is empty/i,
|
||||
);
|
||||
});
|
||||
|
||||
it("rejects a runtime removal scan that discovers no dependent tests", async () => {
|
||||
const root = await mkdtemp(path.join(tmpdir(), "removal-fixture-zero-dependent-tests-"));
|
||||
temporaryRoots.push(root);
|
||||
await mkdir(path.join(root, "src/runtime"), { recursive: true });
|
||||
await mkdir(path.join(root, "tests"), { recursive: true });
|
||||
await writeFile(path.join(root, "src/runtime/index.ts"), "export const runtime = true;\n");
|
||||
await writeFile(path.join(root, "tests/unrelated.test.ts"), "export const unrelated = true;\n");
|
||||
|
||||
await expect(removeRuntimeDependentTests(root, ["src/runtime"])).rejects.toThrow(
|
||||
/no runtime-dependent tests discovered/i,
|
||||
);
|
||||
});
|
||||
|
||||
it("allows zero runtime imports after the runtime has been removed", async () => {
|
||||
const root = await mkdtemp(path.join(tmpdir(), "removal-fixture-post-removal-"));
|
||||
temporaryRoots.push(root);
|
||||
await mkdir(path.join(root, "tests"), { recursive: true });
|
||||
await writeFile(path.join(root, "tests/unrelated.test.ts"), "export const unrelated = true;\n");
|
||||
|
||||
await expect(
|
||||
assertNoRuntimeImports(root, ["src/runtime"], "fixture runtime"),
|
||||
).resolves.toBeUndefined();
|
||||
});
|
||||
|
||||
it("prunes removed command and evidence references from a reduced CI contract", async () => {
|
||||
const root = await mkdtemp(path.join(tmpdir(), "removal-fixture-contract-"));
|
||||
temporaryRoots.push(root);
|
||||
|
||||
Reference in New Issue
Block a user