From e6fdecdf43d2b5832b45066efa34f6af98e42438 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Mon, 2 Oct 2023 15:36:04 +0200
Subject: [PATCH] fix(versionCompatibility): fix compatibility suffix (#24954)

---
 .../repository/process/lookup/generate.ts     |  2 +-
 .../repository/process/lookup/index.spec.ts   | 21 +++++++++++++++++++
 .../repository/process/lookup/index.ts        |  1 +
 3 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/lib/workers/repository/process/lookup/generate.ts b/lib/workers/repository/process/lookup/generate.ts
index 21f6a3170c..81c46edb3e 100644
--- a/lib/workers/repository/process/lookup/generate.ts
+++ b/lib/workers/repository/process/lookup/generate.ts
@@ -10,6 +10,7 @@ import { getUpdateType } from './update-type';
 
 export async function generateUpdate(
   config: LookupUpdateConfig,
+  currentValue: string | undefined,
   versioning: VersioningApi,
   rangeStrategy: RangeStrategy,
   currentVersion: string,
@@ -49,7 +50,6 @@ export async function generateUpdate(
     update.registryUrl = release.registryUrl;
   }
 
-  const { currentValue } = config;
   if (currentValue) {
     try {
       update.newValue = versioning.getNewValue({
diff --git a/lib/workers/repository/process/lookup/index.spec.ts b/lib/workers/repository/process/lookup/index.spec.ts
index 3b0ea3fa6b..b36a452e43 100644
--- a/lib/workers/repository/process/lookup/index.spec.ts
+++ b/lib/workers/repository/process/lookup/index.spec.ts
@@ -11,6 +11,7 @@ import { GithubTagsDatasource } from '../../../../modules/datasource/github-tags
 import { NpmDatasource } from '../../../../modules/datasource/npm';
 import { PackagistDatasource } from '../../../../modules/datasource/packagist';
 import { PypiDatasource } from '../../../../modules/datasource/pypi';
+import { id as debianVersioningId } from '../../../../modules/versioning/debian';
 import { id as dockerVersioningId } from '../../../../modules/versioning/docker';
 import { id as gitVersioningId } from '../../../../modules/versioning/git';
 import { id as nodeVersioningId } from '../../../../modules/versioning/node';
@@ -1782,6 +1783,26 @@ describe('workers/repository/process/lookup/index', () => {
       });
     });
 
+    it('applies versionCompatibility for debian codenames with suffix', async () => {
+      config.currentValue = 'bullseye-slim';
+      config.packageName = 'debian';
+      config.versioning = debianVersioningId;
+      config.versionCompatibility = '^(?<version>[^-]+)(?<compatibility>-.*)?$';
+      config.datasource = DockerDatasource.id;
+      getDockerReleases.mockResolvedValueOnce({
+        releases: [
+          { version: 'bullseye' },
+          { version: 'bullseye-slim' },
+          { version: 'bookworm' },
+          { version: 'bookworm-slim' },
+        ],
+      });
+      const res = await lookup.lookupUpdates(config);
+      expect(res).toMatchObject({
+        updates: [{ newValue: 'bookworm-slim', updateType: 'major' }],
+      });
+    });
+
     it('handles digest pin for up to date version', async () => {
       config.currentValue = '8.1.0';
       config.packageName = 'node';
diff --git a/lib/workers/repository/process/lookup/index.ts b/lib/workers/repository/process/lookup/index.ts
index c8a5ed8be9..9fd1f96a44 100644
--- a/lib/workers/repository/process/lookup/index.ts
+++ b/lib/workers/repository/process/lookup/index.ts
@@ -346,6 +346,7 @@ export async function lookupUpdates(
         const newVersion = release.version;
         const update = await generateUpdate(
           config,
+          compareValue,
           versioning,
           // TODO #22198
 
-- 
GitLab