// node --test scripts/ci/lib/runtime-index-builder.test.mjs import assert from "node:assert/strict"; import { test } from "node:test"; import { RUNTIME_INDEX_SCHEMA_VERSION, buildRuntimeIndex } from "./runtime-index-builder.mjs"; const SHA = "b".repeat(64); const components = { sidecar: { component: "sidecar", archive: "d3ro-runtime-sidecar.tar.gz", sha256: SHA, totalSize: 20, parts: [ { name: "d3ro-runtime-sidecar.tar.gz.001", size: 10, sha256: SHA }, { name: "d3ro-runtime-sidecar.tar.gz.002", size: 10, sha256: SHA }, ], }, }; test("runtime index declares the build platform and arch (regression: macOS got the Windows engine)", () => { const index = buildRuntimeIndex({ version: "1.9.0", generatedAt: "2026-09-28T00:00:00.000Z", platform: "win32", arch: "x64", partBaseUrl: "https://feed.test/runtime-1.9.0/", components, }); assert.equal(index.schemaVersion, RUNTIME_INDEX_SCHEMA_VERSION); assert.equal(index.platform, "win32"); assert.equal(index.arch, "x64"); assert.equal(index.version, "1.9.0"); assert.deepEqual( index.components.sidecar.parts.map((part) => part.url), [ "https://feed.test/runtime-1.9.0/d3ro-runtime-sidecar.tar.gz.001", "https://feed.test/runtime-1.9.0/d3ro-runtime-sidecar.tar.gz.002", ], ); // 입력은 바꾸지 않는다 assert.equal("url" in components.sidecar.parts[0], false); }); test("runtime index refuses to be built without a platform or arch", () => { const base = { version: "1.9.0", generatedAt: "x", partBaseUrl: "https://feed.test", components }; assert.throws(() => buildRuntimeIndex({ ...base, platform: "", arch: "x64" }), /platform/); assert.throws(() => buildRuntimeIndex({ ...base, platform: "win32", arch: undefined }), /arch/); });