From 19e35ffee0af8bea522a1172b4c6aed68f23c790 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Thu, 3 May 2018 18:09:18 +0200 Subject: [PATCH] refactor: return object from extract (#1914) --- lib/manager/bazel/extract.js | 11 ++++--- lib/manager/buildkite/extract.js | 6 ++-- lib/manager/circleci/extract.js | 6 ++-- lib/manager/docker-compose/extract.js | 9 ++++-- lib/manager/docker/extract.js | 8 +++-- lib/manager/meteor/extract.js | 22 +++++++++----- lib/manager/npm/extract.js | 3 +- lib/manager/nvm/extract.js | 8 ++--- lib/manager/pip_requirements/extract.js | 9 ++++-- lib/manager/travis/extract.js | 13 ++++---- lib/workers/package-file/dep-type.js | 8 ++++- test/manager/bazel/extract.spec.js | 8 ++--- .../__snapshots__/extract.spec.js.snap | 3 -- test/manager/buildkite/extract.spec.js | 7 +++-- .../__snapshots__/extract.spec.js.snap | 4 --- test/manager/circleci/extract.spec.js | 7 +++-- .../__snapshots__/extract.spec.js.snap | 6 ---- test/manager/docker-compose/extract.spec.js | 7 +++-- .../docker/__snapshots__/extract.spec.js.snap | 15 ---------- test/manager/docker/extract.spec.js | 30 +++++++++---------- test/manager/npm/extract.spec.js | 16 +++++----- .../nvm/__snapshots__/extract.spec.js.snap | 1 - test/manager/nvm/extract.spec.js | 2 +- .../__snapshots__/extract.spec.js.snap | 1 - test/manager/pip_requirements/extract.spec.js | 5 +++- test/manager/travis/extract.spec.js | 4 +-- test/workers/package-file/dep-type.spec.js | 18 +++++------ 27 files changed, 123 insertions(+), 114 deletions(-) diff --git a/lib/manager/bazel/extract.js b/lib/manager/bazel/extract.js index 8c14509047..b5111bb069 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 6445eb5719..2d3a4bf7d8 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 151784b4ae..d163f9487e 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 81ed25ae00..a1f65125c0 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 a5a660afa1..ac2c7cab88 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 393a4f286a..8e3426fc4a 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 e986541fc8..fb93f555cb 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 9d21119433..4c0af583bf 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 1d55b22e63..534c72639f 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 19f8bc860b..866a5200e1 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 fc045a5f26..4758e1a172 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 4f9f1a824e..b635500b77 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 030fecf4c1..09563294ba 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 6afd9f27de..cd4c1d5ff4 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 73b666d312..e5591adca8 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 4bb0c02b46..bfd13a5e92 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 37e53650f7..742c0d6228 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 c2062d48eb..ff2d129106 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 f7cb2da2b4..0919754ae8 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 c44e17038f..77d4e48aa5 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 a2c31952cc..a0514565cf 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 1b783d2a47..74b8f55055 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 d13e4d2d45..55f9480e7d 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 f54547d2ec..f63886ce8f 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 a775ba5644..28e4f5c465 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 026adea6ef..ca8038bac4 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 327c00582f..c92bf6dfdf 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); }); -- GitLab