From 3f5a0c04f5743319462cadfc390c5dd9130f6954 Mon Sep 17 00:00:00 2001 From: Martin Herndl <martin.herndl@icis.com> Date: Tue, 14 Mar 2023 06:10:30 +0100 Subject: [PATCH] feat(composer): skip path repo dependencies (#20887) --- lib/modules/manager/composer/extract.spec.ts | 30 ++++++++++++++++++++ lib/modules/manager/composer/extract.ts | 9 ++++++ lib/modules/manager/composer/types.ts | 2 +- 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/lib/modules/manager/composer/extract.spec.ts b/lib/modules/manager/composer/extract.spec.ts index bee3f2ec6c..617db0e724 100644 --- a/lib/modules/manager/composer/extract.spec.ts +++ b/lib/modules/manager/composer/extract.spec.ts @@ -1,3 +1,4 @@ +import { codeBlock } from 'common-tags'; import { Fixtures } from '../../../../test/fixtures'; import { fs } from '../../../../test/util'; import { extractPackageFile } from '.'; @@ -248,6 +249,35 @@ describe('modules/manager/composer/extract', () => { }); }); + it('skips path dependencies', async () => { + const res = await extractPackageFile( + codeBlock` + { + "name": "acme/path-sources", + "description": "Fetch Packages via path", + "repositories": { + "acme/path1": { + "type": "path", + "url": "packages/acme/path1" + } + }, + "require": { + "acme/path1": "*" + } + } + `, + packageFile + ); + expect(res?.deps).toEqual([ + { + currentValue: '*', + depName: 'acme/path1', + depType: 'require', + skipReason: 'path-dependency', + }, + ]); + }); + it('extracts dependencies with lock file', async () => { fs.readLocalFile.mockResolvedValue('some content'); const res = await extractPackageFile(requirements1, packageFile); diff --git a/lib/modules/manager/composer/extract.ts b/lib/modules/manager/composer/extract.ts index 2b8588b7bb..ae40abec46 100644 --- a/lib/modules/manager/composer/extract.ts +++ b/lib/modules/manager/composer/extract.ts @@ -46,6 +46,7 @@ function parseRepositories( switch (repo.type) { case 'vcs': case 'git': + case 'path': repositories[name!] = repo; break; case 'composer': @@ -144,6 +145,14 @@ export async function extractPackageFile( datasource = GitTagsDatasource.id; packageName = repositories[depName].url; break; + case 'path': + deps.push({ + depType, + depName, + currentValue, + skipReason: 'path-dependency', + }); + continue; } } const dep: PackageDependency = { diff --git a/lib/modules/manager/composer/types.ts b/lib/modules/manager/composer/types.ts index 896ff7bd8b..c46f294d0c 100644 --- a/lib/modules/manager/composer/types.ts +++ b/lib/modules/manager/composer/types.ts @@ -1,7 +1,7 @@ // istanbul ignore file: types only export interface Repo { name?: string; - type: 'composer' | 'git' | 'package' | 'vcs'; + type: 'composer' | 'git' | 'package' | 'path' | 'vcs'; packagist?: boolean; 'packagist.org'?: boolean; url: string; -- GitLab