From e0e7bd253184222bf204a8a7f02f672dd23c8b6c Mon Sep 17 00:00:00 2001 From: vanishcode Date: Wed, 10 Jun 2020 19:17:47 +0800 Subject: [PATCH 1/3] fix: wrong `npm doctor` command result --- lib/doctor/check-ping.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/doctor/check-ping.js b/lib/doctor/check-ping.js index 58f14fe69e1e0..d8eac459fd69b 100644 --- a/lib/doctor/check-ping.js +++ b/lib/doctor/check-ping.js @@ -6,7 +6,7 @@ function checkPing (cb) { tracker.info('checkPing', 'Pinging registry') ping({}, true, (err, pong) => { if (err && err.code && err.code.match(/^E\d{3}$/)) { - return cb(null, [err.code.substr(1)]) + return cb(null, [err.code.substr(1), 'failed']) } else { cb(null, [200, 'ok']) } From 80561ecdc5af88423bc48513f4cca1bcff1f4b04 Mon Sep 17 00:00:00 2001 From: vanishcode Date: Tue, 16 Jun 2020 16:15:09 +0800 Subject: [PATCH 2/3] test: add test for `npm doctor` that ping registry returns error --- test/tap/doctor-ping-registry-404.js | 108 +++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 test/tap/doctor-ping-registry-404.js diff --git a/test/tap/doctor-ping-registry-404.js b/test/tap/doctor-ping-registry-404.js new file mode 100644 index 0000000000000..ef130374f834c --- /dev/null +++ b/test/tap/doctor-ping-registry-404.js @@ -0,0 +1,108 @@ +'use strict' +/* eslint-disable camelcase */ +const common = require('../common-tap.js') +const http = require('http') +const mr = require('npm-registry-mock') +const npm = require('../../lib/npm.js') +const path = require('path') +const Tacks = require('tacks') +const t = require('tap') +const which = require('which') + +const Dir = Tacks.Dir +const File = Tacks.File + +const ROOT = common.pkg +const CACHE = common.cache +const TMP = path.join(ROOT, 'tmp') +const PREFIX = path.join(ROOT, 'global-prefix') +const PKG = path.join(ROOT, 'pkg') + +let server, nodeServer +let node_url + +t.teardown(() => { + if (server) { + server.close() + } + if (nodeServer) { + nodeServer.close() + } +}) + +t.test('setup', (t) => { + const port = common.port + 2 + nodeServer = http.createServer(function (q, s) { + s.end(JSON.stringify([{ lts: true, version: '0.0.0' }])) + }) + nodeServer.listen(port, () => { + node_url = 'http://localhost:' + port + mr({ port: common.port }, (err, s) => { + t.ifError(err, 'registry mocked successfully') + server = s + server.get('/-/ping?write=true').reply(404) + server.get('/npm').reply( + 200, + JSON.stringify({ + name: 'npm', + 'dist-tags': { latest: '0.0.0' }, + versions: { + '0.0.0': { + name: 'npm', + version: '0.0.0', + _shrinkwrap: null, + _hasShrinkwrap: false, + dist: { + shasum: 'deadbeef', + tarball: 'https://reg.eh/npm-0.0.0.tgz', + }, + }, + }, + }) + ) + const fixture = new Tacks( + Dir({ + [path.basename(PKG)]: Dir({ + 'package.json': File({ name: 'npm', version: '0.0.0' }), + }), + [path.basename(PREFIX)]: Dir({}), + }) + ) + fixture.create(ROOT) + npm.load( + { + registry: common.registry, + loglevel: 'silent', + cache: CACHE, + tmp: TMP, + prefix: PREFIX, + }, + (err) => { + t.ifError(err, 'npm loaded successfully') + t.pass('all set up') + t.done() + } + ) + }) + }) +}) + +t.test('npm doctor ping returns 404 (or any other error)', function (t) { + npm.commands.doctor({ 'node-url': node_url }, true, function (e, list) { + t.ifError(e, 'npm loaded successfully') + t.same(list.length, 9, 'list should have 9 prop') + t.same(list[0][1], 'failed', 'npm ping') + t.same(list[1][1], 'v' + npm.version, 'npm -v') + t.same(list[2][1], process.version, 'node -v') + t.same(list[3][1], common.registry + '/', 'npm config get registry') + t.same(list[5][1], 'ok', 'Perms check on cached files') + t.same(list[6][1], 'ok', 'Perms check on global node_modules') + t.same(list[7][1], 'ok', 'Perms check on local node_modules') + t.match(list[8][1], /^verified \d+ tarballs?$/, 'Cache verified') + which('git', function (e, resolvedPath) { + t.ifError(e, 'git command is installed') + t.same(list[4][1], resolvedPath, 'which git') + t.done() + }) + }) +}) From 8cb9b8e08d0ae4d72a4593a6e2019b1efa9c9c87 Mon Sep 17 00:00:00 2001 From: vanishcode Date: Tue, 16 Jun 2020 16:28:13 +0800 Subject: [PATCH 3/3] style: fix lint error with no trailing comma --- test/tap/doctor-ping-registry-404.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/tap/doctor-ping-registry-404.js b/test/tap/doctor-ping-registry-404.js index ef130374f834c..00a772a7c0dac 100644 --- a/test/tap/doctor-ping-registry-404.js +++ b/test/tap/doctor-ping-registry-404.js @@ -54,18 +54,18 @@ t.test('setup', (t) => { _hasShrinkwrap: false, dist: { shasum: 'deadbeef', - tarball: 'https://reg.eh/npm-0.0.0.tgz', - }, - }, - }, + tarball: 'https://reg.eh/npm-0.0.0.tgz' + } + } + } }) ) const fixture = new Tacks( Dir({ [path.basename(PKG)]: Dir({ - 'package.json': File({ name: 'npm', version: '0.0.0' }), + 'package.json': File({ name: 'npm', version: '0.0.0' }) }), - [path.basename(PREFIX)]: Dir({}), + [path.basename(PREFIX)]: Dir({}) }) ) fixture.create(ROOT) @@ -75,7 +75,7 @@ t.test('setup', (t) => { loglevel: 'silent', cache: CACHE, tmp: TMP, - prefix: PREFIX, + prefix: PREFIX }, (err) => { t.ifError(err, 'npm loaded successfully')