From 07891155a26085b03f447a9d9c7d0da181066854 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Mon, 5 Jan 2026 01:10:56 +0100 Subject: [PATCH] test: add unit tests for getArchitecture and getAvx2 Windows ARM64 fallback logic (#153) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- tests/utils.spec.ts | 79 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 77 insertions(+), 2 deletions(-) diff --git a/tests/utils.spec.ts b/tests/utils.spec.ts index f117b47..2566512 100644 --- a/tests/utils.spec.ts +++ b/tests/utils.spec.ts @@ -1,5 +1,80 @@ -import { describe, expect, it } from "bun:test"; -import { getAvx2 } from "../src/utils"; +import { afterEach, describe, expect, it, spyOn } from "bun:test"; +import { getArchitecture, getAvx2 } from "../src/utils"; +import * as core from "@actions/core"; + +describe("getArchitecture", () => { + let warningSpy: ReturnType; + + 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", () => { it("should return false when called with os: 'windows' and arch: 'arm64'", () => {