import { assert, describe, it } from "@effect/vitest"; import { mergeMacUpdateManifests, parseMacUpdateManifest, serializeMacUpdateManifest,} from "./merge-mac-update-manifests.ts"; describe("merge-mac-update-manifests", () => { it("merges arm64 and x64 macOS update manifests into one multi-arch manifest", () => { const arm64 = parseMacUpdateManifest( `version: 0.0.4files: - url: T3-Code-0.0.4-arm64.zip sha512: arm64zip size: 125621344 - url: T3-Code-0.0.4-arm64.dmg sha512: arm64dmg size: 131754935path: T3-Code-0.0.4-arm64.zipsha512: arm64zipreleaseDate: '2026-03-07T10:32:14.587Z'`, "latest-mac.yml", ); const x64 = parseMacUpdateManifest( `version: 0.0.4files: - url: T3-Code-0.0.4-x64.zip sha512: x64zip size: 132000112 - url: T3-Code-0.0.4-x64.dmg sha512: x64dmg size: 138148807path: T3-Code-0.0.4-x64.zipsha512: x64zipreleaseDate: '2026-03-07T10:36:07.540Z'`, "latest-mac-x64.yml", ); const merged = mergeMacUpdateManifests(arm64, x64); assert.equal(merged.version, "0.0.4"); assert.equal(merged.releaseDate, "2026-03-07T10:36:07.540Z"); assert.deepStrictEqual( merged.files.map((file) => file.url), [ "T3-Code-0.0.4-arm64.zip", "T3-Code-0.0.4-arm64.dmg", "T3-Code-0.0.4-x64.zip", "T3-Code-0.0.4-x64.dmg", ], ); const serialized = serializeMacUpdateManifest(merged); assert.ok(!serialized.includes("path:")); assert.equal((serialized.match(/- url:/g) ?? []).length, 4); }); it("rejects mismatched manifest versions", () => { const arm64 = parseMacUpdateManifest( `version: 0.0.4files: - url: T3-Code-0.0.4-arm64.zip sha512: arm64zip size: 1releaseDate: '2026-03-07T10:32:14.587Z'`, "latest-mac.yml", ); const x64 = parseMacUpdateManifest( `version: 0.0.5files: - url: T3-Code-0.0.5-x64.zip sha512: x64zip size: 1releaseDate: '2026-03-07T10:36:07.540Z'`, "latest-mac-x64.yml", ); assert.throws(() => mergeMacUpdateManifests(arm64, x64), /different versions/); }); it("preserves quoted scalars as strings", () => { const manifest = parseMacUpdateManifest( `version: '1.0'files: - url: T3-Code-1.0-x64.zip sha512: zipsha size: 1releaseName: 'true'minimumSystemVersion: '13.0'stagingPercentage: 50releaseDate: '2026-03-07T10:36:07.540Z'`, "latest-mac.yml", ); assert.equal(manifest.version, "1.0"); assert.equal(manifest.extras.releaseName, "true"); assert.equal(manifest.extras.minimumSystemVersion, "13.0"); assert.equal(manifest.extras.stagingPercentage, 50); });});
import { assert, describe, it } from "@effect/vitest";
import {
mergeMacUpdateManifests,
parseMacUpdateManifest,
serializeMacUpdateManifest,
} from "./merge-mac-update-manifests.ts";
describe("merge-mac-update-manifests", () => {
it("merges arm64 and x64 macOS update manifests into one multi-arch manifest", () => {
const arm64 = parseMacUpdateManifest(
`version: 0.0.4
files:
- url: T3-Code-0.0.4-arm64.zip
sha512: arm64zip
size: 125621344
- url: T3-Code-0.0.4-arm64.dmg
sha512: arm64dmg
size: 131754935
path: T3-Code-0.0.4-arm64.zip
sha512: arm64zip
releaseDate: '2026-03-07T10:32:14.587Z'
`,
"latest-mac.yml",
);
const x64 = parseMacUpdateManifest(
`version: 0.0.4
files:
- url: T3-Code-0.0.4-x64.zip
sha512: x64zip
size: 132000112
- url: T3-Code-0.0.4-x64.dmg
sha512: x64dmg
size: 138148807
path: T3-Code-0.0.4-x64.zip
sha512: x64zip
releaseDate: '2026-03-07T10:36:07.540Z'
`,
"latest-mac-x64.yml",
);
const merged = mergeMacUpdateManifests(arm64, x64);
assert.equal(merged.version, "0.0.4");
assert.equal(merged.releaseDate, "2026-03-07T10:36:07.540Z");
assert.deepStrictEqual(
merged.files.map((file) => file.url),
[
"T3-Code-0.0.4-arm64.zip",
"T3-Code-0.0.4-arm64.dmg",
"T3-Code-0.0.4-x64.zip",
"T3-Code-0.0.4-x64.dmg",
],
);
const serialized = serializeMacUpdateManifest(merged);
assert.ok(!serialized.includes("path:"));
assert.equal((serialized.match(/- url:/g) ?? []).length, 4);
});
it("rejects mismatched manifest versions", () => {
const arm64 = parseMacUpdateManifest(
`version: 0.0.4
files:
- url: T3-Code-0.0.4-arm64.zip
sha512: arm64zip
size: 1
releaseDate: '2026-03-07T10:32:14.587Z'
`,
"latest-mac.yml",
);
const x64 = parseMacUpdateManifest(
`version: 0.0.5
files:
- url: T3-Code-0.0.5-x64.zip
sha512: x64zip
size: 1
releaseDate: '2026-03-07T10:36:07.540Z'
`,
"latest-mac-x64.yml",
);
assert.throws(() => mergeMacUpdateManifests(arm64, x64), /different versions/);
});
it("preserves quoted scalars as strings", () => {
const manifest = parseMacUpdateManifest(
`version: '1.0'
files:
- url: T3-Code-1.0-x64.zip
sha512: zipsha
size: 1
releaseName: 'true'
minimumSystemVersion: '13.0'
stagingPercentage: 50
releaseDate: '2026-03-07T10:36:07.540Z'
`,
"latest-mac.yml",
);
assert.equal(manifest.version, "1.0");
assert.equal(manifest.extras.releaseName, "true");
assert.equal(manifest.extras.minimumSystemVersion, "13.0");
assert.equal(manifest.extras.stagingPercentage, 50);
});
});