34 lines
1.3 KiB
JavaScript
34 lines
1.3 KiB
JavaScript
import assert from "node:assert/strict";
|
|||
|
|
import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
|
||
|
|
import { tmpdir } from "node:os";
|
||
|
|
import { join } from "node:path";
|
||
|
|
import { test } from "node:test";
|
||
|
|
import { createLauncherManifest, nextLauncherVersion } from "./launcher-release.mjs";
|
||
|
|
|
||
|
|
test("increments patch digits and rolls over minor and major digits", () => {
|
||
|
|
assert.equal(nextLauncherVersion("2.1.0"), "2.1.1");
|
||
|
|
assert.equal(nextLauncherVersion("2.1.9"), "2.2.0");
|
||
|
|
assert.equal(nextLauncherVersion("2.9.9"), "3.0.0");
|
||
|
|
});
|
||
|
|
|
||
|
|
test("rejects versions outside the three-number sequence", () => {
|
||
|
|
assert.throws(() => nextLauncherVersion("2.1"), /Invalid launcher version/);
|
||
|
|
assert.throws(() => nextLauncherVersion("02.1.0"), /Invalid launcher version/);
|
||
|
|
});
|
||
|
|
|
||
|
|
test("creates a manifest with the executable SHA-256", async () => {
|
||
|
|
const directory = await mkdtemp(join(tmpdir(), "sunbringer-release-test-"));
|
||
|
|
const executablePath = join(directory, "launcher.exe");
|
||
|
|
|
||
|
|
try {
|
||
|
|
await writeFile(executablePath, "test executable");
|
||
|
|
const manifest = await createLauncherManifest("2.1.1", executablePath);
|
||
|
|
assert.equal(manifest.version, "2.1.1");
|
||
|
|
assert.equal(
|
||
|
|
manifest.sha256,
|
||
|
|
"ff8715f0270731bbdb0bb3586a77d032f5e883b8909dcafbf3e8909cb8c71201",
|
||
|
|
);
|
||
|
|
} finally {
|
||
|
|
await rm(directory, { recursive: true, force: true });
|
||
|
|
}
|
||
|
|
});
|