mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 05:51:15 +08:00
test: expose changed fallback skip metadata
This commit is contained in:
@@ -20,6 +20,12 @@ export type ChangedTestTargetOptions = {
|
||||
broad?: boolean;
|
||||
};
|
||||
|
||||
export type ChangedTestTargetPlan = {
|
||||
mode: "none" | "broad" | "targets";
|
||||
targets: string[];
|
||||
skippedBroadFallbackPaths?: string[];
|
||||
};
|
||||
|
||||
export const DEFAULT_TEST_PROJECTS_VITEST_NO_OUTPUT_TIMEOUT_MS: string;
|
||||
export const DEFAULT_TEST_PROJECTS_VITEST_NO_OUTPUT_HEARTBEAT_MS: string;
|
||||
|
||||
@@ -49,10 +55,14 @@ export function resolveChangedTargetArgs(
|
||||
export function resolveChangedTestTargetPlan(
|
||||
changedPaths: string[],
|
||||
options?: ChangedTestTargetOptions,
|
||||
): {
|
||||
mode: "none" | "broad" | "targets";
|
||||
targets: string[];
|
||||
};
|
||||
): ChangedTestTargetPlan;
|
||||
|
||||
export function resolveChangedTestTargetPlanForArgs(
|
||||
args: string[],
|
||||
cwd?: string,
|
||||
listChangedPaths?: (baseRef: string, cwd: string) => string[],
|
||||
options?: ChangedTestTargetOptions,
|
||||
): ChangedTestTargetPlan | null;
|
||||
|
||||
export function listFullExtensionVitestProjectConfigs(): string[];
|
||||
|
||||
|
||||
@@ -1789,6 +1789,7 @@ export function resolveChangedTestTargetPlan(changedPaths, options = {}) {
|
||||
const useBroadFallback = options.broad ?? shouldUseBroadChangedTargets(env);
|
||||
const skipImportGraph = changedLanes.lanes.all && !useBroadFallback;
|
||||
const targets = [];
|
||||
const skippedBroadFallbackPaths = [];
|
||||
for (const changedPath of changedPaths) {
|
||||
const preciseTargets = resolvePreciseChangedTestTargets(changedPath, {
|
||||
...options,
|
||||
@@ -1803,6 +1804,7 @@ export function resolveChangedTestTargetPlan(changedPaths, options = {}) {
|
||||
if (useBroadFallback) {
|
||||
return { mode: "broad", targets: [] };
|
||||
}
|
||||
skippedBroadFallbackPaths.push(changedPath);
|
||||
continue;
|
||||
}
|
||||
if (isRoutableChangedTarget(changedPath)) {
|
||||
@@ -1812,7 +1814,11 @@ export function resolveChangedTestTargetPlan(changedPaths, options = {}) {
|
||||
if (useBroadFallback && changedLanes.extensionImpactFromCore) {
|
||||
targets.push("extensions");
|
||||
}
|
||||
return { mode: "targets", targets: [...new Set(targets)] };
|
||||
const plan = { mode: "targets", targets: [...new Set(targets)] };
|
||||
if (skippedBroadFallbackPaths.length > 0) {
|
||||
plan.skippedBroadFallbackPaths = [...new Set(skippedBroadFallbackPaths)];
|
||||
}
|
||||
return plan;
|
||||
}
|
||||
|
||||
export function listFullExtensionVitestProjectConfigs() {
|
||||
@@ -1827,20 +1833,32 @@ export function resolveChangedTargetArgs(
|
||||
cwd = process.cwd(),
|
||||
listChangedPaths = listChangedPathsFromGit,
|
||||
options = {},
|
||||
) {
|
||||
const plan = resolveChangedTestTargetPlanForArgs(args, cwd, listChangedPaths, options);
|
||||
if (!plan) {
|
||||
return null;
|
||||
}
|
||||
if (plan.mode === "broad") {
|
||||
return null;
|
||||
}
|
||||
return plan.targets;
|
||||
}
|
||||
|
||||
export function resolveChangedTestTargetPlanForArgs(
|
||||
args,
|
||||
cwd = process.cwd(),
|
||||
listChangedPaths = listChangedPathsFromGit,
|
||||
options = {},
|
||||
) {
|
||||
const baseRef = extractChangedBaseRef(args);
|
||||
if (!baseRef) {
|
||||
return null;
|
||||
}
|
||||
const changedPaths = listChangedPaths(baseRef, cwd);
|
||||
const plan = resolveChangedTestTargetPlan(changedPaths, {
|
||||
return resolveChangedTestTargetPlan(changedPaths, {
|
||||
cwd,
|
||||
...options,
|
||||
});
|
||||
if (plan.mode === "broad") {
|
||||
return null;
|
||||
}
|
||||
return plan.targets;
|
||||
}
|
||||
|
||||
function classifyTarget(arg, cwd) {
|
||||
|
||||
@@ -18,6 +18,7 @@ import {
|
||||
listFullExtensionVitestProjectConfigs,
|
||||
orderFullSuiteSpecsForParallelRun,
|
||||
shouldAcquireLocalHeavyCheckLock,
|
||||
resolveChangedTestTargetPlanForArgs,
|
||||
resolveChangedTestTargetPlan,
|
||||
resolveChangedTargetArgs,
|
||||
resolveParallelFullSuiteConcurrency,
|
||||
@@ -198,6 +199,19 @@ describe("scripts/test-projects changed-target routing", () => {
|
||||
).toEqual(["src/utils/provider-utils.test.ts"]);
|
||||
});
|
||||
|
||||
it("records broad fallback paths skipped by focused changed mode", () => {
|
||||
expect(
|
||||
resolveChangedTestTargetPlan([
|
||||
"test/vitest/vitest.shared.config.ts",
|
||||
"src/utils/provider-utils.ts",
|
||||
]),
|
||||
).toEqual({
|
||||
mode: "targets",
|
||||
skippedBroadFallbackPaths: ["test/vitest/vitest.shared.config.ts"],
|
||||
targets: ["src/utils/provider-utils.test.ts"],
|
||||
});
|
||||
});
|
||||
|
||||
it("keeps the broad changed run available for Vitest wiring edits", () => {
|
||||
expect(
|
||||
resolveChangedTargetArgs(
|
||||
@@ -1136,6 +1150,18 @@ describe("scripts/test-projects changed-target routing", () => {
|
||||
).toStrictEqual([]);
|
||||
});
|
||||
|
||||
it("keeps unknown root surface skip reasons available to changed-mode callers", () => {
|
||||
expect(
|
||||
resolveChangedTestTargetPlanForArgs(["--changed", "origin/main"], process.cwd(), () => [
|
||||
"unknown/file.txt",
|
||||
]),
|
||||
).toEqual({
|
||||
mode: "targets",
|
||||
skippedBroadFallbackPaths: ["unknown/file.txt"],
|
||||
targets: [],
|
||||
});
|
||||
});
|
||||
|
||||
it("keeps the broad changed run available for unknown root surfaces", () => {
|
||||
expect(
|
||||
resolveChangedTargetArgs(
|
||||
@@ -1690,6 +1716,7 @@ describe("scripts/test-projects changed-target routing", () => {
|
||||
it("keeps changed mode to precise targets by default", () => {
|
||||
expect(resolveChangedTestTargetPlan(["package.json", "src/commands/channels.add.ts"])).toEqual({
|
||||
mode: "targets",
|
||||
skippedBroadFallbackPaths: ["package.json"],
|
||||
targets: ["src/commands/channels.add.test.ts"],
|
||||
});
|
||||
});
|
||||
@@ -1709,6 +1736,7 @@ describe("scripts/test-projects changed-target routing", () => {
|
||||
|
||||
expect(plan).toEqual({
|
||||
mode: "targets",
|
||||
skippedBroadFallbackPaths: ["src/gateway/server.impl.ts"],
|
||||
targets: ["test/scripts/package-acceptance-workflow.test.ts", "test/scripts/check.test.ts"],
|
||||
});
|
||||
expect(repoSourceReads).toEqual([]);
|
||||
|
||||
Reference in New Issue
Block a user