From 0db45dfbf63a8304f81bc64e03df07bf3c3b2379 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Wed, 17 Sep 2025 22:18:03 -0700 Subject: [PATCH 1/5] test: use os matrix --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b49b93f..0eda42b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,10 @@ concurrency: jobs: ci: name: Test - runs-on: ubuntu-latest + strategy: + matrix: + os: [ubuntu-latest, ubuntu-22.04] + runs-on: ${{ matrix.os }} timeout-minutes: 5 steps: - name: 📥 Checkout repository From ebdd386448d1b3f5c87ed1bffcc69c1108b2c1d4 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Wed, 17 Sep 2025 22:20:33 -0700 Subject: [PATCH 2/5] test: debug ci --- .github/workflows/ci.yml | 2 ++ test/suite.mjs | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0eda42b..e10c5d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,4 +30,6 @@ jobs: check-latest: true - name: 🧪 Run tests + env: + M_DEBUG: '1' run: npm test diff --git a/test/suite.mjs b/test/suite.mjs index 0a47e41..21da67f 100755 --- a/test/suite.mjs +++ b/test/suite.mjs @@ -16,7 +16,6 @@ function run(args = [], opts = {}) { const env = { ...process.env, M_CACHE: '0', - M_DEBUG: '0', ...opts.env ?? {}, M_PREFIX, M_CONFIRM: '0', From a419bc2c72ce19e6388be79d1a0a2156b851fed3 Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Wed, 17 Sep 2025 22:22:44 -0700 Subject: [PATCH 3/5] test: add check for 156 --- test/suite.mjs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/suite.mjs b/test/suite.mjs index 21da67f..0d770e3 100755 --- a/test/suite.mjs +++ b/test/suite.mjs @@ -216,6 +216,16 @@ describe('m - MongoDB Version Management', { concurrency: 5 }, () => { assert.equal(result.exitCode, 0); assert.match(result.stdout, new RegExp(`Removed MongoDB version ${version}`, 'i')); }); + + test('one-off test for #156', async () => { + const version = '4.2'; + const result1 = await run([version]); + assert.equal(result1.exitCode, 0); + assert.match(result1.stdout, new RegExp(`Activating: MongoDB Server ${version}`, 'i')); + const result2 = await run(); + assert.equal(result2.exitCode, 0); + assert.match(result2.stdout, new RegExp(version, 'i')); + }) }); describe('Source URL Commands', () => { From 9c5c0949e13011df56791870e01b6c096acecfeb Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Wed, 17 Sep 2025 22:25:44 -0700 Subject: [PATCH 4/5] test: do not fail ci matrix fast --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e10c5d4..3763491 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,7 @@ jobs: ci: name: Test strategy: + fail-fast: false matrix: os: [ubuntu-latest, ubuntu-22.04] runs-on: ${{ matrix.os }} From fc480fcdcede9203ebc7199fc6ce4048db22a7ad Mon Sep 17 00:00:00 2001 From: Aaron Heckmann Date: Thu, 18 Sep 2025 09:31:32 -0700 Subject: [PATCH 5/5] fix: ubuntu 22 and 24 --- .github/workflows/ci.yml | 4 +--- bin/m | 4 ++-- package.json | 2 +- test/suite.mjs | 21 ++++++++++++--------- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3763491..418f742 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,10 +27,8 @@ jobs: - name: 🟢 Setup Node.js runtime uses: actions/setup-node@v4 with: - node-version: 'lts/*' + node-version: '24.x' check-latest: true - name: 🧪 Run tests - env: - M_DEBUG: '1' run: npm test diff --git a/bin/m b/bin/m index f10e444..082fc90 100755 --- a/bin/m +++ b/bin/m @@ -983,9 +983,9 @@ get_distro_and_arch() { ubuntu-16*) distros="ubuntu1604 ubuntu1404" ;; ubuntu-18*) distros="ubuntu1804 ubuntu1604" ;; ubuntu-20*) distros="ubuntu2004 ubuntu1804" ;; - ubuntu-22*) distros="ubuntu2204 ubuntu2004" ;; + ubuntu-22*) distros="ubuntu2204 ubuntu2004 ubuntu1804" ;; # see #156 ubuntu-24*) distros="ubuntu2404 ubuntu2204 ubuntu2004" ;; - ubuntu-*) distros="ubuntu2404 ubuntu2204" ;; + ubuntu-*) distros="ubuntu2404 ubuntu2204 ubuntu2004" ;; linuxmint-17*) distros="ubuntu1404" ;; linuxmint-18*) distros="ubuntu1604" ;; diff --git a/package.json b/package.json index 0b59e49..299aefc 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "/SECURITY.md" ], "scripts": { - "test": "node test/suite.mjs" + "test": "node test/suite.mjs --test-only" }, "keywords": [ "mongodb", diff --git a/test/suite.mjs b/test/suite.mjs index 0d770e3..5a7bc3a 100755 --- a/test/suite.mjs +++ b/test/suite.mjs @@ -217,15 +217,18 @@ describe('m - MongoDB Version Management', { concurrency: 5 }, () => { assert.match(result.stdout, new RegExp(`Removed MongoDB version ${version}`, 'i')); }); - test('one-off test for #156', async () => { - const version = '4.2'; - const result1 = await run([version]); - assert.equal(result1.exitCode, 0); - assert.match(result1.stdout, new RegExp(`Activating: MongoDB Server ${version}`, 'i')); - const result2 = await run(); - assert.equal(result2.exitCode, 0); - assert.match(result2.stdout, new RegExp(version, 'i')); - }) + if (process.env.ImageOS === 'ubuntu22') { + test('mongo 4.2 installs on ubuntu22 - #156', async () => { + const version = '4.2'; + const result1 = await run([version], { env: { M_DEBUG: '1' } }); + console.log('debug\n', result1.stderr.split('\n').map(l => ` ${l}`).join('\n')); + assert.match(result1.stdout, new RegExp(`Activating: MongoDB Server ${version}`, 'i')); + assert.equal(result1.exitCode, 0); + const result2 = await run(); + assert.match(result2.stdout, new RegExp(version, 'i')); + assert.equal(result2.exitCode, 0); + }) + } }); describe('Source URL Commands', () => {