108 lines · 2.6 KB · TypeScript
RawDownload
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);  });});