



















@@ -143,6 +143,7 @@ describe("watch-node script", () => {
143143OPENCLAW_WATCH_MODE: "1",
144144OPENCLAW_WATCH_SESSION: "1700000000000-4242",
145145OPENCLAW_NO_RESPAWN: "1",
146+OPENCLAW_TRACE_SYNC_IO: "1",
146147OPENCLAW_WATCH_COMMAND: "gateway --force",
147148}),
148149}),
@@ -155,6 +156,35 @@ describe("watch-node script", () => {
155156});
156157});
157158159+it("preserves explicit sync I/O trace overrides for gateway watch", async () => {
160+const { child, spawn, createWatcher, fakeProcess } = createWatchHarness();
161+await withTempDir({ prefix: "openclaw-watch-node-" }, async (cwd) => {
162+const runPromise = runWatch({
163+args: ["gateway", "--force"],
164+ cwd,
165+ createWatcher,
166+env: { OPENCLAW_TRACE_SYNC_IO: "0" },
167+lockDisabled: true,
168+process: fakeProcess,
169+ spawn,
170+});
171+172+expect(spawn).toHaveBeenCalledWith(
173+"/usr/local/bin/node",
174+["scripts/run-node.mjs", "gateway", "--force"],
175+expect.objectContaining({
176+env: expect.objectContaining({
177+OPENCLAW_TRACE_SYNC_IO: "0",
178+}),
179+}),
180+);
181+182+fakeProcess.emit("SIGINT");
183+await runPromise;
184+expect(child.kill).toHaveBeenCalledWith("SIGTERM");
185+});
186+});
187+158188it("starts the runner before loading chokidar", async () => {
159189const child = Object.assign(new EventEmitter(), {
160190kill: vi.fn(() => {}),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。