From fc48fac138ed56b56fc0f9162913c035bb19409d Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Fri, 1 Jun 2018 18:11:39 +0200 Subject: [PATCH] fix: ignore unknown engines fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ignores any engines fields in package.json that aren’t node, npm or yarn. Closes #2059 --- lib/manager/npm/extract/index.js | 22 ++++++++++++++----- .../extract/__snapshots__/index.spec.js.snap | 16 +++++++++++++- test/manager/npm/extract/index.spec.js | 4 +++- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/lib/manager/npm/extract/index.js b/lib/manager/npm/extract/index.js index d11118345f..1f6f5f5674 100644 --- a/lib/manager/npm/extract/index.js +++ b/lib/manager/npm/extract/index.js @@ -110,13 +110,23 @@ async function extractDependencies(content, packageFile, config) { }; // TODO: do we need to remove the equals? dep.currentVersion = version.trim().replace(/^=/, ''); - if (dep.currentVersion.startsWith('file:')) { + if (depType === 'engines') { + if (depName === 'node') { + dep.purl = 'pkg:github/nodejs/node?clean=true'; + } else if (depName === 'yarn') { + dep.purl = 'pkg:github/yarnpkg/yarn?clean=true'; + dep.commitMessageTopic = 'Yarn'; + } else if (depName === 'npm') { + dep.purl = 'pkg:github/npm/npm?clean=true'; + dep.commitMessageTopic = 'npm'; + } else { + dep.skipReason = 'unknown-engines'; + } + if (!semver.isValid(dep.currentVersion)) { + dep.skipReason = 'unknown-version'; + } + } else if (dep.currentVersion.startsWith('file:')) { dep.skipReason = 'file'; - } else if (depType === 'engines' && depName === 'node') { - dep.purl = 'pkg:github/nodejs/node?clean=true'; - } else if (depType === 'engines' && depName === 'yarn') { - dep.purl = 'pkg:github/yarnpkg/yarn?clean=true'; - dep.commitMessageTopic = 'Yarn'; } else if (semver.isValid(dep.currentVersion)) { dep.purl = `pkg:npm/${depName.replace('@', '%40')}`; if (dep.currentVersion === '*') { diff --git a/test/manager/npm/extract/__snapshots__/index.spec.js.snap b/test/manager/npm/extract/__snapshots__/index.spec.js.snap index 4e090bbc9e..70f912d939 100644 --- a/test/manager/npm/extract/__snapshots__/index.spec.js.snap +++ b/test/manager/npm/extract/__snapshots__/index.spec.js.snap @@ -34,6 +34,12 @@ Object { "depType": "devDependencies", "skipReason": "unknown-version", }, + Object { + "currentVersion": ">=1.7.0 <2.0.0", + "depName": "atom", + "depType": "engines", + "skipReason": "unknown-engines", + }, Object { "commitMessageTopic": "Node.js", "currentVersion": ">= 8.9.2", @@ -44,12 +50,20 @@ Object { }, "purl": "pkg:github/nodejs/node?clean=true", }, + Object { + "commitMessageTopic": "npm", + "currentVersion": "^8.0.0", + "depName": "npm", + "depType": "engines", + "purl": "pkg:github/npm/npm?clean=true", + }, Object { "commitMessageTopic": "Yarn", - "currentVersion": "1.7.0", + "currentVersion": "disabled", "depName": "yarn", "depType": "engines", "purl": "pkg:github/yarnpkg/yarn?clean=true", + "skipReason": "unknown-version", }, ], "lernaClient": undefined, diff --git a/test/manager/npm/extract/index.spec.js b/test/manager/npm/extract/index.spec.js index f86f496b24..7ecd8b0296 100644 --- a/test/manager/npm/extract/index.spec.js +++ b/test/manager/npm/extract/index.spec.js @@ -131,8 +131,10 @@ describe('manager/npm/extract', () => { other: 'latest', }, engines: { + atom: '>=1.7.0 <2.0.0', node: '>= 8.9.2', - yarn: '1.7.0', + npm: '^8.0.0', + yarn: 'disabled', }, }; const pJsonStr = JSON.stringify(pJson); -- GitLab