diff --git a/lib/modules/manager/nuget/update.spec.ts b/lib/modules/manager/nuget/update.spec.ts index ecf80a4957306de07f5ecae8c3f9dc4b7dcb70c1..1701d0625c35e51e8bb54f029ab6a2be6883586d 100644 --- a/lib/modules/manager/nuget/update.spec.ts +++ b/lib/modules/manager/nuget/update.spec.ts @@ -7,6 +7,10 @@ const minimumContent = '<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><Version>1</Version></PropertyGroup></Project>'; const prereleaseContent = '<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><Version>1.0.0-1</Version></PropertyGroup></Project>'; +const issue23526InitialContent = + '<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><Version>4.9.0</Version></PropertyGroup></Project>'; +const issue23526ExpectedContent = + '<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><Version>4.10.0</Version></PropertyGroup></Project>'; describe('modules/manager/nuget/update', () => { describe('bumpPackageVersion', () => { @@ -36,6 +40,21 @@ describe('modules/manager/nuget/update', () => { expect(bumpedContent).toEqual(bumpedContent2); }); + it('issue 23526 does not bump version incorrectly', () => { + const { bumpedContent } = bumpPackageVersion( + issue23526InitialContent, + '4.9.0', + 'minor' + ); + const { bumpedContent: bumpedContent2 } = bumpPackageVersion( + bumpedContent!, + '4.9.0', + 'minor' + ); + + expect(bumpedContent2).toEqual(issue23526ExpectedContent); + }); + it('does not bump version if version is not a semantic version', () => { const { bumpedContent } = bumpPackageVersion( minimumContent, diff --git a/lib/modules/manager/nuget/update.ts b/lib/modules/manager/nuget/update.ts index 4921abdd1e7600d09490083534b6b8bcf2915aea..ad258f2ff3d08babfe0b10eaa72e067bf8f16364 100644 --- a/lib/modules/manager/nuget/update.ts +++ b/lib/modules/manager/nuget/update.ts @@ -31,14 +31,23 @@ export function bumpPackageVersion( try { const project = new XmlDocument(content); const versionNode = project.descendantWithPath('PropertyGroup.Version')!; + const currentProjVersion = versionNode.val; const startTagPosition = versionNode.startTagPosition; - const versionPosition = content.indexOf(versionNode.val, startTagPosition); + const versionPosition = content.indexOf( + currentProjVersion, + startTagPosition + ); const newProjVersion = semver.inc(currentValue, bumpVersion as ReleaseType); if (!newProjVersion) { throw new Error('semver inc failed'); } + if (currentProjVersion === newProjVersion) { + logger.debug('Version was already bumped'); + return { bumpedContent }; + } + logger.debug(`newProjVersion: ${newProjVersion}`); bumpedContent = replaceAt( content, @@ -46,12 +55,6 @@ export function bumpPackageVersion( currentValue, newProjVersion ); - - if (bumpedContent === content) { - logger.debug('Version was already bumped'); - } else { - logger.debug('project version bumped'); - } } catch (err) { logger.warn( {