diff --git a/lib/datasource/packagist.js b/lib/datasource/packagist.js index b585bffccafe0b0a6e7eda9d852704ce768ea789..1be01e43d1d9db7f4a3d81addf5656bdd11a1900 100644 --- a/lib/datasource/packagist.js +++ b/lib/datasource/packagist.js @@ -54,6 +54,14 @@ async function getRegistryMeta(regUrl) { logger.info({ regUrl }, 'Unauthorized Packagist repository'); return null; } + if ( + err.statusCode === 404 && + err.url && + err.url.endsWith('/packages.json') + ) { + logger.info({ regUrl }, 'Packagist repository not found'); + return null; + } logger.warn({ err }, 'Packagist download error'); return null; } diff --git a/test/datasource/packagist.spec.js b/test/datasource/packagist.spec.js index 72cda449222f7130ec7aed3e1e7c691deb28a3c4..329cb7c02cf3e456372a3d7d9d1da080815e2b9e 100644 --- a/test/datasource/packagist.spec.js +++ b/test/datasource/packagist.spec.js @@ -84,6 +84,19 @@ describe('datasource/packagist', () => { ); expect(res).toBeNull(); }); + it('handles not found registries', async () => { + got.mockImplementationOnce(() => + Promise.reject({ + statusCode: 404, + url: 'https://some.registry/packages.json', + }) + ); + const res = await datasource.getPkgReleases( + 'pkg:packagist/vendor/package-name', + {} + ); + expect(res).toBeNull(); + }); it('supports includes packages', async () => { const packagesJson = { packages: [],