nix-openclaw/scripts/select-openclaw-release.test.mjs
joshp123 8c6267b2c3 fix: decouple source and mac app release pins
Select the latest stable OpenClaw source release independently from the newest public macOS app artifact. Report app lag instead of skipping source releases without desktop assets, and teach yolo to materialize source/app pins separately.

Tests: bash -n scripts/update-pins.sh; node --check scripts/select-openclaw-release.mjs scripts/select-openclaw-release.test.mjs; node scripts/select-openclaw-release.test.mjs; GITHUB_ACTIONS=true scripts/update-pins.sh select; ruby -e 'require "yaml"; YAML.load_file(".github/workflows/yolo-update.yml")'; nix flake show --accept-flake-config --json; git diff --check
2026-05-05 18:22:33 +02:00

88 lines
2.4 KiB
JavaScript

#!/usr/bin/env node
import assert from "node:assert/strict";
import { selectOpenClawRelease } from "./select-openclaw-release.mjs";
const releases = [
{
tag_name: "v2026.5.3-1",
draft: false,
prerelease: false,
assets: [],
},
{
tag_name: "v2026.5.3",
draft: false,
prerelease: false,
assets: [],
},
{
tag_name: "v2026.5.2-beta.1",
draft: false,
prerelease: true,
assets: [
{
name: "OpenClaw-2026.5.2-beta.1.zip",
browser_download_url:
"https://github.com/openclaw/openclaw/releases/download/v2026.5.2-beta.1/OpenClaw-2026.5.2-beta.1.zip",
},
],
},
{
tag_name: "v2026.5.2",
draft: false,
prerelease: false,
assets: [
{
name: "OpenClaw-2026.5.2.dmg",
browser_download_url:
"https://github.com/openclaw/openclaw/releases/download/v2026.5.2/OpenClaw-2026.5.2.dmg",
},
{
name: "OpenClaw-2026.5.2.dSYM.zip",
browser_download_url:
"https://github.com/openclaw/openclaw/releases/download/v2026.5.2/OpenClaw-2026.5.2.dSYM.zip",
},
{
name: "OpenClaw-2026.5.2.zip",
browser_download_url:
"https://github.com/openclaw/openclaw/releases/download/v2026.5.2/OpenClaw-2026.5.2.zip",
},
],
},
];
const selection = selectOpenClawRelease(releases);
assert.equal(selection.latestStable.tagName, "v2026.5.3-1");
assert.equal(selection.latestStableSource.tagName, "v2026.5.3-1");
assert.equal(selection.latestStableSource.releaseVersion, "2026.5.3-1");
assert.equal(selection.latestMacAppStable.tagName, "v2026.5.2");
assert.equal(selection.latestMacAppStable.releaseVersion, "2026.5.2");
assert.equal(
selection.latestMacAppStable.appUrl,
"https://github.com/openclaw/openclaw/releases/download/v2026.5.2/OpenClaw-2026.5.2.zip",
);
assert.deepEqual(
selection.appLagStableReleases.map((release) => release.tagName),
["v2026.5.3-1", "v2026.5.3"],
);
const none = selectOpenClawRelease([
{
tag_name: "v2026.5.3",
draft: false,
prerelease: false,
assets: [],
},
]);
assert.equal(none.latestStable.tagName, "v2026.5.3");
assert.equal(none.latestStableSource.tagName, "v2026.5.3");
assert.equal(none.latestStableSource.releaseVersion, "2026.5.3");
assert.equal(none.latestMacAppStable, null);
assert.deepEqual(none.appLagStableReleases, [
{ tagName: "v2026.5.3", reason: "missing-macos-zip" },
]);
console.log("release selection: ok");