Files
openclaw/test/scripts/changed-path-facts.test.ts
T
Peter Steinberger f6fff4f7fd refactor: canonicalize aliases and classify test suites (#122407)
* refactor: use canonical re-export names

* fix(test): classify suite support as test source

* fix(agents): retarget gateway stub session-entry import

* test(gateway): retarget session-utils mock keys after alias removal
2026-08-11 21:18:34 -07:00

69 lines
2.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
getChangedPathFacts,
normalizeChangedPath,
} from "../../scripts/lib/changed-path-facts.mjs";
describe("changed path facts", () => {
it("preserves the existing surface classifications", () => {
const cases = [
["docs/ci.md", "docs"],
["README.md", "docs"],
["src/config/defaults.ts", "source"],
["packages/gateway-client/src/client.ts", "package"],
["extensions/slack/src/index.ts", "extension"],
["ui/src/app.ts", "ui"],
["apps/macos/Sources/OpenClaw/AppDelegate.swift", "app"],
["test/scripts/changed-lanes.test.ts", "rootTest"],
["test-fixtures/sample.ts", "testFixture"],
["scripts/check-changed.mjs", "rootTooling"],
[".github/workflows/ci.yml", "rootTooling"],
["package.json", "rootGlobal"],
["assets/legacy.png", "legacyRootAsset"],
[".crabbox.yaml", "unknown"],
] as const;
for (const [changedPath, surface] of cases) {
expect(getChangedPathFacts(changedPath).surface, changedPath).toBe(surface);
}
});
it("preserves test and native-only predicates independently from surfaces", () => {
expect(getChangedPathFacts("extensions/slack/src/index.test-support.ts")).toMatchObject({
surface: "extension",
isChangedLaneTest: true,
isTestOnly: true,
isNativeOnly: false,
});
expect(getChangedPathFacts("test/helpers/fixture.ts")).toMatchObject({
surface: "rootTest",
isChangedLaneTest: true,
isTestOnly: true,
isNativeOnly: false,
});
expect(getChangedPathFacts("src/gateway/server.auth.control-ui.suite.ts")).toMatchObject({
surface: "source",
isChangedLaneTest: true,
isTestOnly: true,
isNativeOnly: false,
});
expect(getChangedPathFacts("apps/shared/OpenClawKit/Sources/Foo.swift")).toMatchObject({
surface: "app",
isChangedLaneTest: false,
isTestOnly: false,
isNativeOnly: true,
});
expect(getChangedPathFacts("apps/web/index.ts")).toMatchObject({
surface: "app",
isNativeOnly: false,
});
});
it("keeps normalization separate from classification", () => {
expect(normalizeChangedPath(" .\\extensions\\slack\\src\\index.test.ts ")).toBe(
"extensions/slack/src/index.test.ts",
);
expect(getChangedPathFacts("./src/config/defaults.ts").surface).toBe("unknown");
});
});