



























@@ -1,8 +1,9 @@
11import fs from "node:fs";
22import os from "node:os";
33import path from "node:path";
4-import { afterAll, beforeAll, describe, expect, it, vi } from "vitest";
4+import { afterAll, beforeAll, describe, expect, it } from "vitest";
55import type { OpenClawConfig } from "../config/types.js";
6+import { withEnvAsync } from "../test-utils/env.js";
67import { resolveStatusTtsSnapshot } from "./status-config.js";
7889let fixtureRoot = "";
@@ -20,31 +21,16 @@ afterAll(() => {
20212122async function withStatusTempHome(run: (home: string) => Promise<void>): Promise<void> {
2223const home = path.join(fixtureRoot, `case-${fixtureId++}`);
23-const previousHome = process.env.HOME;
24-const previousUserProfile = process.env.USERPROFILE;
25-const previousOpenClawHome = process.env.OPENCLAW_HOME;
26-const previousStateDir = process.env.OPENCLAW_STATE_DIR;
2724fs.mkdirSync(home, { recursive: true });
28-process.env.HOME = home;
29-process.env.USERPROFILE = home;
30-delete process.env.OPENCLAW_HOME;
31-process.env.OPENCLAW_STATE_DIR = path.join(home, ".openclaw");
32-try {
33-await run(home);
34-} finally {
35-restoreEnv("HOME", previousHome);
36-restoreEnv("USERPROFILE", previousUserProfile);
37-restoreEnv("OPENCLAW_HOME", previousOpenClawHome);
38-restoreEnv("OPENCLAW_STATE_DIR", previousStateDir);
39-}
40-}
41-42-function restoreEnv(key: string, value: string | undefined): void {
43-if (value === undefined) {
44-delete process.env[key];
45-} else {
46-process.env[key] = value;
47-}
25+await withEnvAsync(
26+{
27+HOME: home,
28+USERPROFILE: home,
29+OPENCLAW_HOME: undefined,
30+OPENCLAW_STATE_DIR: path.join(home, ".openclaw"),
31+},
32+async () => await run(home),
33+);
4834}
49355036describe("resolveStatusTtsSnapshot", () => {
@@ -375,26 +361,28 @@ describe("resolveStatusTtsSnapshot", () => {
375361}),
376362);
377363378-delete process.env.OPENCLAW_STATE_DIR;
379-vi.stubEnv("OPENCLAW_CONFIG_PATH", path.join(stateDir, "openclaw.json"));
380-try {
381-expect(
382-resolveStatusTtsSnapshot({
383-cfg: {
384-messages: {
385-tts: {},
386-},
387-} as OpenClawConfig,
388-}),
389-).toEqual({
390-autoMode: "always",
391-provider: "openai",
392-maxLength: 1500,
393-summarize: true,
394-});
395-} finally {
396-vi.unstubAllEnvs();
397-}
364+await withEnvAsync(
365+{
366+OPENCLAW_STATE_DIR: undefined,
367+OPENCLAW_CONFIG_PATH: path.join(stateDir, "openclaw.json"),
368+},
369+async () => {
370+expect(
371+resolveStatusTtsSnapshot({
372+cfg: {
373+messages: {
374+tts: {},
375+},
376+} as OpenClawConfig,
377+}),
378+).toEqual({
379+autoMode: "always",
380+provider: "openai",
381+maxLength: 1500,
382+summarize: true,
383+});
384+},
385+);
398386});
399387});
400388});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。