diff --git a/lib/manager/bazel/extract.js b/lib/manager/bazel/extract.js index 8c145090475c99cad09d1867357233a34a0b01e0..b5111bb06965fcdfe7f6c3cd0754be1b8c494c4c 100644 --- a/lib/manager/bazel/extract.js +++ b/lib/manager/bazel/extract.js @@ -2,13 +2,13 @@ module.exports = { extractDependencies, }; -function extractDependencies(packageContent) { - const definitions = packageContent.match( +function extractDependencies(content) { + const definitions = content.match( /(git_repository|http_archive)\(([\s\S]*?)\n\)\n?/g ); if (!definitions) { logger.debug('No matching WORKSPACE definitions found'); - return []; + return null; } logger.debug({ definitions }, `Found ${definitions.length} definitions`); const deps = []; @@ -72,5 +72,8 @@ function extractDependencies(packageContent) { ); } }); - return deps; + if (!deps.length) { + return null; + } + return { deps }; } diff --git a/lib/manager/buildkite/extract.js b/lib/manager/buildkite/extract.js index 6445eb57191bc462a38f296a82021fd9b3c855c4..2d3a4bf7d86797be1d52831b380ac09d2dd9b9a8 100644 --- a/lib/manager/buildkite/extract.js +++ b/lib/manager/buildkite/extract.js @@ -21,7 +21,6 @@ function extractDependencies(content) { lineNumber += 1; const [, depName, currentVersion] = depLineMatch; deps.push({ - depType: 'plugins', lineNumber, depName, currentVersion, @@ -35,5 +34,8 @@ function extractDependencies(content) { 'Error extracting buildkite plugins' ); } - return deps; + if (!deps.length) { + return null; + } + return { deps }; } diff --git a/lib/manager/circleci/extract.js b/lib/manager/circleci/extract.js index 151784b4ae6f3ee8f58fe3f426e57922e6cbd951..d163f9487e240b642bee1bb7dcb94d0ef32b37d7 100644 --- a/lib/manager/circleci/extract.js +++ b/lib/manager/circleci/extract.js @@ -25,7 +25,6 @@ function extractDependencies(content) { 'CircleCI docker image' ); deps.push({ - depType: 'CircleCI', lineNumber, currentFrom, changeLogFromVersion: currentFrom, @@ -39,5 +38,8 @@ function extractDependencies(content) { } lineNumber += 1; } - return deps; + if (!deps.length) { + return null; + } + return { deps }; } diff --git a/lib/manager/docker-compose/extract.js b/lib/manager/docker-compose/extract.js index 81ed25ae00d7de8284ca42c942cc6aa070abdc6a..a1f65125c09d62a9174dcbedcb6ec83b3c9190d6 100644 --- a/lib/manager/docker-compose/extract.js +++ b/lib/manager/docker-compose/extract.js @@ -6,7 +6,7 @@ module.exports = { function extractDependencies(content) { logger.debug('docker-compose.extractDependencies()'); - const deps = []; + let deps = []; let lineNumber = 0; for (const line of content.split('\n')) { const match = line.match(/^\s*image:\s*'?"?([^\s'"]+)'?"?\s*$/); @@ -25,7 +25,6 @@ function extractDependencies(content) { 'Docker Compose image' ); deps.push({ - depType: 'Docker Compose', lineNumber, currentFrom, currentDepTagDigest, @@ -38,5 +37,9 @@ function extractDependencies(content) { } lineNumber += 1; } - return deps.filter(dep => !(dep.currentTag && dep.currentTag.includes('${'))); + deps = deps.filter(dep => !(dep.currentTag && dep.currentTag.includes('${'))); + if (!deps.length) { + return null; + } + return { deps }; } diff --git a/lib/manager/docker/extract.js b/lib/manager/docker/extract.js index a5a660afa1f0d9ba15767ae5c0ac469f87c0bfdf..ac2c7cab88876e8478ce3516cb70b5c4a6006e7e 100644 --- a/lib/manager/docker/extract.js +++ b/lib/manager/docker/extract.js @@ -40,7 +40,7 @@ function extractDependencies(content) { if (!fromMatches.length) { logger.info('No FROM found'); logger.debug({ content }); - return []; + return null; } logger.debug({ fromMatches }, 'Found matches'); const stageNames = []; @@ -67,7 +67,6 @@ function extractDependencies(content) { logger.debug({ currentFrom }, 'Skipping alias FROM'); } else { deps.push({ - depType: 'Dockerfile', fromLine, fromPrefix, currentFrom, @@ -81,5 +80,8 @@ function extractDependencies(content) { }); } }); - return deps; + if (!deps.length) { + return null; + } + return { deps }; } diff --git a/lib/manager/meteor/extract.js b/lib/manager/meteor/extract.js index 393a4f286a850c215ce7ef1f8cfdb9908bf771ce..8e3426fc4a3878f774f52f078d75de9b54c816ff 100644 --- a/lib/manager/meteor/extract.js +++ b/lib/manager/meteor/extract.js @@ -2,11 +2,14 @@ module.exports = { extractDependencies, }; -function extractDependencies(packageContent) { +function extractDependencies(content) { let deps = []; + const npmDepends = content.match(/Npm\.depends\({([\s\S]*?)}\);/); + if (!npmDepends) { + return null; + } try { - deps = packageContent - .match(/Npm\.depends\({([\s\S]*?)}\);/)[1] + deps = npmDepends[1] .replace(/(\s|\\n|\\t|'|")/g, '') .split(',') .map(dep => dep.trim()) @@ -16,17 +19,20 @@ function extractDependencies(packageContent) { const [depName, currentVersion] = arr; // istanbul ignore if if (!(depName && currentVersion)) { - logger.warn({ packageContent }, 'Incomplete npm.depends match'); + logger.warn({ content }, 'Incomplete npm.depends match'); } return { - depType: 'npmDepends', depName, currentVersion, }; }) .filter(dep => dep.depName && dep.currentVersion); - } catch (err) { - logger.warn({ packageContent }, 'Failed to parse meteor package.js'); + } catch (err) /* istanbul ignore next */ { + logger.warn({ content }, 'Failed to parse meteor package.js'); + } + // istanbul ignore if + if (!deps.length) { + return null; } - return deps; + return { deps }; } diff --git a/lib/manager/npm/extract.js b/lib/manager/npm/extract.js index e986541fc808486a612aafb6dfaebf1e56688de6..fb93f555cbcca90e4b663220109d3b7f632d95a1 100644 --- a/lib/manager/npm/extract.js +++ b/lib/manager/npm/extract.js @@ -12,7 +12,7 @@ function extractDependencies(packageJson, config) { const depNames = packageJson[depType] ? Object.keys(packageJson[depType]) : []; - return depNames + const deps = depNames .map(depName => { const currentVersion = packageJson[depType][depName] ? `${packageJson[depType][depName]}`.trim().replace(/^=/, '') @@ -58,4 +58,5 @@ function extractDependencies(packageJson, config) { }; }) .filter(dep => dep.currentVersion); + return { deps }; } diff --git a/lib/manager/nvm/extract.js b/lib/manager/nvm/extract.js index 9d2111943345bc66b17527b0cc451a9146a30bb2..4c0af583bfc6bf3ffeb9cca5ce4ef8e9dbf04401 100644 --- a/lib/manager/nvm/extract.js +++ b/lib/manager/nvm/extract.js @@ -2,12 +2,12 @@ module.exports = { extractDependencies, }; -function extractDependencies(packageContent) { - return [ +function extractDependencies(content) { + const deps = [ { depName: 'node', - depType: '.nvmrc', - currentVersion: packageContent.trim(), + currentVersion: content.trim(), }, ]; + return { deps }; } diff --git a/lib/manager/pip_requirements/extract.js b/lib/manager/pip_requirements/extract.js index 1d55b22e63c03ca0c5ae3913b516546e6515cd83..534c72639ff5cb79079c3a6ff7a4484120f2e71d 100644 --- a/lib/manager/pip_requirements/extract.js +++ b/lib/manager/pip_requirements/extract.js @@ -6,7 +6,7 @@ module.exports = { extractDependencies, }; -function extractDependencies(fileContent) { +function extractDependencies(content) { logger.debug('pip_requirements.extractDependencies()'); // TODO: for now we only support semver, but we need better support for python versions // see https://github.com/pypa/packaging/blob/master/packaging/version.py @@ -15,18 +15,21 @@ function extractDependencies(fileContent) { `^${packagePattern}==([0-9]+\\.[0-9]+\\.[0-9]+)$`, 'g' ); - return fileContent + const deps = content .split('\n') .map((line, lineNumber) => { const matches = regex.exec(line); return ( matches && { depName: matches[1], - depType: 'python', currentVersion: matches[2], lineNumber, } ); }) .filter(Boolean); + if (!deps.length) { + return null; + } + return { deps }; } diff --git a/lib/manager/travis/extract.js b/lib/manager/travis/extract.js index 19f8bc860b76d452b8a4d4c37d88edf2683d43ba..866a5200e17e70fb4935766173436add9b2cb1b1 100644 --- a/lib/manager/travis/extract.js +++ b/lib/manager/travis/extract.js @@ -4,16 +4,19 @@ module.exports = { extractDependencies, }; -function extractDependencies(packageContent) { - const doc = yaml.safeLoad(packageContent); +function extractDependencies(content) { + const doc = yaml.safeLoad(content); + let deps = []; if (doc && Array.isArray(doc.node_js)) { - return [ + deps = [ { depName: 'node', - depType: '.travis.yml', currentVersion: doc.node_js, }, ]; } - return []; + if (!deps.length) { + return null; + } + return { deps }; } diff --git a/lib/workers/package-file/dep-type.js b/lib/workers/package-file/dep-type.js index fc045a5f26d6ccd114bd242fbf7483a0af917c5d..4758e1a172f18df8ff1887ad2e1d6013346a8ade 100644 --- a/lib/workers/package-file/dep-type.js +++ b/lib/workers/package-file/dep-type.js @@ -20,7 +20,13 @@ async function renovateDepType(packageContent, config) { logger.debug('depType is disabled'); return []; } - let deps = await extractDependencies(packageContent, config); + const res = await extractDependencies(packageContent, config); + let deps; + if (res) { + ({ deps } = res); + } else { + deps = []; + } if (config.lerna || config.workspaces || config.workspaceDir) { deps = deps.filter( dependency => config.monorepoPackages.indexOf(dependency.depName) === -1 diff --git a/test/manager/bazel/extract.spec.js b/test/manager/bazel/extract.spec.js index 4f9f1a824e489111f9f6b022ce450f28a08511a0..b635500b776bd02cfdf704e8aa84c667c213ac38 100644 --- a/test/manager/bazel/extract.spec.js +++ b/test/manager/bazel/extract.spec.js @@ -12,20 +12,20 @@ describe('lib/manager/bazel/extract', () => { beforeEach(() => { config = {}; }); - it('returns empty if fails to pass', () => { + it('returns empty if fails to parse', () => { const res = extractDependencies('blahhhhh:foo:@what\n', config); - expect(res).toEqual([]); + expect(res).toBe(null); }); it('returns empty if cannot parse dependency', () => { const res = extractDependencies( 'git_repository(\n nothing\n)\n', config ); - expect(res).toEqual([]); + expect(res).toBe(null); }); it('extracts multiple types of dependencies', () => { const res = extractDependencies(workspaceFile, config); - expect(res).toMatchSnapshot(); + expect(res.deps).toMatchSnapshot(); }); }); }); diff --git a/test/manager/buildkite/__snapshots__/extract.spec.js.snap b/test/manager/buildkite/__snapshots__/extract.spec.js.snap index 030fecf4c172ab5b5a18d45c0eae1f8a0e4c8888..09563294bac39b0297a67cb913fe397c621814fa 100644 --- a/test/manager/buildkite/__snapshots__/extract.spec.js.snap +++ b/test/manager/buildkite/__snapshots__/extract.spec.js.snap @@ -5,13 +5,11 @@ Array [ Object { "currentVersion": "v1.3.2", "depName": "docker-compose", - "depType": "plugins", "lineNumber": 4, }, Object { "currentVersion": "v1.3.2", "depName": "docker-compose", - "depType": "plugins", "lineNumber": 15, }, ] @@ -22,7 +20,6 @@ Array [ Object { "currentVersion": "v2.0.0", "depName": "detect-clowns", - "depType": "plugins", "lineNumber": 2, }, ] diff --git a/test/manager/buildkite/extract.spec.js b/test/manager/buildkite/extract.spec.js index 6afd9f27dec3ec4c59f6cd11861eca256e4a828a..cd4c1d5ff49c3ae129ab9fce034a578328161566 100644 --- a/test/manager/buildkite/extract.spec.js +++ b/test/manager/buildkite/extract.spec.js @@ -18,13 +18,16 @@ describe('lib/manager/buildkite/extract', () => { beforeEach(() => { config = {}; }); + it('returns null for empty', () => { + expect(extractDependencies('nothing here', config)).toBe(null); + }); it('extracts simple single plugin', () => { - const res = extractDependencies(pipeline1, config); + const res = extractDependencies(pipeline1, config).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(1); }); it('extracts multiple plugins in same file', () => { - const res = extractDependencies(pipeline2, config); + const res = extractDependencies(pipeline2, config).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(2); }); diff --git a/test/manager/circleci/__snapshots__/extract.spec.js.snap b/test/manager/circleci/__snapshots__/extract.spec.js.snap index 73b666d312974fc4dbadee071c14ca999c639428..e5591adca821d225adfbee9e0bd9d8db396cfcce 100644 --- a/test/manager/circleci/__snapshots__/extract.spec.js.snap +++ b/test/manager/circleci/__snapshots__/extract.spec.js.snap @@ -10,7 +10,6 @@ Array [ "currentFrom": "node", "currentTag": undefined, "depName": "node", - "depType": "CircleCI", "dockerRegistry": undefined, "lineNumber": 12, }, @@ -22,7 +21,6 @@ Array [ "currentFrom": "node:4", "currentTag": "4", "depName": "node", - "depType": "CircleCI", "dockerRegistry": undefined, "lineNumber": 57, }, @@ -34,7 +32,6 @@ Array [ "currentFrom": "node:6", "currentTag": "6", "depName": "node", - "depType": "CircleCI", "dockerRegistry": undefined, "lineNumber": 61, }, @@ -46,7 +43,6 @@ Array [ "currentFrom": "node:8.9.0", "currentTag": "8.9.0", "depName": "node", - "depType": "CircleCI", "dockerRegistry": undefined, "lineNumber": 65, }, diff --git a/test/manager/circleci/extract.spec.js b/test/manager/circleci/extract.spec.js index 4bb0c02b46ca502cd53824f2acf2c6b1e374afbf..bfd13a5e924f8d719e93192f39a653cb6b21cb84 100644 --- a/test/manager/circleci/extract.spec.js +++ b/test/manager/circleci/extract.spec.js @@ -11,10 +11,13 @@ describe('lib/manager/circleci/extract', () => { beforeEach(() => { config = {}; }); + it('returns null for empty', () => { + expect(extractDependencies('nothing here', config)).toBe(null); + }); it('extracts multiple image lines', () => { const res = extractDependencies(yamlFile, config); - expect(res).toMatchSnapshot(); - expect(res).toHaveLength(4); + expect(res.deps).toMatchSnapshot(); + expect(res.deps).toHaveLength(4); }); }); }); diff --git a/test/manager/docker-compose/__snapshots__/extract.spec.js.snap b/test/manager/docker-compose/__snapshots__/extract.spec.js.snap index 37e53650f76101bc8fc697052c63238ff9262386..742c0d62287891b3b3dff4917afd596b0ec102b8 100644 --- a/test/manager/docker-compose/__snapshots__/extract.spec.js.snap +++ b/test/manager/docker-compose/__snapshots__/extract.spec.js.snap @@ -9,7 +9,6 @@ Array [ "currentFrom": "quay.io/something/redis:alpine", "currentTag": "alpine", "depName": "something/redis", - "depType": "Docker Compose", "dockerRegistry": "quay.io", "lineNumber": 4, }, @@ -20,7 +19,6 @@ Array [ "currentFrom": "postgres:9.4.0", "currentTag": "9.4.0", "depName": "postgres", - "depType": "Docker Compose", "dockerRegistry": undefined, "lineNumber": 18, }, @@ -31,7 +29,6 @@ Array [ "currentFrom": "dockersamples/examplevotingapp_vote:before", "currentTag": "before", "depName": "dockersamples/examplevotingapp_vote", - "depType": "Docker Compose", "dockerRegistry": undefined, "lineNumber": 28, }, @@ -42,7 +39,6 @@ Array [ "currentFrom": "dockersamples/examplevotingapp_result:before", "currentTag": "before", "depName": "dockersamples/examplevotingapp_result", - "depType": "Docker Compose", "dockerRegistry": undefined, "lineNumber": 43, }, @@ -53,7 +49,6 @@ Array [ "currentFrom": "dockersamples/examplevotingapp_worker", "currentTag": undefined, "depName": "dockersamples/examplevotingapp_worker", - "depType": "Docker Compose", "dockerRegistry": undefined, "lineNumber": 59, }, @@ -64,7 +59,6 @@ Array [ "currentFrom": "dockersamples/visualizer:stable", "currentTag": "stable", "depName": "dockersamples/visualizer", - "depType": "Docker Compose", "dockerRegistry": undefined, "lineNumber": 76, }, diff --git a/test/manager/docker-compose/extract.spec.js b/test/manager/docker-compose/extract.spec.js index c2062d48eb3a3a39ffc3d63a964b87a2c37d2332..ff2d129106b3ea2791a4f7edad9ba0e0498f6e54 100644 --- a/test/manager/docker-compose/extract.spec.js +++ b/test/manager/docker-compose/extract.spec.js @@ -14,10 +14,13 @@ describe('lib/manager/docker-compose/extract', () => { beforeEach(() => { config = {}; }); + it('returns null for empty', () => { + expect(extractDependencies('nothing here', config)).toBe(null); + }); it('extracts multiple image lines', () => { const res = extractDependencies(yamlFile, config); - expect(res).toMatchSnapshot(); - expect(res).toHaveLength(6); + expect(res.deps).toMatchSnapshot(); + expect(res.deps).toHaveLength(6); }); }); }); diff --git a/test/manager/docker/__snapshots__/extract.spec.js.snap b/test/manager/docker/__snapshots__/extract.spec.js.snap index f7cb2da2b454d1fbe53ed757c11b761edb95dbcd..0919754ae82ff700862cb98ac029c6d960cfb045 100644 --- a/test/manager/docker/__snapshots__/extract.spec.js.snap +++ b/test/manager/docker/__snapshots__/extract.spec.js.snap @@ -9,7 +9,6 @@ Array [ "currentFrom": "node:6.12.3", "currentTag": "6.12.3", "depName": "node", - "depType": "Dockerfile", "dockerRegistry": undefined, "fromLine": "FROM node:6.12.3 as frontend", "fromPrefix": "FROM", @@ -22,7 +21,6 @@ Array [ "currentFrom": "python:3.6-slim", "currentTag": "3.6-slim", "depName": "python", - "depType": "Dockerfile", "dockerRegistry": undefined, "fromLine": "FROM python:3.6-slim", "fromPrefix": "FROM", @@ -40,7 +38,6 @@ Array [ "currentFrom": "registry.allmine.info:5005/node:8.7.0", "currentTag": "8.7.0", "depName": "node", - "depType": "Dockerfile", "dockerRegistry": "registry.allmine.info:5005", "fromLine": "FROM registry.allmine.info:5005/node:8.7.0", "fromPrefix": "FROM", @@ -58,7 +55,6 @@ Array [ "currentFrom": "node", "currentTag": undefined, "depName": "node", - "depType": "Dockerfile", "dockerRegistry": undefined, "fromLine": "FROM node", "fromPrefix": "FROM", @@ -76,7 +72,6 @@ Array [ "currentFrom": "registry2.something.info/node:8", "currentTag": "8", "depName": "node", - "depType": "Dockerfile", "dockerRegistry": "registry2.something.info", "fromLine": "FROM registry2.something.info/node:8", "fromPrefix": "FROM", @@ -94,7 +89,6 @@ Array [ "currentFrom": "registry2.something.info/someaccount/node:8", "currentTag": "8", "depName": "someaccount/node", - "depType": "Dockerfile", "dockerRegistry": "registry2.something.info", "fromLine": "FROM registry2.something.info/someaccount/node:8", "fromPrefix": "FROM", @@ -112,7 +106,6 @@ Array [ "currentFrom": "registry2.something.info:5005/node:8", "currentTag": "8", "depName": "node", - "depType": "Dockerfile", "dockerRegistry": "registry2.something.info:5005", "fromLine": "FROM registry2.something.info:5005/node:8", "fromPrefix": "FROM", @@ -130,7 +123,6 @@ Array [ "currentFrom": "node@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063", "currentTag": undefined, "depName": "node", - "depType": "Dockerfile", "dockerRegistry": undefined, "fromLine": "FROM node@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063", "fromPrefix": "FROM", @@ -148,7 +140,6 @@ Array [ "currentFrom": "node:8.9.0-alpine", "currentTag": "8.9.0-alpine", "depName": "node", - "depType": "Dockerfile", "dockerRegistry": undefined, "fromLine": "FROM node:8.9.0-alpine as base", "fromPrefix": "FROM", @@ -166,7 +157,6 @@ Array [ "currentFrom": "node", "currentTag": undefined, "depName": "node", - "depType": "Dockerfile", "dockerRegistry": undefined, "fromLine": "FROM node", "fromPrefix": "FROM", @@ -184,7 +174,6 @@ Array [ "currentFrom": "mynamespace/node:8", "currentTag": "8", "depName": "mynamespace/node", - "depType": "Dockerfile", "dockerRegistry": undefined, "fromLine": "FROM mynamespace/node:8", "fromPrefix": "FROM", @@ -202,7 +191,6 @@ Array [ "currentFrom": "node:8.9.0-alpine", "currentTag": "8.9.0-alpine", "depName": "node", - "depType": "Dockerfile", "dockerRegistry": undefined, "fromLine": "FROM node:8.9.0-alpine", "fromPrefix": "FROM", @@ -220,7 +208,6 @@ Array [ "currentFrom": "node:8.9.0@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063", "currentTag": "8.9.0", "depName": "node", - "depType": "Dockerfile", "dockerRegistry": undefined, "fromLine": "FROM node:8.9.0@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063", "fromPrefix": "FROM", @@ -238,7 +225,6 @@ Array [ "currentFrom": "node", "currentTag": undefined, "depName": "node", - "depType": "Dockerfile", "dockerRegistry": undefined, "fromLine": "From node", "fromPrefix": "From", @@ -256,7 +242,6 @@ Array [ "currentFrom": "node:6.12.3", "currentTag": "6.12.3", "depName": "node", - "depType": "Dockerfile", "dockerRegistry": undefined, "fromLine": "FROM node:6.12.3 as frontend", "fromPrefix": "FROM", diff --git a/test/manager/docker/extract.spec.js b/test/manager/docker/extract.spec.js index c44e17038fa9ecb3b195e654b51407d9071c7e70..77d4e48aa5233d610c3da1c7e17a1e9eacb2e24f 100644 --- a/test/manager/docker/extract.spec.js +++ b/test/manager/docker/extract.spec.js @@ -7,36 +7,36 @@ describe('lib/manager/docker/extract', () => { config = {}; }); it('handles naked dep', () => { - const res = extractDependencies('FROM node\n', config); + const res = extractDependencies('FROM node\n', config).deps; expect(res).toMatchSnapshot(); }); it('is case insensitive', () => { - const res = extractDependencies('From node\n', config); + const res = extractDependencies('From node\n', config).deps; expect(res).toMatchSnapshot(); }); it('handles tag', () => { - const res = extractDependencies('FROM node:8.9.0-alpine\n', config); + const res = extractDependencies('FROM node:8.9.0-alpine\n', config).deps; expect(res).toMatchSnapshot(); }); it('handles digest', () => { const res = extractDependencies( 'FROM node@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063\n', config - ); + ).deps; expect(res).toMatchSnapshot(); }); it('handles tag and digest', () => { const res = extractDependencies( 'FROM node:8.9.0@sha256:eb85fc5b1198f5e1ec025ea07586bdbbf397e7d82df66c90d7511f533517e063\n', config - ); + ).deps; expect(res).toMatchSnapshot(); }); it('handles from as', () => { const res = extractDependencies( 'FROM node:8.9.0-alpine as base\n', config - ); + ).deps; expect(res).toMatchSnapshot(); // expect(res.currentTag.includes(' ')).toBe(false); }); @@ -44,14 +44,14 @@ describe('lib/manager/docker/extract', () => { const res = extractDependencies( '# some comment\n# another\n\nFROM node\n', config - ); + ).deps; expect(res).toMatchSnapshot(); }); it('handles custom hosts', () => { const res = extractDependencies( 'FROM registry2.something.info/node:8\n', config - ); + ).deps; expect(res).toMatchSnapshot(); expect(res[0].dockerRegistry).toEqual('registry2.something.info'); }); @@ -59,12 +59,12 @@ describe('lib/manager/docker/extract', () => { const res = extractDependencies( 'FROM registry2.something.info:5005/node:8\n', config - ); + ).deps; expect(res).toMatchSnapshot(); expect(res[0].dockerRegistry).toEqual('registry2.something.info:5005'); }); it('handles namespaced images', () => { - const res = extractDependencies('FROM mynamespace/node:8\n', config); + const res = extractDependencies('FROM mynamespace/node:8\n', config).deps; expect(res).toMatchSnapshot(); expect(res[0].dockerRegistry).toBeUndefined(); }); @@ -72,7 +72,7 @@ describe('lib/manager/docker/extract', () => { const res = extractDependencies( 'FROM registry2.something.info/someaccount/node:8\n', config - ); + ).deps; expect(res).toMatchSnapshot(); expect(res[0].dockerRegistry).toEqual('registry2.something.info'); expect(res[0].depName).toEqual('someaccount/node'); @@ -80,26 +80,26 @@ describe('lib/manager/docker/extract', () => { it('handles abnoral spacing', () => { const res = extractDependencies( 'FROM registry.allmine.info:5005/node:8.7.0\n\n' - ); + ).deps; expect(res).toMatchSnapshot(); }); it('extracts multiple FROM tags', () => { const res = extractDependencies( 'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nFROM python:3.6-slim\n', config - ); + ).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(2); }); it('skips scratchs', () => { const res = extractDependencies('FROM scratch\nADD foo\n', config); - expect(res).toHaveLength(0); + expect(res).toBe(null); }); it('skips named multistage FROM tags', () => { const res = extractDependencies( 'FROM node:6.12.3 as frontend\n\n# comment\nENV foo=bar\nFROM frontend\n', config - ); + ).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(1); }); diff --git a/test/manager/npm/extract.spec.js b/test/manager/npm/extract.spec.js index a2c31952cc4bb075106b415ecd05c70ecfc18141..a0514565cffb720d9102c6d2aca663db069e4316 100644 --- a/test/manager/npm/extract.spec.js +++ b/test/manager/npm/extract.spec.js @@ -21,7 +21,7 @@ describe('manager/npm/extract', () => { const extractedDependencies = npmExtract.extractDependencies( JSON.parse(input01Content), config - ); + ).deps; extractedDependencies.should.be.instanceof(Array); extractedDependencies.should.have.length(6); }); @@ -32,7 +32,7 @@ describe('manager/npm/extract', () => { const extractedDependencies = npmExtract.extractDependencies( JSON.parse(input01Content), config - ); + ).deps; extractedDependencies.should.be.instanceof(Array); extractedDependencies.should.have.length(4); }); @@ -43,7 +43,7 @@ describe('manager/npm/extract', () => { const extractedDependencies = npmExtract.extractDependencies( JSON.parse(input01Content), config - ); + ).deps; expect(extractedDependencies).toMatchSnapshot(); extractedDependencies .every(dep => dep.depType && dep.depName && dep.currentVersion) @@ -56,7 +56,7 @@ describe('manager/npm/extract', () => { const extractedDependencies = npmExtract.extractDependencies( JSON.parse(input02Content), config - ); + ).deps; extractedDependencies.should.be.instanceof(Array); extractedDependencies.should.have.length(6); }); @@ -67,7 +67,7 @@ describe('manager/npm/extract', () => { const extractedDependencies = npmExtract.extractDependencies( JSON.parse(input02Content), config - ); + ).deps; extractedDependencies.should.be.instanceof(Array); extractedDependencies.should.have.length(0); }); @@ -82,7 +82,7 @@ describe('manager/npm/extract', () => { const extractedDependencies = npmExtract.extractDependencies( { dependencies: { chalk: '^2.0.0', foo: '^1.0.0' } }, config - ); + ).deps; extractedDependencies.should.be.instanceof(Array); extractedDependencies.should.have.length(2); expect(extractedDependencies[0].lockedVersion).toBeDefined(); @@ -99,7 +99,7 @@ describe('manager/npm/extract', () => { const extractedDependencies = npmExtract.extractDependencies( { dependencies: { chalk: '^2.0.0', foo: '^1.0.0' } }, config - ); + ).deps; extractedDependencies.should.be.instanceof(Array); extractedDependencies.should.have.length(2); expect(extractedDependencies[0].lockedVersion).toBeDefined(); @@ -113,7 +113,7 @@ describe('manager/npm/extract', () => { const extractedDependencies = npmExtract.extractDependencies( { dependencies: { chalk: '^2.0.0', foo: '^1.0.0' } }, config - ); + ).deps; extractedDependencies.should.be.instanceof(Array); extractedDependencies.should.have.length(2); expect(extractedDependencies[0].lockedVersion).toBeUndefined(); diff --git a/test/manager/nvm/__snapshots__/extract.spec.js.snap b/test/manager/nvm/__snapshots__/extract.spec.js.snap index 1b783d2a472554b8ecbe40794794c87bc50aca59..74b8f55055473e56c1ff22569bceb4b13185b3ba 100644 --- a/test/manager/nvm/__snapshots__/extract.spec.js.snap +++ b/test/manager/nvm/__snapshots__/extract.spec.js.snap @@ -5,7 +5,6 @@ Array [ Object { "currentVersion": "8.4.0", "depName": "node", - "depType": ".nvmrc", }, ] `; diff --git a/test/manager/nvm/extract.spec.js b/test/manager/nvm/extract.spec.js index d13e4d2d45346fe88ee23e36090b0a7cd2187458..55f9480e7de8972d716033dbe4f198e3d52b8fec 100644 --- a/test/manager/nvm/extract.spec.js +++ b/test/manager/nvm/extract.spec.js @@ -4,7 +4,7 @@ describe('lib/manager/nvm/extract', () => { describe('extractDependencies()', () => { it('returns a result', () => { const res = extractDependencies('8.4.0\n'); - expect(res).toMatchSnapshot(); + expect(res.deps).toMatchSnapshot(); }); }); }); diff --git a/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap b/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap index f54547d2ec5c617261b0bd355f25b59c65117eff..f63886ce8f4661b25249d67aeeba3198d74d2a5a 100644 --- a/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap +++ b/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap @@ -5,7 +5,6 @@ Array [ Object { "currentVersion": "0.3.1", "depName": "some-package", - "depType": "python", "lineNumber": 2, }, ] diff --git a/test/manager/pip_requirements/extract.spec.js b/test/manager/pip_requirements/extract.spec.js index a775ba5644c486386d3ab2783a870c4e31cc573d..28e4f5c4651fe82fcee053f7dd3a45cadf917342 100644 --- a/test/manager/pip_requirements/extract.spec.js +++ b/test/manager/pip_requirements/extract.spec.js @@ -14,8 +14,11 @@ describe('lib/manager/pip_requirements/extract', () => { beforeEach(() => { config = {}; }); + it('returns null for empty', () => { + expect(extractDependencies('nothing here', config)).toBe(null); + }); it('extracts dependencies', () => { - const res = extractDependencies(requirements, config); + const res = extractDependencies(requirements, config).deps; expect(res).toMatchSnapshot(); expect(res).toHaveLength(1); }); diff --git a/test/manager/travis/extract.spec.js b/test/manager/travis/extract.spec.js index 026adea6ef10b9fa9d3a2605022edf4e0ee4d1db..ca8038bac4c23b0d67d30df4af053f563165d7b0 100644 --- a/test/manager/travis/extract.spec.js +++ b/test/manager/travis/extract.spec.js @@ -6,9 +6,9 @@ describe('lib/manager/travis/extract', () => { beforeEach(() => { config = {}; }); - it('returns empty if fails to pass', () => { + it('returns empty if fails to parse', () => { const res = extractDependencies('blahhhhh:foo:@what\n', config); - expect(res).toEqual([]); + expect(res).toBe(null); }); }); }); diff --git a/test/workers/package-file/dep-type.spec.js b/test/workers/package-file/dep-type.spec.js index 327c00582f842c3089ee2fc1dda186e8f76a5421..c92bf6dfdfb5acb76a9371efe3f1612a8d0084b6 100644 --- a/test/workers/package-file/dep-type.spec.js +++ b/test/workers/package-file/dep-type.spec.js @@ -27,25 +27,21 @@ describe('lib/workers/package-file/dep-type', () => { expect(res).toMatchObject([]); }); it('returns empty if no deps found', async () => { - npmExtract.extractDependencies.mockReturnValueOnce([]); + npmExtract.extractDependencies.mockReturnValueOnce(null); const res = await depTypeWorker.renovateDepType({}, config); expect(res).toMatchObject([]); }); it('returns empty if all deps are filtered', async () => { - npmExtract.extractDependencies.mockReturnValueOnce([ - { depName: 'a' }, - { depName: 'b' }, - { depName: 'e' }, - ]); + npmExtract.extractDependencies.mockReturnValueOnce({ + deps: [{ depName: 'a' }, { depName: 'b' }, { depName: 'e' }], + }); const res = await depTypeWorker.renovateDepType({}, config); expect(res).toMatchObject([]); }); it('returns combined upgrades if all deps are filtered', async () => { - npmExtract.extractDependencies.mockReturnValueOnce([ - { depName: 'a' }, - { depName: 'c' }, - { depName: 'd' }, - ]); + npmExtract.extractDependencies.mockReturnValueOnce({ + deps: [{ depName: 'a' }, { depName: 'c' }, { depName: 'd' }], + }); const res = await depTypeWorker.renovateDepType({}, config); expect(res).toHaveLength(2); });