返回 DeepSeek-Reasonix
recovery.test.ts
根目录 / desktop / electron / src / main / recovery.test.ts
1 import assert from "node:assert/strict";
2 import { mkdtempSync, mkdirSync, writeFileSync, rmSync, unlinkSync } from "node:fs";
3 import { tmpdir } from "node:os";
4 import { join } from "node:path";
5 import { test } from "node:test";
6 import { supersededLauncher } from "./recovery.js";
7
8 test("recovery re-reads current.json and selects only this installation's stable entry", (t) => {
9 const root = mkdtempSync(join(tmpdir(), "reasonix-recovery-"));
10 t.after(() => rmSync(root, { recursive: true, force: true }));
11 mkdirSync(join(root, "versions", "v1.38.5", "app"), { recursive: true });
12 const shell = join(root, "versions", "v1.38.5", "app", "Reasonix.exe");
13 const launcher = join(root, "reasonix-launcher.exe");
14 writeFileSync(launcher, "fixture");
15 const activate = (v: string, dir = `versions/${v}`) => writeFileSync(join(root, "current.json"), JSON.stringify({schemaVersion:1,activeVersion:v,activeDir:dir}));
16 activate("v1.38.5"); assert.equal(supersededLauncher(shell,"v1.38.5"),undefined);
17 activate("v1.38.7"); assert.equal(supersededLauncher(shell,"v1.38.5"),launcher);
18 const canonical = join(root, "Reasonix.exe");
19 writeFileSync(canonical, "new launcher");
20 assert.equal(supersededLauncher(shell, "v1.38.5"), canonical);
21 unlinkSync(launcher);
22 assert.equal(supersededLauncher(shell, "v1.38.5"), canonical);
23 unlinkSync(canonical);
24 mkdirSync(canonical);
25 assert.equal(supersededLauncher(shell, "v1.38.5"), undefined);
26 activate("v1.38.7","../other"); assert.equal(supersededLauncher(shell,"v1.38.5"),undefined);
27 });
28
28 lines TYPESCRIPT