Files
wehub-resource-sync d68f003000
CI / Change detection (push) Has been cancelled
CI / Version drift (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Workflow RLM cache (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / npm wrapper smoke (push) Has been cancelled
CI / Mobile runtime smoke (push) Has been cancelled
CI / Workflow lint (push) Has been cancelled
CI / Documentation (push) Has been cancelled
Web Frontend / Lint & Type Check (push) Failing after 1s
Auto-close harvested PRs / close (push) Failing after 1s
cargo-deny / cargo-deny (bans licenses sources) (push) Failing after 1s
Security audit / cargo-audit (push) Failing after 1s
Sync to CNB / sync (push) Failing after 1s
cargo-deny / cargo-deny (advisories) (push) Failing after 3s
Web Frontend / Deploy to Cloudflare (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:08:23 +08:00

110 lines
3.9 KiB
JavaScript

const assert = require("node:assert/strict");
const path = require("node:path");
const test = require("node:test");
const os = require("os");
const ARTIFACTS_PATH = path.join(__dirname, "..", "scripts", "artifacts.js");
function withMockedOs(platform, arch, fn) {
const origPlatform = os.platform;
const origArch = os.arch;
os.platform = () => platform;
os.arch = () => arch;
delete require.cache[ARTIFACTS_PATH];
try {
return fn();
} finally {
os.platform = origPlatform;
os.arch = origArch;
delete require.cache[ARTIFACTS_PATH];
}
}
test("openharmony x64 resolves to linux x64 binaries", () => {
withMockedOs("openharmony", "x64", () => {
const { detectBinaryNames } = require(ARTIFACTS_PATH);
const result = detectBinaryNames();
assert.equal(result.codewhale, "codewhale-linux-x64");
assert.equal(result.tui, "codewhale-tui-linux-x64");
assert.equal(result.codew, "codew-linux-x64");
});
});
test("openharmony arm64 resolves to linux arm64 binaries", () => {
withMockedOs("openharmony", "arm64", () => {
const { detectBinaryNames } = require(ARTIFACTS_PATH);
const result = detectBinaryNames();
assert.equal(result.codewhale, "codewhale-linux-arm64");
assert.equal(result.tui, "codewhale-tui-linux-arm64");
assert.equal(result.codew, "codew-linux-arm64");
});
});
test("android arm64 resolves to Termux-native Android assets", () => {
withMockedOs("android", "arm64", () => {
const { detectBinaryNames } = require(ARTIFACTS_PATH);
const result = detectBinaryNames();
assert.equal(result.codewhale, "codewhale-android-arm64");
assert.equal(result.tui, "codewhale-tui-android-arm64");
assert.equal(result.codew, "codew-android-arm64");
});
});
test("genuinely unsupported platform throws with raw platform name", () => {
withMockedOs("freebsd", "x64", () => {
const { detectBinaryNames } = require(ARTIFACTS_PATH);
assert.throws(
() => detectBinaryNames(),
(err) => {
assert.match(err.message, /Unsupported platform: freebsd/);
return true;
},
);
});
});
test("known platforms are unaffected by alias map", () => {
for (const [platform, arch, expectedCodeWhale] of [
["linux", "x64", "codewhale-linux-x64"],
["darwin", "arm64", "codewhale-macos-arm64"],
["win32", "x64", "codewhale-windows-x64.exe"],
]) {
withMockedOs(platform, arch, () => {
const { detectBinaryNames } = require(ARTIFACTS_PATH);
const result = detectBinaryNames();
assert.equal(result.codewhale, expectedCodeWhale);
});
}
});
test("linux riscv64 reports the temporary upstream binding blocker", () => {
withMockedOs("linux", "riscv64", () => {
const { detectBinaryNames } = require(ARTIFACTS_PATH);
assert.throws(
() => detectBinaryNames(),
(err) => {
assert.match(err.message, /Unsupported architecture: riscv64 on platform linux/);
assert.match(err.message, /rquickjs-sys/);
assert.match(err.message, /riscv64gc-unknown-linux-gnu/);
return true;
},
);
});
});
test("allAssetNames includes every matrix entry", () => {
const { allAssetNames, allReleaseAssetNames } = require(ARTIFACTS_PATH);
const assetNames = allAssetNames();
assert.ok(assetNames.includes("codewhale-windows-x64.exe"));
assert.ok(assetNames.includes("codewhale-tui-windows-x64.exe"));
assert.ok(assetNames.includes("codew-windows-x64.exe"));
assert.ok(assetNames.includes("codewhale.bat"));
assert.ok(assetNames.includes("codewhale-android-arm64"));
assert.ok(assetNames.includes("codewhale-tui-android-arm64"));
assert.ok(assetNames.includes("codew-android-arm64"));
assert.ok(!assetNames.includes("codewhale-linux-riscv64"));
assert.ok(allReleaseAssetNames().includes("codew-windows-x64.exe"));
assert.ok(allReleaseAssetNames().includes("codewhale.bat"));
assert.ok(allReleaseAssetNames().includes("codew-android-arm64"));
});