From 29cec2cb915f4aaeb27256b92b4da929272e1b15 Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Tue, 8 Aug 2023 11:50:42 +0200
Subject: [PATCH] fix: better validation before bumping package version
 (#23684)

---
 lib/modules/manager/helmv3/update.ts          |  1 +
 lib/modules/manager/maven/update.ts           |  7 +------
 .../npm/update/package-version/index.ts       |  1 +
 lib/modules/manager/nuget/update.ts           |  7 +------
 .../update/branch/get-updated.spec.ts         |  2 ++
 .../repository/update/branch/get-updated.ts   | 19 ++++++++++++++-----
 6 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/lib/modules/manager/helmv3/update.ts b/lib/modules/manager/helmv3/update.ts
index cd742214e6..be7ac97206 100644
--- a/lib/modules/manager/helmv3/update.ts
+++ b/lib/modules/manager/helmv3/update.ts
@@ -14,6 +14,7 @@ export function bumpPackageVersion(
   );
   let newChartVersion: string | null;
   let bumpedContent = content;
+
   try {
     newChartVersion = semver.inc(currentValue, bumpVersion);
     if (!newChartVersion) {
diff --git a/lib/modules/manager/maven/update.ts b/lib/modules/manager/maven/update.ts
index 390979fcac..77b6b90f35 100644
--- a/lib/modules/manager/maven/update.ts
+++ b/lib/modules/manager/maven/update.ts
@@ -55,7 +55,7 @@ export function updateDependency({
 
 export function bumpPackageVersion(
   content: string,
-  currentValue: string | undefined,
+  currentValue: string,
   bumpVersion: ReleaseType
 ): BumpPackageVersionResult {
   logger.debug(
@@ -64,11 +64,6 @@ export function bumpPackageVersion(
   );
   let bumpedContent = content;
 
-  if (!currentValue) {
-    logger.warn('Unable to bump pom.xml version, pom.xml has no version');
-    return { bumpedContent };
-  }
-
   if (!semver.valid(currentValue)) {
     logger.warn(
       { currentValue },
diff --git a/lib/modules/manager/npm/update/package-version/index.ts b/lib/modules/manager/npm/update/package-version/index.ts
index 63581011f1..ed0a4a376e 100644
--- a/lib/modules/manager/npm/update/package-version/index.ts
+++ b/lib/modules/manager/npm/update/package-version/index.ts
@@ -23,6 +23,7 @@ export function bumpPackageVersion(
   // TODO: types (#7154)
   let newPjVersion: string | null;
   let bumpedContent = content;
+
   try {
     if (isMirrorBumpVersion(bumpVersion)) {
       const mirrorPackage = bumpVersion.replace('mirror:', '');
diff --git a/lib/modules/manager/nuget/update.ts b/lib/modules/manager/nuget/update.ts
index 60b6fe5b08..052cfb2997 100644
--- a/lib/modules/manager/nuget/update.ts
+++ b/lib/modules/manager/nuget/update.ts
@@ -7,7 +7,7 @@ import { findVersion } from './util';
 
 export function bumpPackageVersion(
   content: string,
-  currentValue: string | undefined,
+  currentValue: string,
   bumpVersion: ReleaseType
 ): BumpPackageVersionResult {
   logger.debug(
@@ -16,11 +16,6 @@ export function bumpPackageVersion(
   );
   let bumpedContent = content;
 
-  if (!currentValue) {
-    logger.warn('Unable to bump project version, project has no version');
-    return { bumpedContent };
-  }
-
   if (!semver.valid(currentValue)) {
     logger.warn(
       { currentValue },
diff --git a/lib/workers/repository/update/branch/get-updated.spec.ts b/lib/workers/repository/update/branch/get-updated.spec.ts
index f1956f05db..dc47a596f9 100644
--- a/lib/workers/repository/update/branch/get-updated.spec.ts
+++ b/lib/workers/repository/update/branch/get-updated.spec.ts
@@ -476,6 +476,7 @@ describe('workers/repository/update/branch/get-updated', () => {
         branchName: '',
         bumpVersion: 'patch',
         manager: 'npm',
+        packageFileVersion: 'old version',
       });
       npm.updateDependency.mockReturnValue('old version');
       npm.bumpPackageVersion.mockReturnValue({ bumpedContent: 'new version' });
@@ -497,6 +498,7 @@ describe('workers/repository/update/branch/get-updated', () => {
         branchName: '',
         bumpVersion: 'patch',
         manager: 'helmv3',
+        packageFileVersion: '0.0.1',
       });
       autoReplace.doAutoReplace.mockResolvedValueOnce('version: 0.0.1');
       helmv3.bumpPackageVersion.mockReturnValue({
diff --git a/lib/workers/repository/update/branch/get-updated.ts b/lib/workers/repository/update/branch/get-updated.ts
index 0f3a91b476..144a75b710 100644
--- a/lib/workers/repository/update/branch/get-updated.ts
+++ b/lib/workers/repository/update/branch/get-updated.ts
@@ -173,10 +173,14 @@ export async function getUpdatedPackageFiles(
         );
         firstUpdate = false;
         if (res) {
-          if (bumpPackageVersion && upgrade.bumpVersion) {
+          if (
+            bumpPackageVersion &&
+            upgrade.bumpVersion &&
+            upgrade.packageFileVersion
+          ) {
             const { bumpedContent } = await bumpPackageVersion(
               res,
-              upgrade.packageFileVersion!,
+              upgrade.packageFileVersion,
               upgrade.bumpVersion
             );
             res = bumpedContent;
@@ -202,10 +206,15 @@ export async function getUpdatedPackageFiles(
         fileContent: packageFileContent!,
         upgrade,
       });
-      if (bumpPackageVersion && upgrade.bumpVersion) {
+      if (
+        newContent &&
+        bumpPackageVersion &&
+        upgrade.bumpVersion &&
+        upgrade.packageFileVersion
+      ) {
         const { bumpedContent } = await bumpPackageVersion(
-          newContent!,
-          upgrade.packageFileVersion!,
+          newContent,
+          upgrade.packageFileVersion,
           upgrade.bumpVersion
         );
         newContent = bumpedContent;
-- 
GitLab