37 lines
1.6 KiB
JavaScript
37 lines
1.6 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFileSync } from "node:fs";
|
|
import test from "node:test";
|
|
import { buildTuiReleaseRequest } from "./evetui-release-contract.mjs";
|
|
|
|
const capabilityManifest = JSON.parse(readFileSync(new URL("../../eve-runtime-capability.json", import.meta.url), "utf8"));
|
|
const packageManifest = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8"));
|
|
|
|
test("builds EveTui release request from package manifest", () => {
|
|
const request = buildTuiReleaseRequest({
|
|
capabilityManifest,
|
|
packageManifest,
|
|
capabilityManifestPath: "eve-runtime-capability.json",
|
|
packageManifestPath: "package.json",
|
|
});
|
|
|
|
assert.equal(request.schema, "gamecult.eve.runtime_release_request.v1");
|
|
assert.equal(request.ownerRepo, "EveTui");
|
|
assert.equal(request.repository, "GameCult/EveTui");
|
|
assert.equal(request.packageName, "eve-tui");
|
|
assert.equal(request.version, "0.1.1");
|
|
assert.equal(request.packageRoot, ".");
|
|
assert.equal(request.versionSource, "package.json");
|
|
assert.equal(request.tagName, "evetui-v0.1.1");
|
|
assert.equal(request.artifactKind, "terminal-runtime");
|
|
assert.equal(request.artifactPath, "artifacts/evetui-release/0.1.1/eve-tui-0.1.1.tgz");
|
|
assert.equal(request.main, "src/eve-tui-shell.mjs");
|
|
});
|
|
|
|
test("rejects package manifests that do not match the TUI release contract", () => {
|
|
const wrongPackage = { ...packageManifest, name: "eve-wrong" };
|
|
|
|
assert.throws(
|
|
() => buildTuiReleaseRequest({ capabilityManifest, packageManifest: wrongPackage }),
|
|
/package name mismatch/,
|
|
);
|
|
});
|