diff --git a/lib/manager/npm/registry.js b/lib/manager/npm/registry.js index d9e0d08f9818d08b2033d2979f5ece2f96a3e1b4..fb8ae67fdd97c8fef152d88048be660823822ed0 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 0d1df746ad9ca7a7c918978a28065f860fda8d6d..a775a16af4aa453dffbffb0e03a0bdeb25176cee 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',