diff --git a/lib/workers/repository/process/lookup/index.js b/lib/workers/repository/process/lookup/index.js index 36df77cf3063a61483ace1792d2ddafea5394734..3664366295434c47aea2e117d4dea184ff3adede 100644 --- a/lib/workers/repository/process/lookup/index.js +++ b/lib/workers/repository/process/lookup/index.js @@ -176,16 +176,25 @@ async function lookupUpdates(config) { for (const update of res.updates) { if (config.pinDigests || config.currentDigest) { update.newDigest = await getDigest(config.purl, update.newValue); - update.newDigestShort = update.newDigest.slice(7, 13); + if (update.newDigest) { + update.newDigestShort = update.newDigest.slice(7, 13); + } else { + logger.info( + { purl: config.purl, newValue: update.newValue }, + 'Could not getDigest' + ); + } } } } // Strip out any non-changed ones - res.updates = res.updates.filter( - update => - update.newValue !== config.currentValue || - update.newDigest !== config.currentDigest - ); + res.updates = res.updates + .filter(update => update.newDigest !== null) + .filter( + update => + update.newValue !== config.currentValue || + update.newDigest !== config.currentDigest + ); if (res.updates.some(update => update.updateType === 'pin')) { for (const update of res.updates) { if (update.updateType !== 'pin' && update.updateType !== 'rollback') { diff --git a/test/workers/repository/process/lookup/index.spec.js b/test/workers/repository/process/lookup/index.spec.js index 5738e1abe053210fccf7d7e18880655ff5dd7070..98f1822ed1cbe605aa73885a757e4a5b16a67e31 100644 --- a/test/workers/repository/process/lookup/index.spec.js +++ b/test/workers/repository/process/lookup/index.spec.js @@ -931,6 +931,28 @@ describe('manager/npm/lookup', () => { const res = await lookup.lookupUpdates(config); expect(res).toMatchSnapshot(); }); + it('handles digest lookup failure', async () => { + config.currentValue = 'alpine'; + config.depName = 'node'; + config.purl = 'pkg:docker/node'; + config.pinDigests = true; + docker.getDependency.mockReturnValueOnce({ + releases: [ + { + version: '8.0.0', + }, + { + version: '8.1.0', + }, + { + version: 'alpine', + }, + ], + }); + docker.getDigest.mockReturnValueOnce(null); + const res = await lookup.lookupUpdates(config); + expect(res.updates).toHaveLength(0); + }); it('handles digest update', async () => { config.currentValue = '8.0.0'; config.depName = 'node';