From ad7ae2a748be057ebf36e01da5e848ac81fdf754 Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Thu, 6 Feb 2025 10:00:07 +0100
Subject: [PATCH] fix(datasource/dart-version): skip old svn revisions (#34059)

---
 .../datasource/dart-version/__fixtures__/beta.json        | 2 ++
 .../datasource/dart-version/__fixtures__/stable.json      | 2 ++
 lib/modules/datasource/dart-version/index.ts              | 8 ++++++++
 3 files changed, 12 insertions(+)

diff --git a/lib/modules/datasource/dart-version/__fixtures__/beta.json b/lib/modules/datasource/dart-version/__fixtures__/beta.json
index 8e2c28bc7e..a1b6d6d6ef 100644
--- a/lib/modules/datasource/dart-version/__fixtures__/beta.json
+++ b/lib/modules/datasource/dart-version/__fixtures__/beta.json
@@ -10,6 +10,8 @@
 		"channels/beta/release/2.19.0-255.2.beta/",
 		"channels/beta/release/2.19.0-374.1.beta/",
 		"channels/beta/release/2.19.0-374.2.beta/",
+    "channels/dev/release/30039/",
+    "channels/dev/release/30104/",
 		"channels/beta/release/latest/"
 	]
 }
diff --git a/lib/modules/datasource/dart-version/__fixtures__/stable.json b/lib/modules/datasource/dart-version/__fixtures__/stable.json
index f5bb8cab7e..35409a3ab7 100644
--- a/lib/modules/datasource/dart-version/__fixtures__/stable.json
+++ b/lib/modules/datasource/dart-version/__fixtures__/stable.json
@@ -7,6 +7,8 @@
 		"channels/stable/release/2.18.0/",
 		"channels/stable/release/2.18.4/",
 		"channels/stable/release/2.18.5/",
+    "channels/stable/release/30036/",
+    "channels/stable/release/30107/",
 		"channels/stable/release/latest/"
 	]
 }
diff --git a/lib/modules/datasource/dart-version/index.ts b/lib/modules/datasource/dart-version/index.ts
index 06b5440f8f..5db78cbfc8 100644
--- a/lib/modules/datasource/dart-version/index.ts
+++ b/lib/modules/datasource/dart-version/index.ts
@@ -5,6 +5,12 @@ import type { GetReleasesConfig, Release, ReleaseResult } from '../types';
 import type { DartResponse } from './types';
 
 export const stableVersionRegex = regEx(/^\d+\.\d+\.\d+$/);
+/**
+ * The server returns old svn versions which would need mapping to a version.
+ * They are very old, so we skip them instead.
+ * https://github.com/dart-lang/site-www/blob/7d4409c87bb6570b2d8870b20283f81f2b7e08fc/tool/get-dart/dart_sdk_archive/lib/src/svn_versions.dart#L2
+ */
+export const svnVersionRegex = regEx(/^\d+$/);
 
 export class DartVersionDatasource extends Datasource {
   static readonly id = 'dart-version';
@@ -65,6 +71,8 @@ export class DartVersionDatasource extends Datasource {
       .filter((version) => {
         if (
           version === 'latest' ||
+          // skip old svn versions
+          svnVersionRegex.test(version) ||
           // The API response contains a stable version being released as a non-stable
           // release. So we filter out these releases here.
           (channel !== 'stable' && stableVersionRegex.test(version))
-- 
GitLab