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