diff options
author | Gar <gar+gh@danger.computer> | 2022-03-24 21:09:41 +0300 |
---|---|---|
committer | Luke Karrys <luke@lukekarrys.com> | 2022-03-28 23:21:36 +0300 |
commit | 57d8f75eb864486f6aa17bb3dd2f213b5c148073 (patch) | |
tree | b5ba5d58c0f33534b7f073a32b09d59199b8f1ff /test | |
parent | f76d4f2f661bcc2534f541ee0e7d683155372baf (diff) |
fix: consolidate node version support logic
Diffstat (limited to 'test')
-rw-r--r-- | test/lib/cli.js | 39 | ||||
-rw-r--r-- | test/lib/utils/unsupported.js | 102 |
2 files changed, 35 insertions, 106 deletions
diff --git a/test/lib/cli.js b/test/lib/cli.js index b6606c69f..49af62e8f 100644 --- a/test/lib/cli.js +++ b/test/lib/cli.js @@ -14,10 +14,6 @@ const cliMock = async (t, opts) => { const { Npm, outputs, logMocks, logs } = await loadMockNpm(t, { ...opts, init: false }) const cli = t.mock('../../lib/cli.js', { '../../lib/npm.js': Npm, - '../../lib/utils/unsupported.js': { - checkForBrokenNode: () => {}, - checkForUnsupportedNode: () => {}, - }, '../../lib/utils/exit-handler.js': exitHandlerMock, ...logMocks, }) @@ -175,3 +171,38 @@ t.test('load error calls error handler', async t => { await cli(process) t.strictSame(exitHandlerCalled(), [err]) }) + +t.test('known broken node version', async t => { + const errors = [] + let exitCode + const { cli } = await cliMock(t, { + globals: { + 'console.error': (msg) => errors.push(msg), + 'process.version': '6.0.0', + 'process.exit': e => exitCode = e, + }, + }) + await cli(process) + t.match(errors, [ + 'ERROR: npm is known not to run on Node.js 6.0.0', + 'You\'ll need to upgrade to a newer Node.js version in order to use this', + 'version of npm. You can find the latest version at https://nodejs.org/', + ]) + t.match(exitCode, 1) +}) + +t.test('unsupported node version', async t => { + const errors = [] + const { cli } = await cliMock(t, { + globals: { + 'console.error': (msg) => errors.push(msg), + 'process.version': '10.0.0', + }, + }) + await cli(process) + t.match(errors, [ + 'npm does not support Node.js 10.0.0', + 'You should probably upgrade to a newer version of node as we', + 'can\'t make any promises that npm will work with this version.', + ]) +}) diff --git a/test/lib/utils/unsupported.js b/test/lib/utils/unsupported.js deleted file mode 100644 index 2703044a2..000000000 --- a/test/lib/utils/unsupported.js +++ /dev/null @@ -1,102 +0,0 @@ -const t = require('tap') -const unsupported = require('../../../lib/utils/unsupported.js') -const mockGlobals = require('../../fixtures/mock-globals.js') - -const versions = [ - // broken unsupported - ['v0.1.103', true, true], - ['v0.2.0', true, true], - ['v0.3.5', true, true], - ['v0.4.7', true, true], - ['v0.5.3', true, true], - ['v0.6.17', true, true], - ['v0.7.8', true, true], - ['v0.8.28', true, true], - ['v0.9.6', true, true], - ['v0.10.48', true, true], - ['v0.11.16', true, true], - ['v0.12.9', true, true], - ['v1.0.1', true, true], - ['v1.6.0', true, true], - ['v2.3.1', true, true], - ['v3.0.0', true, true], - ['v4.5.0', true, true], - ['v4.8.4', true, true], - ['v5.7.1', true, true], - ['v6.8.1', false, true], - ['v7.0.0-beta23', false, true], - ['v7.2.3', false, true], - ['v8.4.0', false, true], - ['v9.3.0', false, true], - ['v10.0.0-0', false, true], - ['v11.0.0-0', false, true], - ['v12.0.0-0', false, true], - ['v12.13.0-0', false, false], - ['v13.0.0-0', false, true], - ['v14.0.0-0', false, true], - ['v14.15.0-0', false, false], - ['v15.0.0-0', false, true], - ['v16.0.0-0', false, false], -] - -t.test('versions', function (t) { - t.plan(versions.length * 2) - versions.forEach(function (verinfo) { - const version = verinfo[0] - const broken = verinfo[1] - const unsupp = verinfo[2] - const nodejs = unsupported.checkVersion(version) - t.equal(nodejs.broken, broken, version + ' ' + (broken ? '' : 'not ') + 'broken') - t.equal(nodejs.unsupported, unsupp, version + ' ' + (unsupp ? 'unsupported' : 'supported')) - }) - t.end() -}) - -t.test('checkForBrokenNode', t => { - // run it once to not fail - unsupported.checkForBrokenNode() - - const logs = [] - const expectLogs = [ - 'ERROR: npm is known not to run on Node.js 1.2.3', - "You'll need to upgrade to a newer Node.js version in order to use this", - 'version of npm. You can find the latest version at https://nodejs.org/', - ] - - // then make it a thing that fails - mockGlobals(t, { - 'console.error': msg => logs.push(msg), - 'process.version': '1.2.3', - 'process.exit': (code) => { - t.equal(code, 1) - t.strictSame(logs, expectLogs) - t.end() - }, - }) - - unsupported.checkForBrokenNode() -}) - -t.test('checkForUnsupportedNode', t => { - // run it once to not fail or warn - unsupported.checkForUnsupportedNode() - - const logs = [] - const expectLogs = [ - 'npm does not support Node.js 8.0.0', - 'You should probably upgrade to a newer version of node as we', - "can't make any promises that npm will work with this version.", - 'You can find the latest version at https://nodejs.org/', - ] - - // then make it a thing that fails - mockGlobals(t, { - 'console.error': msg => logs.push(msg), - 'process.version': '8.0.0', - }) - - unsupported.checkForUnsupportedNode() - - t.strictSame(logs, expectLogs) - t.end() -}) |