diff --git a/src/cli/program/preaction.test.ts b/src/cli/program/preaction.test.ts index 9f2f540dd3d..306fd4c1fb5 100644 --- a/src/cli/program/preaction.test.ts +++ b/src/cli/program/preaction.test.ts @@ -57,6 +57,8 @@ const mockedModuleIds = [ let registerPreActionHooks: typeof import("./preaction.js").registerPreActionHooks; let originalProcessArgv: string[]; let originalProcessTitle: string; +let originalProcessTitleDescriptor: PropertyDescriptor | undefined; +let observedProcessTitle: string; let originalNodeNoWarnings: string | undefined; let originalHideBanner: string | undefined; let originalForceStderr: boolean; @@ -76,9 +78,19 @@ beforeEach(() => { vi.clearAllMocks(); originalProcessArgv = [...process.argv]; originalProcessTitle = process.title; + originalProcessTitleDescriptor = Object.getOwnPropertyDescriptor(process, "title"); + observedProcessTitle = originalProcessTitle; originalNodeNoWarnings = process.env.NODE_NO_WARNINGS; originalHideBanner = process.env.OPENCLAW_HIDE_BANNER; originalForceStderr = loggingState.forceConsoleToStderr; + Object.defineProperty(process, "title", { + configurable: true, + enumerable: originalProcessTitleDescriptor?.enumerable ?? true, + get: () => observedProcessTitle, + set: (value: string) => { + observedProcessTitle = value; + }, + }); loggingState.forceConsoleToStderr = false; delete process.env.NODE_NO_WARNINGS; delete process.env.OPENCLAW_HIDE_BANNER; @@ -86,7 +98,16 @@ beforeEach(() => { afterEach(() => { process.argv = originalProcessArgv; - process.title = originalProcessTitle; + if (originalProcessTitleDescriptor && "value" in originalProcessTitleDescriptor) { + Object.defineProperty(process, "title", { + ...originalProcessTitleDescriptor, + value: originalProcessTitle, + }); + } else if (originalProcessTitleDescriptor) { + Object.defineProperty(process, "title", originalProcessTitleDescriptor); + } else { + process.title = originalProcessTitle; + } loggingState.forceConsoleToStderr = originalForceStderr; if (originalNodeNoWarnings === undefined) { delete process.env.NODE_NO_WARNINGS;