test: add unit tests for getArchitecture and getAvx2 Windows ARM64 fallback logic (#153)

* Initial plan

* Add unit tests for getArchitecture function

Co-authored-by: xhyrom <56601352+xhyrom@users.noreply.github.com>

* Remove unused import in utils.spec.ts

Co-authored-by: xhyrom <56601352+xhyrom@users.noreply.github.com>

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Merge pr-131 and resolve test file conflicts

Co-authored-by: xhyrom <56601352+xhyrom@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: xhyrom <56601352+xhyrom@users.noreply.github.com>
Co-authored-by: Jozef Steinhübl <generalkubo@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Copilot 2026-01-05 01:10:56 +01:00 committed by GitHub
parent a9fae19735
commit 07891155a2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,80 @@
import { describe, expect, it } from "bun:test"; import { afterEach, describe, expect, it, spyOn } from "bun:test";
import { getAvx2 } from "../src/utils"; import { getArchitecture, getAvx2 } from "../src/utils";
import * as core from "@actions/core";
describe("getArchitecture", () => {
let warningSpy: ReturnType<typeof spyOn>;
afterEach(() => {
warningSpy?.mockRestore();
});
it("should return x64 for Windows with arm64 architecture", () => {
warningSpy = spyOn(core, "warning");
const result = getArchitecture("windows", "arm64");
expect(result).toBe("x64");
expect(warningSpy).toHaveBeenCalledTimes(1);
expect(warningSpy).toHaveBeenCalledWith(
expect.stringContaining(
"⚠️ Bun does not provide native arm64 builds for Windows."
)
);
});
it("should return x64 for Windows with aarch64 architecture", () => {
warningSpy = spyOn(core, "warning");
const result = getArchitecture("windows", "aarch64");
expect(result).toBe("x64");
expect(warningSpy).toHaveBeenCalledTimes(1);
expect(warningSpy).toHaveBeenCalledWith(
expect.stringContaining(
"⚠️ Bun does not provide native arm64 builds for Windows."
)
);
});
it("should return aarch64 for non-Windows platforms with arm64", () => {
warningSpy = spyOn(core, "warning");
const result = getArchitecture("linux", "arm64");
expect(result).toBe("aarch64");
expect(warningSpy).not.toHaveBeenCalled();
});
it("should return aarch64 for macOS with arm64", () => {
warningSpy = spyOn(core, "warning");
const result = getArchitecture("darwin", "arm64");
expect(result).toBe("aarch64");
expect(warningSpy).not.toHaveBeenCalled();
});
it("should return original arch value for x64", () => {
warningSpy = spyOn(core, "warning");
const result = getArchitecture("windows", "x64");
expect(result).toBe("x64");
expect(warningSpy).not.toHaveBeenCalled();
});
it("should return original arch value for x86", () => {
warningSpy = spyOn(core, "warning");
const result = getArchitecture("linux", "x86");
expect(result).toBe("x86");
expect(warningSpy).not.toHaveBeenCalled();
});
it("should return original arch value for aarch64 on Linux", () => {
warningSpy = spyOn(core, "warning");
const result = getArchitecture("linux", "aarch64");
expect(result).toBe("aarch64");
expect(warningSpy).not.toHaveBeenCalled();
});
});
describe("getAvx2", () => { describe("getAvx2", () => {
it("should return false when called with os: 'windows' and arch: 'arm64'", () => { it("should return false when called with os: 'windows' and arch: 'arm64'", () => {