From 54d3a62284e78bf772da7ab1afa6d5e4cc4f8bc5 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 14 Jan 2018 15:17:57 +0100 Subject: [PATCH] fix: throw error when receiving 5xx responses from npmjs This is a partial fix for #929. After this we should catch and retry. --- lib/manager/npm/registry.js | 4 ++++ test/manager/npm/registry.spec.js | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/manager/npm/registry.js b/lib/manager/npm/registry.js index d9e0d08f98..fb8ae67fdd 100644 --- a/lib/manager/npm/registry.js +++ b/lib/manager/npm/registry.js @@ -94,6 +94,10 @@ async function getDependency(name) { logger.info({ err, name }, `Dependency not found`); return null; } + if (err.statusCode >= 500 && err.statusCode < 600) { + logger.info({ err }, 'npm registry failure'); + throw new Error('registry-failure'); + } logger.warn({ err, name }, 'Unknown npm lookup error'); return null; } diff --git a/test/manager/npm/registry.spec.js b/test/manager/npm/registry.spec.js index 0d1df746ad..a775a16af4 100644 --- a/test/manager/npm/registry.spec.js +++ b/test/manager/npm/registry.spec.js @@ -59,6 +59,18 @@ describe('api/npm', () => { const res = await npm.getDependency('foobar'); expect(res).toBeNull(); }); + it('should throw error for 5xx', async () => { + nock('https://registry.npmjs.org') + .get('/foobar') + .reply(503); + let e; + try { + await npm.getDependency('foobar'); + } catch (err) { + e = err; + } + expect(e).toBeDefined(); + }); it('should send an authorization header if provided', async () => { registryAuthToken.mockImplementation(() => ({ type: 'Basic', -- GitLab