80 lines
2.9 KiB
TypeScript
80 lines
2.9 KiB
TypeScript
// script/build-binaries.test.ts
|
|
// Tests for platform binary build configuration
|
|
|
|
import { describe, expect, it } from "bun:test";
|
|
|
|
// Import PLATFORMS from build-binaries.ts
|
|
// We need to export it first, but for now we'll test the expected structure
|
|
const EXPECTED_BASELINE_TARGETS = [
|
|
"bun-linux-x64-baseline",
|
|
"bun-linux-x64-musl-baseline",
|
|
"bun-darwin-x64-baseline",
|
|
"bun-windows-x64-baseline",
|
|
];
|
|
|
|
describe("build-binaries", () => {
|
|
describe("PLATFORMS array", () => {
|
|
it("includes baseline variants for non-AVX2 CPU support", async () => {
|
|
// given
|
|
const module = await import("./build-binaries.ts");
|
|
const platforms = (module as { PLATFORMS: { target: string }[] }).PLATFORMS;
|
|
const targets = platforms.map((p) => p.target);
|
|
|
|
// when
|
|
const hasAllBaselineTargets = EXPECTED_BASELINE_TARGETS.every((baseline) =>
|
|
targets.includes(baseline)
|
|
);
|
|
|
|
// then
|
|
expect(hasAllBaselineTargets).toBe(true);
|
|
for (const baseline of EXPECTED_BASELINE_TARGETS) {
|
|
expect(targets).toContain(baseline);
|
|
}
|
|
});
|
|
|
|
it("has correct directory names for baseline platforms", async () => {
|
|
// given
|
|
const module = await import("./build-binaries.ts");
|
|
const platforms = (module as { PLATFORMS: { dir: string; target: string }[] }).PLATFORMS;
|
|
|
|
// when
|
|
const baselinePlatforms = platforms.filter((p) => p.target.includes("baseline"));
|
|
|
|
// then
|
|
expect(baselinePlatforms.length).toBe(4);
|
|
expect(baselinePlatforms.map((p) => p.dir)).toContain("linux-x64-baseline");
|
|
expect(baselinePlatforms.map((p) => p.dir)).toContain("linux-x64-musl-baseline");
|
|
expect(baselinePlatforms.map((p) => p.dir)).toContain("darwin-x64-baseline");
|
|
expect(baselinePlatforms.map((p) => p.dir)).toContain("windows-x64-baseline");
|
|
});
|
|
|
|
it("has correct binary names for baseline platforms", async () => {
|
|
// given
|
|
const module = await import("./build-binaries.ts");
|
|
const platforms = (module as { PLATFORMS: { dir: string; target: string; binary: string }[] }).PLATFORMS;
|
|
|
|
// when
|
|
const windowsBaseline = platforms.find((p) => p.target === "bun-windows-x64-baseline");
|
|
const linuxBaseline = platforms.find((p) => p.target === "bun-linux-x64-baseline");
|
|
|
|
// then
|
|
expect(windowsBaseline?.binary).toBe("oh-my-opencode.exe");
|
|
expect(linuxBaseline?.binary).toBe("oh-my-opencode");
|
|
});
|
|
|
|
it("has descriptions mentioning no AVX2 for baseline platforms", async () => {
|
|
// given
|
|
const module = await import("./build-binaries.ts");
|
|
const platforms = (module as { PLATFORMS: { target: string; description: string }[] }).PLATFORMS;
|
|
|
|
// when
|
|
const baselinePlatforms = platforms.filter((p) => p.target.includes("baseline"));
|
|
|
|
// then
|
|
for (const platform of baselinePlatforms) {
|
|
expect(platform.description).toContain("no AVX2");
|
|
}
|
|
});
|
|
});
|
|
});
|