Files
dev/third_party/pi/scripts/publish-release-announcement.test.mjs
alexion 4def357d09 chore(vendor): import pi 0.85.1
Imported as a linear vendor commit so forge rebases do not replay the upstream root tree.

git-subtree-dir: third_party/pi

git-subtree-split: d981de1229ef899957bbe968bc8dcda02a21f477
2026-09-14 10:48:47 -04:00

63 lines
1.8 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import { advanceLatestRelease, compareReleaseVersions } from "./publish-release-announcement.mjs";
test("compares stable release versions numerically", () => {
assert.ok(compareReleaseVersions("0.85.0", "0.84.9") > 0);
assert.ok(compareReleaseVersions("0.84.10", "0.84.9") > 0);
assert.equal(compareReleaseVersions("0.84.0", "0.84.0"), 0);
assert.throws(() => compareReleaseVersions("0.85.0-beta.1", "0.84.0"));
});
test("does not regress an existing newer release marker", async () => {
let writeCount = 0;
const result = await advanceLatestRelease(
"0.84.0",
async () => ({ etag: '"newer"', version: "0.85.0" }),
async () => {
writeCount++;
return true;
},
);
assert.deepEqual(result, { advanced: false, version: "0.85.0" });
assert.equal(writeCount, 0);
});
test("retries a lost conditional update and preserves a racing newer marker", async () => {
let readCount = 0;
let writeCount = 0;
const result = await advanceLatestRelease(
"0.84.0",
async () => {
readCount++;
return readCount === 1
? { etag: '"previous"', version: "0.83.0" }
: { etag: '"newer"', version: "0.85.0" };
},
async (condition) => {
writeCount++;
assert.deepEqual(condition, { etag: '"previous"' });
return false;
},
);
assert.deepEqual(result, { advanced: false, version: "0.85.0" });
assert.equal(writeCount, 1);
});
test("creates a missing marker with an if-none-match condition", async () => {
let condition;
const result = await advanceLatestRelease(
"0.84.0",
async () => undefined,
async (value) => {
condition = value;
return true;
},
);
assert.deepEqual(result, { advanced: true, version: "0.84.0" });
assert.deepEqual(condition, { missing: true });
});