diff --git a/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/data/SemanticVersion.java b/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/data/SemanticVersion.java index 065e359a5..5788ee6df 100644 --- a/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/data/SemanticVersion.java +++ b/bazelrunner/src/main/java/org/jetbrains/bsp/bazel/bazelrunner/data/SemanticVersion.java @@ -7,7 +7,7 @@ public class SemanticVersion implements Comparable { private static final String SEMANTIC_VERSION_REGEX = - "^([0-9]+)\\.([0-9]+)\\.([0-9]+)[\\-a-zA-Z]*"; + "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"; private static final int MAJOR_VERSION_GROUP_ID = 1; private static final int MINOR_VERSION_GROUP_ID = 2; private static final int PATCH_VERSION_GROUP_ID = 3; diff --git a/bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/data/SemanticVersionTest.java b/bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/data/SemanticVersionTest.java index 1640b0a23..51a97d6a3 100644 --- a/bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/data/SemanticVersionTest.java +++ b/bazelrunner/src/test/java/org/jetbrains/bsp/bazel/bazelrunner/data/SemanticVersionTest.java @@ -38,4 +38,13 @@ public void shouldParseHomebrewVersion() { assertEquals(2, version.getMinorVersion()); assertEquals(3, version.getPatchVersion()); } + + @Test + public void shouldParseRollingRelease() { + SemanticVersion version = new SemanticVersion("5.0.0-pre.20210817.2"); + + assertEquals(5, version.getMajorVersion()); + assertEquals(0, version.getMinorVersion()); + assertEquals(0, version.getPatchVersion()); + } }