




























@@ -1,5 +1,5 @@
11import { execFileSync } from "node:child_process";
2-import { mkdirSync, writeFileSync } from "node:fs";
2+import { mkdirSync, unlinkSync, writeFileSync } from "node:fs";
33import path from "node:path";
44import { afterEach, describe, expect, it } from "vitest";
55import {
@@ -83,6 +83,85 @@ describe("scripts/changed-lanes", () => {
8383});
8484});
858586+it("includes deleted worktree files in the default local diff", () => {
87+const dir = makeTempRepoRoot(tempDirs, "openclaw-changed-lanes-deleted-");
88+git(dir, ["init", "-q", "--initial-branch=main"]);
89+mkdirSync(path.join(dir, "src", "shared"), { recursive: true });
90+writeFileSync(
91+path.join(dir, "src", "shared", "obsolete.ts"),
92+"export const value = 1;\n",
93+"utf8",
94+);
95+git(dir, ["add", "src/shared/obsolete.ts"]);
96+git(dir, [
97+"-c",
98+"user.email=test@example.com",
99+"-c",
100+"user.name=Test User",
101+"commit",
102+"-q",
103+"-m",
104+"initial",
105+]);
106+107+unlinkSync(path.join(dir, "src", "shared", "obsolete.ts"));
108+109+const output = execFileSync(
110+process.execPath,
111+[path.join(repoRoot, "scripts", "changed-lanes.mjs"), "--json", "--base", "HEAD"],
112+{
113+cwd: dir,
114+encoding: "utf8",
115+env: createNestedGitEnv(),
116+},
117+);
118+119+expect(JSON.parse(output)).toMatchObject({
120+paths: ["src/shared/obsolete.ts"],
121+lanes: { core: true, coreTests: true },
122+});
123+});
124+125+it("includes deleted staged files in the staged diff", () => {
126+const dir = makeTempRepoRoot(tempDirs, "openclaw-changed-lanes-staged-deleted-");
127+git(dir, ["init", "-q", "--initial-branch=main"]);
128+mkdirSync(path.join(dir, "src", "shared"), { recursive: true });
129+writeFileSync(
130+path.join(dir, "src", "shared", "obsolete.ts"),
131+"export const value = 1;\n",
132+"utf8",
133+);
134+git(dir, ["add", "src/shared/obsolete.ts"]);
135+git(dir, [
136+"-c",
137+"user.email=test@example.com",
138+"-c",
139+"user.name=Test User",
140+"commit",
141+"-q",
142+"-m",
143+"initial",
144+]);
145+146+unlinkSync(path.join(dir, "src", "shared", "obsolete.ts"));
147+git(dir, ["add", "src/shared/obsolete.ts"]);
148+149+const output = execFileSync(
150+process.execPath,
151+[path.join(repoRoot, "scripts", "changed-lanes.mjs"), "--json", "--staged"],
152+{
153+cwd: dir,
154+encoding: "utf8",
155+env: createNestedGitEnv(),
156+},
157+);
158+159+expect(JSON.parse(output)).toMatchObject({
160+paths: ["src/shared/obsolete.ts"],
161+lanes: { core: true, coreTests: true },
162+});
163+});
164+86165it("ignores the explicit path separator", () => {
87166const result = detectChangedLanes(["--", "scripts/test-live-acp-bind-docker.sh"]);
88167此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。