

















@@ -30,6 +30,20 @@ function base64(script: string): string {
3030return execFileSync("base64", { input: script, encoding: "utf8" }).replace(/\s+/gu, "");
3131}
323233+function shellTestEnv(overrides: Record<string, string | undefined>): NodeJS.ProcessEnv {
34+const env: NodeJS.ProcessEnv = {
35+HOME: process.env.HOME ?? os.tmpdir(),
36+PATH: process.env.PATH ?? "",
37+TMPDIR: process.env.TMPDIR ?? os.tmpdir(),
38+};
39+for (const [key, value] of Object.entries(overrides)) {
40+if (value !== undefined) {
41+env[key] = value;
42+}
43+}
44+return env;
45+}
46+3347describe("scripts/lib/openclaw-e2e-instance.sh", () => {
3448it("sources decoded test-state scripts", () => {
3549const result = runHelper(base64('export OPENCLAW_E2E_INSTANCE_TEST="ok"\n'));
@@ -92,14 +106,13 @@ describe("scripts/lib/openclaw-e2e-instance.sh", () => {
92106],
93107{
94108encoding: "utf8",
95-env: {
96- ...process.env,
109+env: shellTestEnv({
97110PATH: `${tempDir}:${process.env.PATH ?? ""}`,
98111OPENCLAW_CURRENT_PACKAGE_TGZ: packagePath,
99112OPENCLAW_E2E_NPM_INSTALL_TIMEOUT: "42s",
100113OPENCLAW_TEST_TIMEOUT_ARGS: timeoutArgsPath,
101114OPENCLAW_TEST_NPM_ARGS: npmArgsPath,
102-},
115+}),
103116},
104117);
105118@@ -157,14 +170,13 @@ describe("scripts/lib/openclaw-e2e-instance.sh", () => {
157170],
158171{
159172encoding: "utf8",
160-env: {
161- ...process.env,
173+env: shellTestEnv({
162174PATH: `${tempDir}:${process.env.PATH ?? ""}`,
163175OPENCLAW_CURRENT_PACKAGE_TGZ: packagePath,
164176OPENCLAW_E2E_NPM_INSTALL_TIMEOUT: "42s",
165177OPENCLAW_TEST_TIMEOUT_ARGS: timeoutArgsPath,
166178OPENCLAW_TEST_NPM_ARGS: npmArgsPath,
167-},
179+}),
168180},
169181);
170182@@ -218,14 +230,13 @@ describe("scripts/lib/openclaw-e2e-instance.sh", () => {
218230],
219231{
220232encoding: "utf8",
221-env: {
222- ...process.env,
233+env: shellTestEnv({
223234PATH: tempDir,
224235OPENCLAW_CURRENT_PACKAGE_TGZ: packagePath,
225236OPENCLAW_E2E_NPM_INSTALL_TIMEOUT: "42s",
226237OPENCLAW_TEST_TIMEOUT_ARGS: timeoutArgsPath,
227238OPENCLAW_TEST_NPM_ARGS: npmArgsPath,
228-},
239+}),
229240},
230241);
231242@@ -267,13 +278,12 @@ describe("scripts/lib/openclaw-e2e-instance.sh", () => {
267278],
268279{
269280encoding: "utf8",
270-env: {
271- ...process.env,
281+env: shellTestEnv({
272282PATH: `${tempDir}:${nodeBinDir}`,
273283OPENCLAW_CURRENT_PACKAGE_TGZ: packagePath,
274284OPENCLAW_E2E_NPM_INSTALL_TIMEOUT: "42s",
275285OPENCLAW_TEST_NPM_ARGS: npmArgsPath,
276-},
286+}),
277287},
278288);
279289@@ -304,10 +314,9 @@ describe("scripts/lib/openclaw-e2e-instance.sh", () => {
304314],
305315{
306316encoding: "utf8",
307-env: {
308- ...process.env,
317+env: shellTestEnv({
309318PATH: `${tempDir}:${nodeBinDir}`,
310-},
319+}),
311320timeout: 5_000,
312321},
313322);
@@ -411,13 +420,12 @@ describe("scripts/lib/openclaw-e2e-instance.sh", () => {
411420],
412421{
413422encoding: "utf8",
414-env: {
415- ...process.env,
423+env: shellTestEnv({
416424PATH: `${tempDir}:${process.env.PATH ?? ""}`,
417425OPENCLAW_E2E_COMMAND_TIMEOUT: "17s",
418426OPENCLAW_TEST_TIMEOUT_ARGS: timeoutArgsPath,
419427OPENCLAW_TEST_COMMAND_ARGS: commandArgsPath,
420-},
428+}),
421429},
422430);
423431@@ -475,13 +483,12 @@ describe("scripts/lib/openclaw-e2e-instance.sh", () => {
475483],
476484{
477485encoding: "utf8",
478-env: {
479- ...process.env,
486+env: shellTestEnv({
480487PATH: `${tempDir}:${process.env.PATH ?? ""}`,
481488OPENCLAW_E2E_COMMAND_TIMEOUT: "23s",
482489OPENCLAW_TEST_TIMEOUT_ARGS: timeoutArgsPath,
483490OPENCLAW_TEST_COMMAND_ARGS: commandArgsPath,
484-},
491+}),
485492},
486493);
487494@@ -537,13 +544,12 @@ describe("scripts/lib/openclaw-e2e-instance.sh", () => {
537544],
538545{
539546encoding: "utf8",
540-env: {
541- ...process.env,
547+env: shellTestEnv({
542548PATH: `${tempDir}:${process.env.PATH ?? ""}`,
543549OPENCLAW_E2E_COMMAND_TIMEOUT: "31s",
544550OPENCLAW_TEST_TIMEOUT_ARGS: timeoutArgsPath,
545551OPENCLAW_TEST_SCRIPT_ARGS: scriptArgsPath,
546-},
552+}),
547553},
548554);
549555此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。