diff --git a/lib/workers/dep-type/index.js b/lib/workers/dep-type/index.js index 18bf36f4a9a23c25c7a51574cdaa6abac1dd2a7c..2fbeb8eecca1f07ae7bc3910cb4829b9dee06db1 100644 --- a/lib/workers/dep-type/index.js +++ b/lib/workers/dep-type/index.js @@ -28,16 +28,20 @@ async function renovateDepType(packageContent, config) { logger.debug(`deps length is ${deps.length}`); logger.debug({ deps }, `deps`); } else if (config.packageFile.endsWith('package.js')) { - deps = packageContent - .match(/Npm\.depends\({([\s\S]*?)}\);/)[1] - .replace(/(\s|\\n|\\t|'|")/g, '') - .split(',') - .map(dep => dep.split(/:(.*)/)) - .map(arr => ({ - depType: 'npmDepends', - depName: arr[0], - currentVersion: arr[1], - })); + try { + deps = packageContent + .match(/Npm\.depends\({([\s\S]*?)}\);/)[1] + .replace(/(\s|\\n|\\t|'|")/g, '') + .split(',') + .map(dep => dep.split(/:(.*)/)) + .map(arr => ({ + depType: 'npmDepends', + depName: arr[0], + currentVersion: arr[1], + })); + } catch (err) { + logger.warn({ packageContent }, 'Failed to parse meteor package.js'); + } } else if (config.packageFile.endsWith('Dockerfile')) { const [imagetag, currentDigest] = config.currentFrom.split('@'); const [depName, currentTag] = imagetag.split(':'); diff --git a/test/workers/dep-type/index.spec.js b/test/workers/dep-type/index.spec.js index 964fa64424b51cf5b3846d5992c2da93cd73463a..80d1a8717a36efa1d811d64d07a4c74966370224 100644 --- a/test/workers/dep-type/index.spec.js +++ b/test/workers/dep-type/index.spec.js @@ -58,6 +58,12 @@ describe('lib/workers/dep-type/index', () => { const res = await depTypeWorker.renovateDepType(content, config); expect(res).toHaveLength(6); }); + it('handles malformed meteor', async () => { + config.packageFile = 'package.js'; + const content = 'blah'; + const res = await depTypeWorker.renovateDepType(content, config); + expect(res).toHaveLength(0); + }); it('returns upgrades for docker', async () => { config.packageFile = 'Dockerfile'; config.currentFrom = 'node';