Files
modelstudioai__cli/packages/cli/tests/e2e/global-setup.ts
T

60 lines
2.1 KiB
TypeScript
Raw Normal View History

2026-05-28 18:37:07 +08:00
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from "fs";
import { join } from "path";
import { parseEnv } from "util";
import { E2E_RUN_SESSION_FILENAME, monorepoRoot } from "./helpers.ts";
/**
* Vitest 在所有 worker 启动前执行一次:写入共享会话 id使多进程并行时仍共用一个 `test/output/<会话>/`。
* 结束后删除标记文件,避免非 Vitest 流程误用上一次会话 id。
*/
export default function vitestGlobalSetup(): () => void {
// 加载根目录 `.env` 合并变量包含shell 注入)
const rootEnv = join(monorepoRoot(), ".env");
if (existsSync(rootEnv)) {
const parsed = parseEnv(readFileSync(rootEnv, "utf8"));
Object.assign(process.env, parsed);
} else {
process.env.BAILIAN_E2E = "1";
process.env.BAILIAN_E2E_MEDIA = "1";
process.env.BAILIAN_E2E_VIDEO = "1";
// 如根目录不存在 .env则生成一个 .env
const envContent = `# 是否开启 E2E 测试
BAILIAN_E2E=1
# 是否开启图片/语音 E2E 测试
BAILIAN_E2E_MEDIA=1
# 是否开启视频 E2E 测试
BAILIAN_E2E_VIDEO=1
# DashScope API Key
DASHSCOPE_API_KEY=
# -------------------------------
BAILIAN_E2E_VIDEO_TASK_ID=b499a8cb-1fc4-4d43-9495-e23c7f78ae0d
# -------------------------------
# 知识库 ID
BAILIAN_WORKSPACE_ID=
# 索引 ID
BAILIAN_E2E_INDEX_ID=
# -------------------------------
`;
writeFileSync(rootEnv, envContent, "utf8");
}
// 创建生成内容目录
const now = new Date();
const pad = (n: number) => n.toString().padStart(2, "0");
const dateStr = [now.getFullYear(), pad(now.getMonth() + 1), pad(now.getDate())].join("-");
const timeStr = [pad(now.getHours()), pad(now.getMinutes()), pad(now.getSeconds())].join(":");
const runId = `e2e-run-${dateStr} ${timeStr}`;
const outDir = join(monorepoRoot(), "test", "output");
mkdirSync(outDir, { recursive: true });
const marker = join(outDir, E2E_RUN_SESSION_FILENAME);
writeFileSync(marker, `${runId}\n`, "utf8");
return () => {
try {
unlinkSync(marker);
} catch {
/* 忽略:已删或权限等 */
}
};
}