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
110 lines
3.9 KiB
JavaScript
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"));
|
|
});
|