diff --git a/ontrack-model/src/main/java/net/nemerosa/ontrack/model/ordering/VersionUtils.kt b/ontrack-model/src/main/java/net/nemerosa/ontrack/model/ordering/VersionUtils.kt index 48e0aa2770..325384589a 100644 --- a/ontrack-model/src/main/java/net/nemerosa/ontrack/model/ordering/VersionUtils.kt +++ b/ontrack-model/src/main/java/net/nemerosa/ontrack/model/ordering/VersionUtils.kt @@ -7,10 +7,10 @@ object VersionUtils { /** * Regex used to get a version from the end of a name. */ - val semVerSuffixRegex = ".*(\\d+(\\.\\d+)+)$".toRegex() + val semVerSuffixRegex = "(\\d+(\\.\\d+)+)\$".toRegex() fun getVersionText(regex: Regex, path: String): String? { - val matcher = regex.matchEntire(path) + val matcher = regex.find(path) return if (matcher != null) { // There is at least one capturing group, we can use it if (matcher.groupValues.size >= 2) { diff --git a/ontrack-model/src/test/java/net/nemerosa/ontrack/model/ordering/VersionUtilsTest.kt b/ontrack-model/src/test/java/net/nemerosa/ontrack/model/ordering/VersionUtilsTest.kt index 82567c3cf9..50fced9cd7 100644 --- a/ontrack-model/src/test/java/net/nemerosa/ontrack/model/ordering/VersionUtilsTest.kt +++ b/ontrack-model/src/test/java/net/nemerosa/ontrack/model/ordering/VersionUtilsTest.kt @@ -54,4 +54,12 @@ class VersionUtilsTest { assertNull(VersionUtils.getVersion("master".toRegex(), "master")) } + @Test + fun `Terminal sem ver`() { + assertEquals("99999.51.8", VersionUtils.getVersionText(VersionUtils.semVerSuffixRegex, "release/99999.51.8")) + assertEquals("99999.51", VersionUtils.getVersionText(VersionUtils.semVerSuffixRegex, "release/99999.51")) + assertEquals("1.51", VersionUtils.getVersionText(VersionUtils.semVerSuffixRegex, "release/1.51")) + assertEquals("1.51.89", VersionUtils.getVersionText(VersionUtils.semVerSuffixRegex, "release/1.51.89")) + } + } \ No newline at end of file diff --git a/ontrack-service/src/test/java/net/nemerosa/ontrack/service/templating/BranchVersionTemplatingSourceTest.kt b/ontrack-service/src/test/java/net/nemerosa/ontrack/service/templating/BranchVersionTemplatingSourceTest.kt index 0d35878bd2..2e34094bd3 100644 --- a/ontrack-service/src/test/java/net/nemerosa/ontrack/service/templating/BranchVersionTemplatingSourceTest.kt +++ b/ontrack-service/src/test/java/net/nemerosa/ontrack/service/templating/BranchVersionTemplatingSourceTest.kt @@ -38,6 +38,20 @@ class BranchVersionTemplatingSourceTest { assertEquals("1.8", text) } + @Test + fun `Getting the branch version with default parameters and match using branch name with several digits`() { + val branch = BranchFixtures.testBranch() + every { + branchDisplayNameService.getBranchDisplayName(branch, BranchNamePolicy.DISPLAY_NAME_OR_NAME) + } returns "release/99999.51" + val text = source.render( + entity = branch, + configMap = emptyMap(), + renderer = PlainEventRenderer.INSTANCE, + ) + assertEquals("99999.51", text) + } + @Test fun `Getting the branch version with default parameters and no match`() { val branch = BranchFixtures.testBranch()