From edec4ad307a73f223c15a5ece545142fdbd34799 Mon Sep 17 00:00:00 2001
From: Sergio Zharinov <zharinov@users.noreply.github.com>
Date: Tue, 4 Jun 2019 12:35:28 +0400
Subject: [PATCH] fix(maven): Fix comparing versions with leading zero (#3884)

---
 lib/versioning/maven/compare.js | 5 +++++
 test/versioning/maven.spec.js   | 7 +++++++
 2 files changed, 12 insertions(+)

diff --git a/lib/versioning/maven/compare.js b/lib/versioning/maven/compare.js
index 9f1cee6453..1ce7fbeff4 100644
--- a/lib/versioning/maven/compare.js
+++ b/lib/versioning/maven/compare.js
@@ -89,12 +89,17 @@ const zeroToken = {
 function tokenize(versionStr) {
   let buf = [];
   let result = [];
+  let leadingZero = true;
   iterateTokens(versionStr.toLowerCase().replace(/^v/i, ''), token => {
     if (token.prefix === PREFIX_HYPHEN) {
       buf = [];
     }
     buf.push(token);
     if (!isNull(token)) {
+      leadingZero = false;
+      result = result.concat(buf);
+      buf = [];
+    } else if (leadingZero) {
       result = result.concat(buf);
       buf = [];
     }
diff --git a/test/versioning/maven.spec.js b/test/versioning/maven.spec.js
index 7bb146d83b..43e6caf118 100644
--- a/test/versioning/maven.spec.js
+++ b/test/versioning/maven.spec.js
@@ -51,6 +51,9 @@ describe('versioning/maven/compare', () => {
     expect(compare('1-0-final', '1-0')).toEqual(0);
     expect(compare('1-0', '1.0')).toEqual(0);
     expect(compare('v1.2.3', '1.2.3')).toEqual(0);
+    expect(compare('0.0-1552', '0.0-1552')).toEqual(0);
+    expect(compare('v0.0-1552', '0.0-1552')).toEqual(0);
+    expect(compare('v0.0.1', '0.0.1')).toEqual(0);
   });
   it('returns less than', () => {
     expect(compare('1', '1.1')).toEqual(-1);
@@ -67,6 +70,8 @@ describe('versioning/maven/compare', () => {
     expect(compare('1-ga.1', '1-sp.1')).toEqual(-1);
     expect(compare('1-sp-1', '1-ga-1')).toEqual(-1);
     expect(compare('1-cr1', '1')).toEqual(-1);
+    expect(compare('0.0-1552', '1.10.520')).toEqual(-1);
+    expect(compare('0.0.1', '999')).toEqual(-1);
   });
   it('returns greater than', () => {
     expect(compare('1.1', '1')).toEqual(1);
@@ -83,6 +88,8 @@ describe('versioning/maven/compare', () => {
     expect(compare('1-sp.1', '1-ga.1')).toEqual(1);
     expect(compare('1-ga-1', '1-sp-1')).toEqual(1);
     expect(compare('1', '1-cr1')).toEqual(1);
+    expect(compare('1.10.520', '0.0-1552')).toEqual(1);
+    expect(compare('999', '0.0.1')).toEqual(1);
   });
 
   const invalidRanges = [
-- 
GitLab