From cff3fdb09105700cd6f955358a3dc7e0abfbf511 Mon Sep 17 00:00:00 2001 From: Igor Motov Date: Mon, 3 Feb 2020 09:47:58 -0500 Subject: [PATCH] Fix version parser used by gradle (#51773) Due to of a typo in the version regex pattern only the last digit of a major version number is taken into consideration. So docker's version 17.0.1 is parsed as 7.0.1. --- .../minimumRuntime/java/org/elasticsearch/gradle/Version.java | 4 ++-- .../src/test/java/org/elasticsearch/gradle/VersionTests.java | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/Version.java b/buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/Version.java index d25baa38569e9..e54601a6ddeb8 100644 --- a/buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/Version.java +++ b/buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/Version.java @@ -29,9 +29,9 @@ public enum Mode { RELAXED } - private static final Pattern pattern = Pattern.compile("(\\d)+\\.(\\d+)\\.(\\d+)(-alpha\\d+|-beta\\d+|-rc\\d+)?(-SNAPSHOT)?"); + private static final Pattern pattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)(-alpha\\d+|-beta\\d+|-rc\\d+)?(-SNAPSHOT)?"); - private static final Pattern relaxedPattern = Pattern.compile("(\\d)+\\.(\\d+)\\.(\\d+)(-[a-zA-Z0-9_]+)*?"); + private static final Pattern relaxedPattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)(-[a-zA-Z0-9_]+)*?"); public Version(int major, int minor, int revision) { Objects.requireNonNull(major, "major version can't be null"); diff --git a/buildSrc/src/test/java/org/elasticsearch/gradle/VersionTests.java b/buildSrc/src/test/java/org/elasticsearch/gradle/VersionTests.java index 253490666d937..34a76f6c6cf5a 100644 --- a/buildSrc/src/test/java/org/elasticsearch/gradle/VersionTests.java +++ b/buildSrc/src/test/java/org/elasticsearch/gradle/VersionTests.java @@ -38,6 +38,7 @@ public void testVersionParsing() { assertVersionEquals("5.1.2-rc3", 5, 1, 2); assertVersionEquals("6.1.2-SNAPSHOT", 6, 1, 2); assertVersionEquals("6.1.2-beta1-SNAPSHOT", 6, 1, 2); + assertVersionEquals("17.03.11", 17, 3, 11); } public void testRelaxedVersionParsing() { @@ -46,6 +47,7 @@ public void testRelaxedVersionParsing() { assertVersionEquals("6.1.2-beta1-SNAPSHOT", 6, 1, 2, Version.Mode.RELAXED); assertVersionEquals("6.1.2-foo", 6, 1, 2, Version.Mode.RELAXED); assertVersionEquals("6.1.2-foo-bar", 6, 1, 2, Version.Mode.RELAXED); + assertVersionEquals("16.01.22", 16, 1, 22, Version.Mode.RELAXED); } public void testCompareWithStringVersions() { @@ -91,6 +93,7 @@ public void testToString() { public void testCompareVersions() { assertEquals(0, new Version(7, 0, 0).compareTo(new Version(7, 0, 0))); + assertOrder(Version.fromString("19.0.1"), Version.fromString("20.0.3")); } public void testExceptionEmpty() {