refactor(test): derive changed-test routes from canonical owners (#117099)

* refactor(test): derive changed-test routes from canonical owners

* fix(test): type workflow owner descriptors for lint
This commit is contained in:
Peter Steinberger
2026-07-31 16:40:46 -07:00
committed by GitHub
parent 83e0be6efe
commit 2fcb47ad1e
5 changed files with 462 additions and 1097 deletions
File diff suppressed because it is too large Load Diff
+21
View File
@@ -1708,6 +1708,7 @@ describe("scripts/test-projects changed-target routing", () => {
it("routes script declaration edits through implementation owner tests", () => {
const declarationMirrors = new Map([
["scripts/check.d.mts", "scripts/check.mjs"],
["scripts/build-stamp.d.mts", "scripts/build-stamp.mjs"],
["scripts/ci-changed-scope.d.mts", "scripts/ci-changed-scope.mjs"],
["scripts/copy-bundled-plugin-metadata.d.mts", "scripts/copy-bundled-plugin-metadata.mjs"],
@@ -1717,6 +1718,7 @@ describe("scripts/test-projects changed-target routing", () => {
"scripts/lib/bundled-plugin-build-entries.mjs",
],
["scripts/lib/config-boundary-guard.d.mts", "scripts/lib/config-boundary-guard.mjs"],
["scripts/lib/arg-utils.d.mts", "scripts/lib/arg-utils.mjs"],
[
"scripts/lib/deprecated-config-api-guard.d.mts",
"scripts/lib/deprecated-config-api-guard.mjs",
@@ -1744,6 +1746,25 @@ describe("scripts/test-projects changed-target routing", () => {
}
});
it("routes shared contract ownership and declarations through every affected lane", () => {
const targets = [
"test/scripts/test-projects.test.ts",
"test/vitest/vitest.contracts-channel-surface.config.ts",
"test/vitest/vitest.contracts-channel-config.config.ts",
"test/vitest/vitest.contracts-channel-registry.config.ts",
"test/vitest/vitest.contracts-channel-session.config.ts",
];
for (const changedPath of [
"test/vitest/vitest.contracts-paths.mjs",
"test/vitest/vitest.contracts-paths.d.mts",
]) {
expect(resolveChangedTestTargetPlan([changedPath]), changedPath).toEqual({
mode: "targets",
targets,
});
}
});
it("keeps QA Lab gateway smoke script edits on QA e2e tests", () => {
expect(resolveChangedTestTargetPlan(["scripts/dev/gateway-smoke.ts"])).toEqual({
mode: "targets",
+4
View File
@@ -0,0 +1,4 @@
export const channelSurfaceContractPatterns: string[];
export const channelConfigContractPatterns: string[];
export const channelRegistryContractPatterns: string[];
export const channelSessionContractPatterns: string[];
+38
View File
@@ -0,0 +1,38 @@
// Loader-free contract ownership shared by Vitest configs and changed-test routing.
export const channelSurfaceContractPatterns = [
"src/channels/plugins/contracts/channel-catalog.contract.test.ts",
"src/channels/plugins/contracts/channel-import-guardrails.test.ts",
"src/channels/plugins/contracts/group-policy.fallback.contract.test.ts",
"src/channels/plugins/contracts/message-tool-artifact.contract.test.ts",
"src/channels/plugins/contracts/outbound-payload.contract.test.ts",
"src/channels/plugins/contracts/*-shard-a.contract.test.ts",
"src/channels/plugins/contracts/*-shard-e.contract.test.ts",
];
export const channelConfigContractPatterns = [
"src/channels/plugins/contracts/gateway-auth-artifact.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.authorize-config-write.policy.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.authorize-config-write.targets.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.catalog.entries.contract.test.ts",
"src/channels/plugins/contracts/*-shard-b.contract.test.ts",
"src/channels/plugins/contracts/*-shard-f.contract.test.ts",
];
export const channelRegistryContractPatterns = [
"src/channels/plugins/contracts/plugin-shape.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.catalog.paths.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.loader.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.registry.contract.test.ts",
"src/channels/plugins/contracts/*-shard-c.contract.test.ts",
"src/channels/plugins/contracts/*-shard-g.contract.test.ts",
];
export const channelSessionContractPatterns = [
"src/channels/plugins/contracts/plugins-core.resolve-config-writes.contract.test.ts",
"src/channels/plugins/contracts/registry.contract.test.ts",
"src/channels/plugins/contracts/session-binding.registry-backed.contract.test.ts",
"src/channels/plugins/contracts/session-key-artifact.contract.test.ts",
"src/channels/plugins/contracts/thread-binding-artifact.contract.test.ts",
"src/channels/plugins/contracts/*-shard-d.contract.test.ts",
"src/channels/plugins/contracts/*-shard-h.contract.test.ts",
];
+13 -38
View File
@@ -1,5 +1,11 @@
// Vitest contract shared helpers build contract test project configuration.
import { defineConfig } from "vitest/config";
import {
channelConfigContractPatterns,
channelRegistryContractPatterns,
channelSessionContractPatterns,
channelSurfaceContractPatterns,
} from "./vitest.contracts-paths.mjs";
import {
intersectIncludePatterns,
loadPatternListFromEnv,
@@ -7,47 +13,16 @@ import {
} from "./vitest.pattern-file.ts";
import { nonIsolatedRunnerPath, sharedVitestConfig } from "./vitest.shared.config.ts";
export {
channelConfigContractPatterns,
channelRegistryContractPatterns,
channelSessionContractPatterns,
channelSurfaceContractPatterns,
};
const base = sharedVitestConfig as Record<string, unknown>;
const baseTest = sharedVitestConfig.test ?? {};
export const channelSurfaceContractPatterns = [
"src/channels/plugins/contracts/channel-catalog.contract.test.ts",
"src/channels/plugins/contracts/channel-import-guardrails.test.ts",
"src/channels/plugins/contracts/group-policy.fallback.contract.test.ts",
"src/channels/plugins/contracts/message-tool-artifact.contract.test.ts",
"src/channels/plugins/contracts/outbound-payload.contract.test.ts",
"src/channels/plugins/contracts/*-shard-a.contract.test.ts",
"src/channels/plugins/contracts/*-shard-e.contract.test.ts",
];
export const channelConfigContractPatterns = [
"src/channels/plugins/contracts/gateway-auth-artifact.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.authorize-config-write.policy.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.authorize-config-write.targets.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.catalog.entries.contract.test.ts",
"src/channels/plugins/contracts/*-shard-b.contract.test.ts",
"src/channels/plugins/contracts/*-shard-f.contract.test.ts",
];
export const channelRegistryContractPatterns = [
"src/channels/plugins/contracts/plugin-shape.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.catalog.paths.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.loader.contract.test.ts",
"src/channels/plugins/contracts/plugins-core.registry.contract.test.ts",
"src/channels/plugins/contracts/*-shard-c.contract.test.ts",
"src/channels/plugins/contracts/*-shard-g.contract.test.ts",
];
export const channelSessionContractPatterns = [
"src/channels/plugins/contracts/plugins-core.resolve-config-writes.contract.test.ts",
"src/channels/plugins/contracts/registry.contract.test.ts",
"src/channels/plugins/contracts/session-binding.registry-backed.contract.test.ts",
"src/channels/plugins/contracts/session-key-artifact.contract.test.ts",
"src/channels/plugins/contracts/thread-binding-artifact.contract.test.ts",
"src/channels/plugins/contracts/*-shard-d.contract.test.ts",
"src/channels/plugins/contracts/*-shard-h.contract.test.ts",
];
export const pluginContractPatterns = ["src/plugins/contracts/**/*.test.ts"];
function loadContractsIncludePatternsFromEnv(