From 90a724f2aaaf8542f8ab61549181e4e8f2596751 Mon Sep 17 00:00:00 2001 From: bjuraga <boris.juraga@live.com> Date: Tue, 27 Sep 2022 07:35:30 +0200 Subject: [PATCH] feat(nuget): implement missing packageFileVersion (#17995) --- .../multiple-package-files/two/two.csproj | 2 +- lib/modules/manager/nuget/extract.spec.ts | 22 +++++++++++++++++++ lib/modules/manager/nuget/extract.ts | 4 +++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/modules/manager/nuget/__fixtures__/multiple-package-files/two/two.csproj b/lib/modules/manager/nuget/__fixtures__/multiple-package-files/two/two.csproj index d554a5fcde..4fc87c513a 100644 --- a/lib/modules/manager/nuget/__fixtures__/multiple-package-files/two/two.csproj +++ b/lib/modules/manager/nuget/__fixtures__/multiple-package-files/two/two.csproj @@ -2,7 +2,7 @@ <PropertyGroup> <TargetFramework>netcoreapp1.1</TargetFramework> - <Version>0.1.0</Version> + <Version>0.2.0</Version> </PropertyGroup> <ItemGroup> diff --git a/lib/modules/manager/nuget/extract.spec.ts b/lib/modules/manager/nuget/extract.spec.ts index 5c666ccda6..dc8b8f2944 100644 --- a/lib/modules/manager/nuget/extract.spec.ts +++ b/lib/modules/manager/nuget/extract.spec.ts @@ -36,6 +36,20 @@ describe('modules/manager/nuget/extract', () => { expect(res?.deps).toHaveLength(1); }); + it('extracts package file version', async () => { + const packageFile = 'sample.csproj'; + const sample = Fixtures.get(packageFile); + const res = await extractPackageFile(sample, packageFile, config); + expect(res?.packageFileVersion).toBe('0.1.0'); + }); + + it('does not fail on package file without version', async () => { + const packageFile = 'single-project-file/single.csproj'; + const sample = Fixtures.get(packageFile); + const res = await extractPackageFile(sample, packageFile, config); + expect(res?.packageFileVersion).toBeUndefined(); + }); + it('extracts all dependencies', async () => { const packageFile = 'sample.csproj'; const sample = Fixtures.get(packageFile); @@ -68,6 +82,7 @@ describe('modules/manager/nuget/extract', () => { ], }, ], + packageFileVersion: '0.1.0', }); }); @@ -88,6 +103,7 @@ describe('modules/manager/nuget/extract', () => { ], }, ], + packageFileVersion: '0.1.0', }); }); @@ -108,6 +124,7 @@ describe('modules/manager/nuget/extract', () => { ], }, ], + packageFileVersion: '0.1.0', }); }); @@ -124,6 +141,7 @@ describe('modules/manager/nuget/extract', () => { depType: 'nuget', }, ], + packageFileVersion: '0.1.0', }); }); @@ -140,6 +158,7 @@ describe('modules/manager/nuget/extract', () => { depType: 'nuget', }, ], + packageFileVersion: '0.1.0', }); }); @@ -176,6 +195,7 @@ describe('modules/manager/nuget/extract', () => { registryUrls: ['https://contoso.com/packages/'], }, ], + packageFileVersion: '0.1.0', }); }); @@ -197,6 +217,7 @@ describe('modules/manager/nuget/extract', () => { ], }, ], + packageFileVersion: '0.1.0', }); expect( await extractPackageFile(otherContents, otherPackageFile, config) @@ -213,6 +234,7 @@ describe('modules/manager/nuget/extract', () => { ], }, ], + packageFileVersion: '0.2.0', }); }); diff --git a/lib/modules/manager/nuget/extract.ts b/lib/modules/manager/nuget/extract.ts index bd17f2b7bc..d5b8c2422d 100644 --- a/lib/modules/manager/nuget/extract.ts +++ b/lib/modules/manager/nuget/extract.ts @@ -119,16 +119,18 @@ export async function extractPackageFile( } let deps: PackageDependency[] = []; + let packageFileVersion = undefined; try { const parsedXml = new XmlDocument(content); deps = extractDepsFromXml(parsedXml).map((dep) => ({ ...dep, ...(registryUrls && { registryUrls }), })); + packageFileVersion = parsedXml.valueWithPath('PropertyGroup.Version'); } catch (err) { logger.debug({ err }, `Failed to parse ${packageFile}`); } - const res: PackageFile = { deps }; + const res: PackageFile = { deps, packageFileVersion }; const lockFileName = getSiblingFileName(packageFile, 'packages.lock.json'); // istanbul ignore if if (await localPathExists(lockFileName)) { -- GitLab