From 149ca49ab56321cce97d372d1dcd1ae9cc1d552f Mon Sep 17 00:00:00 2001 From: John Downey Date: Tue, 30 Jun 2026 15:39:23 -0500 Subject: [PATCH] Add tests for arm64 Linux runner OS detection (#462) Add tests for arm64 ImageOS OS detection --- dist/index.js | 1 + src/setup-beam.js | 1 + test/setup-beam.test.js | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/dist/index.js b/dist/index.js index 73f7b43..8944fb0 100644 --- a/dist/index.js +++ b/dist/index.js @@ -39137,6 +39137,7 @@ function debugLoggingEnabled() { getGleamVersion, getOTPVersion, getRebar3Version, + getRunnerOSVersion, getVersionFromSpec, githubAMDRunnerArchs, githubARMRunnerArchs, diff --git a/src/setup-beam.js b/src/setup-beam.js index 66cc2c3..e09dcac 100644 --- a/src/setup-beam.js +++ b/src/setup-beam.js @@ -1306,6 +1306,7 @@ export default { getGleamVersion, getOTPVersion, getRebar3Version, + getRunnerOSVersion, getVersionFromSpec, githubAMDRunnerArchs, githubARMRunnerArchs, diff --git a/test/setup-beam.test.js b/test/setup-beam.test.js index f6d9526..3ed4337 100644 --- a/test/setup-beam.test.js +++ b/test/setup-beam.test.js @@ -596,6 +596,44 @@ describe('OTP arch-specific install', () => { }) }) +describe('.getRunnerOSVersion(_)', () => { + it('maps x86 ImageOS values to their container', async () => { + const previousImageOS = process.env.ImageOS + + process.env.ImageOS = 'ubuntu22' + assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-22.04') + + process.env.ImageOS = 'ubuntu24' + assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-24.04') + + process.env.ImageOS = previousImageOS + }) + + it('maps arm64 ImageOS variants to the same container as x86', async () => { + const previousImageOS = process.env.ImageOS + + process.env.ImageOS = 'ubuntu22-arm64' + assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-22.04') + + process.env.ImageOS = 'ubuntu24-arm64' + assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-24.04') + + process.env.ImageOS = previousImageOS + }) + + it('throws for genuinely unknown ImageOS values', async () => { + const previousImageOS = process.env.ImageOS + + process.env.ImageOS = 'plan9' + assert.throws( + () => setupBeam.getRunnerOSVersion(), + /Tried to map a target OS/, + ) + + process.env.ImageOS = previousImageOS + }) +}) + describe('.getOTPVersion(_) - Elixir', () => { let got let expected