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 d554a5fcdeb65ee3f06c9d5cc5f48ce6db3d1d3a..4fc87c513a1c2c6c5f73532080d3470c60e95c39 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 5c666ccda637f6b28ae8e84ca96a1ec034f4d2b2..dc8b8f29445683362ab322dc400513d974a588e3 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 bd17f2b7bcd171a459b8406e435fa9975369995b..d5b8c2422d4581f5a0bb6c56d784f797ee67f218 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)) {