From 4c26d593b95752d93b757d6215d089e5dbac06d6 Mon Sep 17 00:00:00 2001
From: Sergio Zharinov <zharinov@users.noreply.github.com>
Date: Wed, 6 Feb 2019 20:40:29 +0400
Subject: [PATCH] refactor(maven): unify `depName` between Maven and Gradle
 (#3179)

Closes #3173
---
 lib/datasource/maven/index.js                 | 12 ++++------
 lib/manager/maven/extract.js                  |  2 +-
 test/datasource/maven.spec.js                 | 22 +++++++++----------
 .../maven/__snapshots__/extract.spec.js.snap  | 22 +++++++++----------
 test/manager/maven/index.spec.js              |  2 +-
 5 files changed, 28 insertions(+), 32 deletions(-)

diff --git a/lib/datasource/maven/index.js b/lib/datasource/maven/index.js
index c3bdff6df3..463587f7be 100644
--- a/lib/datasource/maven/index.js
+++ b/lib/datasource/maven/index.js
@@ -69,12 +69,13 @@ async function getPkgReleases({ lookupName, registryUrls }) {
 }
 
 function getDependencyParts(lookupName) {
-  const [group, name] = lookupName.split('/');
+  const [group, name] = lookupName.split(':');
+  const dependencyUrl = `${group.replace(/\./g, '/')}/${name}`;
   return {
-    display: lookupName.replace('/', ':'),
+    display: lookupName,
     group,
     name,
-    dependencyUrl: generateMavenUrl(lookupName),
+    dependencyUrl,
   };
 }
 
@@ -150,11 +151,6 @@ async function downloadHttpProtocol(pkgUrl) {
   return raw.body;
 }
 
-function generateMavenUrl(lookupName) {
-  const [group, name] = lookupName.split('/');
-  return group.replace(/\./g, '/') + `/${name}`;
-}
-
 function isMavenCentral(pkgUrl) {
   return pkgUrl.host === 'central.maven.org';
 }
diff --git a/lib/manager/maven/extract.js b/lib/manager/maven/extract.js
index e35460f12b..583a9819ea 100644
--- a/lib/manager/maven/extract.js
+++ b/lib/manager/maven/extract.js
@@ -24,7 +24,7 @@ function depFromNode(node) {
   const artifactId = node.valueWithPath('artifactId');
   const currentValue = node.valueWithPath('version');
   if (groupId && artifactId && currentValue) {
-    const depName = `${groupId}/${artifactId}`;
+    const depName = `${groupId}:${artifactId}`;
     const result = {
       depName,
       currentValue,
diff --git a/test/datasource/maven.spec.js b/test/datasource/maven.spec.js
index 56b42d72a1..efc44f353f 100644
--- a/test/datasource/maven.spec.js
+++ b/test/datasource/maven.spec.js
@@ -53,7 +53,7 @@ describe('datasource/maven', () => {
     it('should return empty if library is not found', async () => {
       const releases = await datasource.getPkgReleases({
         ...config,
-        lookupName: 'unknown/unknown',
+        lookupName: 'unknown:unknown',
         registryUrls: [
           'file://test/_fixtures/gradle/maven/repo1.maven.org/maven2/',
         ],
@@ -64,7 +64,7 @@ describe('datasource/maven', () => {
     it('should simply return all versions of a specific library', async () => {
       const releases = await datasource.getPkgReleases({
         ...config,
-        lookupName: 'org.hamcrest/hamcrest-core',
+        lookupName: 'org.hamcrest:hamcrest-core',
         registryUrls: [
           'file://test/_fixtures/gradle/maven/repo1.maven.org/maven2/',
           'file://test/_fixtures/gradle/maven/custom_maven_repo/maven2/',
@@ -86,7 +86,7 @@ describe('datasource/maven', () => {
     it('should return versions in all repositories for a specific library', async () => {
       const releases = await datasource.getPkgReleases({
         ...config,
-        lookupName: 'mysql/mysql-connector-java',
+        lookupName: 'mysql:mysql-connector-java',
         registryUrls: [
           'file://test/_fixtures/gradle/maven/repo1.maven.org/maven2/',
           'file://test/_fixtures/gradle/maven/custom_maven_repo/maven2/',
@@ -100,7 +100,7 @@ describe('datasource/maven', () => {
     it('should return all versions of a specific library for http repositories', async () => {
       const releases = await datasource.getPkgReleases({
         ...config,
-        lookupName: 'mysql/mysql-connector-java',
+        lookupName: 'mysql:mysql-connector-java',
         registryUrls: ['http://central.maven.org/maven2/'],
       });
       expect(releases.releases).toEqual(generateReleases(MYSQL_VERSIONS));
@@ -109,7 +109,7 @@ describe('datasource/maven', () => {
     it('should return all versions of a specific library if a repository fails', async () => {
       const releases = await datasource.getPkgReleases({
         ...config,
-        lookupName: 'mysql/mysql-connector-java',
+        lookupName: 'mysql:mysql-connector-java',
         registryUrls: [
           'http://central.maven.org/maven2/',
           'http://failed_repo/',
@@ -130,7 +130,7 @@ describe('datasource/maven', () => {
       try {
         await datasource.getPkgReleases({
           ...config,
-          lookupName: 'org/artifact',
+          lookupName: 'org:artifact',
           registryUrls: ['http://central.maven.org/maven2/'],
         });
       } catch (e) {
@@ -141,7 +141,7 @@ describe('datasource/maven', () => {
     it('should return all versions of a specific library if a repository fails because invalid protocol', async () => {
       const releases = await datasource.getPkgReleases({
         ...config,
-        lookupName: 'mysql/mysql-connector-java',
+        lookupName: 'mysql:mysql-connector-java',
         registryUrls: [
           'http://central.maven.org/maven2/',
           'http://failed_repo/',
@@ -167,7 +167,7 @@ describe('datasource/maven', () => {
         .reply(200, invalidMavenMetadata);
       const releases = await datasource.getPkgReleases({
         ...config,
-        lookupName: 'mysql/mysql-connector-java',
+        lookupName: 'mysql:mysql-connector-java',
         registryUrls: [
           'http://central.maven.org/maven2/',
           'http://invalid_metadata_repo/maven2/',
@@ -185,7 +185,7 @@ describe('datasource/maven', () => {
         .reply(200, invalidMavenMetadata);
       const releases = await datasource.getPkgReleases({
         ...config,
-        lookupName: 'mysql/mysql-connector-java',
+        lookupName: 'mysql:mysql-connector-java',
         registryUrls: [
           'http://central.maven.org/maven2/',
           'http://invalid_metadata_repo/maven2/',
@@ -197,7 +197,7 @@ describe('datasource/maven', () => {
     it('should return all versions of a specific library if a repository does not end with /', async () => {
       const releases = await datasource.getPkgReleases({
         ...config,
-        lookupName: 'mysql/mysql-connector-java',
+        lookupName: 'mysql:mysql-connector-java',
         registryUrls: ['http://central.maven.org/maven2'],
       });
       expect(releases).not.toBeNull();
@@ -206,7 +206,7 @@ describe('datasource/maven', () => {
     it('should return null if no repositories defined', async () => {
       const releases = await datasource.getPkgReleases({
         ...config,
-        lookupName: 'mysql/mysql-connector-java',
+        lookupName: 'mysql:mysql-connector-java',
       });
       expect(releases).toBeNull();
     });
diff --git a/test/manager/maven/__snapshots__/extract.spec.js.snap b/test/manager/maven/__snapshots__/extract.spec.js.snap
index 987c3ad64c..c896b77981 100644
--- a/test/manager/maven/__snapshots__/extract.spec.js.snap
+++ b/test/manager/maven/__snapshots__/extract.spec.js.snap
@@ -7,7 +7,7 @@ Object {
     Object {
       "currentValue": "42",
       "datasource": "maven",
-      "depName": "org.example/parent",
+      "depName": "org.example:parent",
       "fileReplacePosition": 186,
       "registryUrls": Array [
         "https://repo.maven.apache.org/maven2",
@@ -16,7 +16,7 @@ Object {
     Object {
       "currentValue": "0.0.1",
       "datasource": "maven",
-      "depName": "org.example/foo",
+      "depName": "org.example:foo",
       "fileReplacePosition": 757,
       "registryUrls": Array [
         "https://repo.maven.apache.org/maven2",
@@ -25,7 +25,7 @@ Object {
     Object {
       "currentValue": "1.0.0",
       "datasource": "maven",
-      "depName": "org.example/bar",
+      "depName": "org.example:bar",
       "fileReplacePosition": 905,
       "registryUrls": Array [
         "https://repo.maven.apache.org/maven2",
@@ -34,7 +34,7 @@ Object {
     Object {
       "currentValue": "1.8.1",
       "datasource": "maven",
-      "depName": "org.apache.maven.scm/maven-scm-provider-gitexe",
+      "depName": "org.apache.maven.scm:maven-scm-provider-gitexe",
       "fileReplacePosition": 1337,
       "registryUrls": Array [
         "https://repo.maven.apache.org/maven2",
@@ -42,23 +42,23 @@ Object {
     },
     Object {
       "currentValue": "0.0.1",
-      "depName": "org.example/\${artifact-id-placeholder}",
+      "depName": "org.example:\${artifact-id-placeholder}",
       "skipReason": "name-placeholder",
     },
     Object {
       "currentValue": "0.0.1",
-      "depName": "\${group-id-placeholder}/baz",
+      "depName": "\${group-id-placeholder}:baz",
       "skipReason": "name-placeholder",
     },
     Object {
       "currentValue": "\${resourceServerVersion}",
-      "depName": "org.example/quux",
+      "depName": "org.example:quux",
       "skipReason": "version-placeholder",
     },
     Object {
       "currentValue": "1.2.3",
       "datasource": "maven",
-      "depName": "org.example/quuz",
+      "depName": "org.example:quuz",
       "fileReplacePosition": 2529,
       "registryUrls": Array [
         "https://repo.maven.apache.org/maven2",
@@ -66,18 +66,18 @@ Object {
     },
     Object {
       "currentValue": "it's not a version",
-      "depName": "org.example/quuuz",
+      "depName": "org.example:quuuz",
       "skipReason": "not-a-version",
     },
     Object {
       "currentValue": "\${profile-placeholder}",
-      "depName": "org.example/profile-artifact",
+      "depName": "org.example:profile-artifact",
       "skipReason": "version-placeholder",
     },
     Object {
       "currentValue": "2.17",
       "datasource": "maven",
-      "depName": "org.apache.maven.plugins/maven-checkstyle-plugin",
+      "depName": "org.apache.maven.plugins:maven-checkstyle-plugin",
       "fileReplacePosition": 3218,
       "registryUrls": Array [
         "https://repo.maven.apache.org/maven2",
diff --git a/test/manager/maven/index.spec.js b/test/manager/maven/index.spec.js
index f86894ca10..38b53aba5b 100644
--- a/test/manager/maven/index.spec.js
+++ b/test/manager/maven/index.spec.js
@@ -10,7 +10,7 @@ const pomContent = fs.readFileSync(
   'utf8'
 );
 
-const findFn = ({ depName }) => depName === 'org.example/quuz';
+const findFn = ({ depName }) => depName === 'org.example:quuz';
 
 describe('manager/maven', () => {
   describe('extractAllPackageFiles', () => {
-- 
GitLab