From 6333646e6d96e182e8ea61f82eef7433fcc90c69 Mon Sep 17 00:00:00 2001 From: azu <azu@users.noreply.github.com> Date: Sat, 20 Jul 2019 16:46:47 +0900 Subject: [PATCH] fix(npm): fix detecting logic of npmClient (#4130) fix(npm): fix detecting logic of npmClient --- lib/manager/npm/extract/index.js | 3 +- .../extract/__snapshots__/index.spec.js.snap | 194 ++++++++++++++++++ test/manager/npm/extract/index.spec.js | 28 +++ 3 files changed, 224 insertions(+), 1 deletion(-) diff --git a/lib/manager/npm/extract/index.js b/lib/manager/npm/extract/index.js index abbcb449a1..2a80716a56 100644 --- a/lib/manager/npm/extract/index.js +++ b/lib/manager/npm/extract/index.js @@ -131,7 +131,8 @@ async function extractPackageFile(content, fileName, config) { if (lernaJson) { lernaDir = path.dirname(fileName); lernaPackages = lernaJson.packages; - lernaClient = lernaJson.npmClient || lockFiles.yarnLock ? 'yarn' : 'npm'; + lernaClient = + lernaJson.npmClient === 'yarn' || lockFiles.yarnLock ? 'yarn' : 'npm'; } const depTypes = { diff --git a/test/manager/npm/extract/__snapshots__/index.spec.js.snap b/test/manager/npm/extract/__snapshots__/index.spec.js.snap index af8d3a841b..0029c6f67f 100644 --- a/test/manager/npm/extract/__snapshots__/index.spec.js.snap +++ b/test/manager/npm/extract/__snapshots__/index.spec.js.snap @@ -337,6 +337,200 @@ Object { } `; +exports[`manager/npm/extract .extractPackageFile() finds "npmClient":"npm" in lerna.json 1`] = ` +Object { + "deps": Array [ + Object { + "currentValue": "6.5.0", + "datasource": "npm", + "depName": "autoprefixer", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "currentValue": "~1.6.0", + "datasource": "npm", + "depName": "bower", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "currentValue": "13.1.0", + "datasource": "npm", + "depName": "browserify", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "currentValue": "0.9.2", + "datasource": "npm", + "depName": "browserify-css", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "currentValue": "=0.22.0", + "datasource": "npm", + "depName": "cheerio", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "currentValue": "1.21.0", + "datasource": "npm", + "depName": "config", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "depName": "enabled", + "depType": "devDependencies", + "prettyDepType": "devDependency", + "skipReason": "invalid-value", + }, + Object { + "currentValue": "^1.5.8", + "datasource": "npm", + "depName": "angular", + "depType": "devDependencies", + "prettyDepType": "devDependency", + }, + Object { + "currentValue": "1.5.8", + "datasource": "npm", + "depName": "angular-touch", + "depType": "devDependencies", + "prettyDepType": "devDependency", + }, + Object { + "currentValue": "1.5.8", + "datasource": "npm", + "depName": "angular-sanitize", + "depType": "devDependencies", + "prettyDepType": "devDependency", + }, + Object { + "currentValue": "4.0.0-beta.1", + "datasource": "npm", + "depName": "@angular/core", + "depType": "devDependencies", + "prettyDepType": "devDependency", + }, + ], + "ignoreNpmrcFile": undefined, + "lernaClient": "npm", + "lernaDir": ".", + "lernaPackages": undefined, + "npmLock": undefined, + "npmrc": undefined, + "packageJsonName": "renovate", + "packageJsonType": "app", + "packageJsonVersion": "1.0.0", + "pnpmShrinkwrap": undefined, + "skipInstalls": true, + "yarnLock": undefined, + "yarnWorkspacesPackages": undefined, + "yarnrc": undefined, +} +`; + +exports[`manager/npm/extract .extractPackageFile() finds "npmClient":"yarn" in lerna.json 1`] = ` +Object { + "deps": Array [ + Object { + "currentValue": "6.5.0", + "datasource": "npm", + "depName": "autoprefixer", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "currentValue": "~1.6.0", + "datasource": "npm", + "depName": "bower", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "currentValue": "13.1.0", + "datasource": "npm", + "depName": "browserify", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "currentValue": "0.9.2", + "datasource": "npm", + "depName": "browserify-css", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "currentValue": "=0.22.0", + "datasource": "npm", + "depName": "cheerio", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "currentValue": "1.21.0", + "datasource": "npm", + "depName": "config", + "depType": "dependencies", + "prettyDepType": "dependency", + }, + Object { + "depName": "enabled", + "depType": "devDependencies", + "prettyDepType": "devDependency", + "skipReason": "invalid-value", + }, + Object { + "currentValue": "^1.5.8", + "datasource": "npm", + "depName": "angular", + "depType": "devDependencies", + "prettyDepType": "devDependency", + }, + Object { + "currentValue": "1.5.8", + "datasource": "npm", + "depName": "angular-touch", + "depType": "devDependencies", + "prettyDepType": "devDependency", + }, + Object { + "currentValue": "1.5.8", + "datasource": "npm", + "depName": "angular-sanitize", + "depType": "devDependencies", + "prettyDepType": "devDependency", + }, + Object { + "currentValue": "4.0.0-beta.1", + "datasource": "npm", + "depName": "@angular/core", + "depType": "devDependencies", + "prettyDepType": "devDependency", + }, + ], + "ignoreNpmrcFile": undefined, + "lernaClient": "yarn", + "lernaDir": ".", + "lernaPackages": undefined, + "npmLock": undefined, + "npmrc": undefined, + "packageJsonName": "renovate", + "packageJsonType": "app", + "packageJsonVersion": "1.0.0", + "pnpmShrinkwrap": undefined, + "skipInstalls": true, + "yarnLock": undefined, + "yarnWorkspacesPackages": undefined, + "yarnrc": undefined, +} +`; + exports[`manager/npm/extract .extractPackageFile() finds a lock file 1`] = ` Object { "deps": Array [ diff --git a/test/manager/npm/extract/index.spec.js b/test/manager/npm/extract/index.spec.js index 8957543bb4..0fa99863b7 100644 --- a/test/manager/npm/extract/index.spec.js +++ b/test/manager/npm/extract/index.spec.js @@ -137,6 +137,34 @@ describe('manager/npm/extract', () => { ); expect(res).toMatchSnapshot(); }); + it('finds "npmClient":"npm" in lerna.json', async () => { + platform.getFile = jest.fn(fileName => { + if (fileName === 'lerna.json') { + return '{ "npmClient": "npm" }'; + } + return null; + }); + const res = await npmExtract.extractPackageFile( + input01Content, + 'package.json', + defaultConfig + ); + expect(res).toMatchSnapshot(); + }); + it('finds "npmClient":"yarn" in lerna.json', async () => { + platform.getFile = jest.fn(fileName => { + if (fileName === 'lerna.json') { + return '{ "npmClient": "yarn" }'; + } + return null; + }); + const res = await npmExtract.extractPackageFile( + input01Content, + 'package.json', + defaultConfig + ); + expect(res).toMatchSnapshot(); + }); it('finds complex yarn workspaces', async () => { platform.getFile = jest.fn(fileName => { if (fileName === 'lerna.json') { -- GitLab