From c18c55e97c27ca8f1107dcd61707202abbe850c9 Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Wed, 25 May 2022 08:48:44 +0300
Subject: [PATCH] fix(clojure): Prioritize Maven-based deps over git-based ones
 (#15720)

---
 .../manager/deps-edn/__fixtures__/deps.edn     |  1 +
 .../__snapshots__/extract.spec.ts.snap         | 12 ++++++++++++
 .../deps-edn/__snapshots__/parser.spec.ts.snap |  3 +++
 lib/modules/manager/deps-edn/extract.spec.ts   |  5 +++++
 lib/modules/manager/deps-edn/extract.ts        | 18 +++++++++---------
 5 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/lib/modules/manager/deps-edn/__fixtures__/deps.edn b/lib/modules/manager/deps-edn/__fixtures__/deps.edn
index c1c3a2b5ea..fef799dcd7 100644
--- a/lib/modules/manager/deps-edn/__fixtures__/deps.edn
+++ b/lib/modules/manager/deps-edn/__fixtures__/deps.edn
@@ -3,6 +3,7 @@
 ,,,,persistent-sorted-set,{:mvn/version,"0.1.2"}
     invalid/package! {:mvn/version "1.2.3"}
     invalid/version nil
+    io.github.nextjournal/clerk {:mvn/version "0.7.418"}
   }
 
   :aliases {
diff --git a/lib/modules/manager/deps-edn/__snapshots__/extract.spec.ts.snap b/lib/modules/manager/deps-edn/__snapshots__/extract.spec.ts.snap
index 7b7a98f13b..81aa96516b 100644
--- a/lib/modules/manager/deps-edn/__snapshots__/extract.spec.ts.snap
+++ b/lib/modules/manager/deps-edn/__snapshots__/extract.spec.ts.snap
@@ -14,6 +14,18 @@ Array [
     ],
     "replaceString": "{:mvn/version,\\"0.1.2\\"}",
   },
+  Object {
+    "currentValue": "0.7.418",
+    "datasource": "clojure",
+    "depName": "io.github.nextjournal/clerk",
+    "packageName": "io.github.nextjournal:clerk",
+    "registryUrls": Array [
+      "https://deps.com/foo/bar",
+      "https://my.auth.com/repo",
+      "s3://my-bucket/maven/releases",
+    ],
+    "replaceString": "{:mvn/version \\"0.7.418\\"}",
+  },
   Object {
     "currentValue": "1.9.0",
     "datasource": "clojure",
diff --git a/lib/modules/manager/deps-edn/__snapshots__/parser.spec.ts.snap b/lib/modules/manager/deps-edn/__snapshots__/parser.spec.ts.snap
index 5c9e49ed08..8e28118109 100644
--- a/lib/modules/manager/deps-edn/__snapshots__/parser.spec.ts.snap
+++ b/lib/modules/manager/deps-edn/__snapshots__/parser.spec.ts.snap
@@ -123,6 +123,9 @@ Object {
       "mvn/version": "1.2.3",
     },
     "invalid/version": "nil",
+    "io.github.nextjournal/clerk": Object {
+      "mvn/version": "0.7.418",
+    },
     "persistent-sorted-set": Object {
       "mvn/version": "0.1.2",
     },
diff --git a/lib/modules/manager/deps-edn/extract.spec.ts b/lib/modules/manager/deps-edn/extract.spec.ts
index 39a1cd48d9..f64246cdeb 100644
--- a/lib/modules/manager/deps-edn/extract.spec.ts
+++ b/lib/modules/manager/deps-edn/extract.spec.ts
@@ -20,6 +20,11 @@ describe('modules/manager/deps-edn/extract', () => {
             's3://my-bucket/maven/releases',
           ],
         },
+        {
+          depName: 'io.github.nextjournal/clerk',
+          currentValue: '0.7.418',
+          datasource: 'clojure',
+        },
         { depName: 'org.clojure/clojure', currentValue: '1.9.0' },
         { depName: 'org.clojure/clojure', currentValue: '1.10.0' },
         { depName: 'org.clojure/clojurescript', currentValue: '1.10.520' },
diff --git a/lib/modules/manager/deps-edn/extract.ts b/lib/modules/manager/deps-edn/extract.ts
index dc4beab353..cfb2970194 100644
--- a/lib/modules/manager/deps-edn/extract.ts
+++ b/lib/modules/manager/deps-edn/extract.ts
@@ -151,6 +151,15 @@ function extractDependency(
     dep.depType = depType;
   }
 
+  const mvnVersion = val['mvn/version'];
+  if (is.string(mvnVersion)) {
+    dep.datasource = ClojureDatasource.id;
+    dep.currentValue = mvnVersion;
+    dep.packageName = packageName.replace('/', ':');
+    dep.registryUrls = [...mavenRegistries];
+    return dep;
+  }
+
   resolveGitPackageFromEdnVal(dep, val);
   resolveGitPackageFromEdnKey(dep, key);
 
@@ -169,15 +178,6 @@ function extractDependency(
     return dep;
   }
 
-  const mvnVersion = val['mvn/version'];
-  if (is.string(mvnVersion)) {
-    dep.datasource = ClojureDatasource.id;
-    dep.currentValue = mvnVersion;
-    dep.packageName = packageName.replace('/', ':');
-    dep.registryUrls = [...mavenRegistries];
-    return dep;
-  }
-
   return null;
 }
 
-- 
GitLab