From e33def6ba3a2f3ebe79a79f386751d9a4a8c8236 Mon Sep 17 00:00:00 2001 From: Andreas Hippler Date: Wed, 11 Oct 2023 21:25:47 +0200 Subject: [PATCH] fix(yarn): do not set registryUrls from yarnrc on non-npm dependencies (#25146) --- .../extract/__snapshots__/index.spec.ts.snap | 56 ++++++++++++++++++ lib/modules/manager/npm/extract/index.spec.ts | 57 +++++++++++++++++++ lib/modules/manager/npm/extract/index.ts | 3 +- 3 files changed, 115 insertions(+), 1 deletion(-) diff --git a/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap b/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap index 863cb69ff262db..a0db035a4e4610 100644 --- a/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap +++ b/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap @@ -26,6 +26,62 @@ exports[`modules/manager/npm/extract/index .extractPackageFile() catches invalid } `; +exports[`modules/manager/npm/extract/index .extractPackageFile() does not set registryUrls for non-npmjs 1`] = ` +{ + "deps": [ + { + "currentRawValue": "github:owner/a#v1.1.0", + "currentValue": "v1.1.0", + "datasource": "github-tags", + "depName": "a", + "depType": "dependencies", + "gitRef": true, + "packageName": "owner/a", + "pinDigests": false, + "prettyDepType": "dependency", + "sourceUrl": "https://github.com/owner/a", + }, + { + "commitMessageTopic": "Node.js", + "currentValue": "8.9.2", + "datasource": "github-tags", + "depName": "node", + "depType": "engines", + "packageName": "nodejs/node", + "prettyDepType": "engine", + "versioning": "node", + }, + { + "commitMessageTopic": "Yarn", + "currentValue": "3.2.4", + "datasource": "npm", + "depName": "yarn", + "depType": "volta", + "packageName": "@yarnpkg/cli", + "prettyDepType": "volta", + "registryUrls": [ + "https://registry.example.com", + ], + }, + ], + "extractedConstraints": { + "node": "8.9.2", + }, + "managerData": { + "hasPackageManager": false, + "npmLock": undefined, + "packageJsonName": undefined, + "pnpmShrinkwrap": undefined, + "workspacesPackages": undefined, + "yarnLock": undefined, + "yarnZeroInstall": false, + }, + "npmrc": undefined, + "packageFileVersion": undefined, + "skipInstalls": true, +} +`; + exports[`modules/manager/npm/extract/index .extractPackageFile() extracts engines 1`] = ` { "deps": [ diff --git a/lib/modules/manager/npm/extract/index.spec.ts b/lib/modules/manager/npm/extract/index.spec.ts index f89aa82caaa8aa..4c26027e2be8d0 100644 --- a/lib/modules/manager/npm/extract/index.spec.ts +++ b/lib/modules/manager/npm/extract/index.spec.ts @@ -646,6 +646,63 @@ describe('modules/manager/npm/extract/index', () => { }); }); + it('does not set registryUrls for non-npmjs', async () => { + fs.readLocalFile.mockImplementation((fileName): Promise => { + if (fileName === '.yarnrc.yml') { + return Promise.resolve( + 'npmRegistryServer: https://registry.example.com' + ); + } + return Promise.resolve(null); + }); + const pJson = { + dependencies: { + a: 'github:owner/a#v1.1.0', + }, + engines: { + node: '8.9.2', + }, + volta: { + yarn: '3.2.4', + }, + }; + const pJsonStr = JSON.stringify(pJson); + const res = await npmExtract.extractPackageFile( + pJsonStr, + 'package.json', + defaultExtractConfig + ); + expect(res).toMatchSnapshot({ + deps: [ + { + depName: 'a', + currentValue: 'v1.1.0', + datasource: 'github-tags', + sourceUrl: 'https://github.com/owner/a', + }, + { + commitMessageTopic: 'Node.js', + currentValue: '8.9.2', + datasource: 'github-tags', + depName: 'node', + depType: 'engines', + packageName: 'nodejs/node', + prettyDepType: 'engine', + versioning: 'node', + }, + { + commitMessageTopic: 'Yarn', + currentValue: '3.2.4', + datasource: 'npm', + depName: 'yarn', + depType: 'volta', + prettyDepType: 'volta', + packageName: '@yarnpkg/cli', + }, + ], + }); + }); + it('extracts npm package alias', async () => { fs.readLocalFile.mockImplementation((fileName: string): Promise => { if (fileName === 'package-lock.json') { diff --git a/lib/modules/manager/npm/extract/index.ts b/lib/modules/manager/npm/extract/index.ts index c24dd78923c849..b480a6e7223fef 100644 --- a/lib/modules/manager/npm/extract/index.ts +++ b/lib/modules/manager/npm/extract/index.ts @@ -3,6 +3,7 @@ import { GlobalConfig } from '../../../../config/global'; import { logger } from '../../../../logger'; import { getSiblingFileName, readLocalFile } from '../../../../util/fs'; import { newlineRegex, regEx } from '../../../../util/regex'; +import { NpmDatasource } from '../../../datasource/npm'; import type { ExtractConfig, @@ -179,7 +180,7 @@ export async function extractPackageFile( dep.depName, yarnConfig ); - if (registryUrlFromYarnConfig) { + if (registryUrlFromYarnConfig && dep.datasource === NpmDatasource.id) { dep.registryUrls = [registryUrlFromYarnConfig]; } }