From 917d6bbe9313c528a2e3b2486b19004cf7122ddc Mon Sep 17 00:00:00 2001 From: Geert Bevin Date: Wed, 1 May 2024 15:12:38 -0400 Subject: [PATCH] Fixed version number parsing to properly detect numerical qualifiers. Fixes #30 Fixes #28 --- src/main/java/rife/bld/dependencies/VersionNumber.java | 2 +- src/test/java/rife/bld/dependencies/TestVersionNumber.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/rife/bld/dependencies/VersionNumber.java b/src/main/java/rife/bld/dependencies/VersionNumber.java index a205e75..1879c9d 100644 --- a/src/main/java/rife/bld/dependencies/VersionNumber.java +++ b/src/main/java/rife/bld/dependencies/VersionNumber.java @@ -32,7 +32,7 @@ public record VersionNumber(Integer major, Integer minor, Integer revision, Stri */ public static final VersionNumber UNKNOWN = new VersionNumber(0, 0, 0, ""); - private static final Pattern VERSION_PATTERN = Pattern.compile("^(?\\d+)(?:\\.(?\\d+)(?:\\.(?\\d+))?)?(?:(?[.\\-])(?.*[^.\\-]))??$"); + private static final Pattern VERSION_PATTERN = Pattern.compile("^(?0|[1-9]\\d*)(?:\\.(?0|[1-9]\\d*)(?:\\.(?0|[1-9]\\d*))?)?(?:(?[.\\-])(?.*[^.\\-]))??$"); /** * Parses a version number from a string representation. diff --git a/src/test/java/rife/bld/dependencies/TestVersionNumber.java b/src/test/java/rife/bld/dependencies/TestVersionNumber.java index 11dbf74..60b389f 100644 --- a/src/test/java/rife/bld/dependencies/TestVersionNumber.java +++ b/src/test/java/rife/bld/dependencies/TestVersionNumber.java @@ -47,6 +47,11 @@ public class TestVersionNumber { assertEquals(VersionNumber.parse("1.2.3_4"), new VersionNumber(1, 2, 0, "3_4")); assertEquals(VersionNumber.parse("1.54b"), new VersionNumber(1, 0, 0, "54b")); + + assertEquals(VersionNumber.parse("2024-02"), new VersionNumber(2024, null, null, "02")); + assertEquals(VersionNumber.parse("2.0-05"), new VersionNumber(2, 0, null, "05")); + assertEquals(VersionNumber.parse("2024.02"), new VersionNumber(2024, null, null, "02", ".")); + assertEquals(VersionNumber.parse("2.0.05"), new VersionNumber(2, 0, null, "05", ".")); } @Test