Skip to content

Commit dfd58cd

Browse files
neugartftschuchortdev
authored andcommitted
Replacing matchEntire with find in Regex
1 parent 3ccda3a commit dfd58cd

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

src/main/kotlin/com/tschuchort/compiletesting/JavacUtils.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,15 @@ internal fun getJavacVersionString(javacCommand: String): String {
7575

7676
val output = buffer.readUtf8()
7777

78-
return Regex("javac (.*)?[\\s\\S]*").matchEntire(output)?.destructured?.component1()
79-
?: throw IllegalStateException("Command '$javacCommand -version' did not print expected output. " +
80-
"Output was: '$output'")
78+
return parseVersionString(output) ?: throw IllegalStateException(
79+
"Command '$javacCommand -version' did not print expected output. " +
80+
"Output was: '$output'"
81+
)
8182
}
8283

84+
internal fun parseVersionString(output: String) =
85+
Regex("javac (.*)?[\\s\\S]*").find(output)?.destructured?.component1()
86+
8387
internal fun isJavac9OrLater(javacVersionString: String): Boolean {
8488
try {
8589
val (majorv, minorv, patchv, otherv) = Regex("([0-9]*)(?:\\.([0-9]*))?(?:\\.([0-9]*))?(.*)")

src/test/kotlin/com/tschuchort/compiletesting/JavacUtilsTest.kt

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.tschuchort.compiletesting
22

3-
import org.junit.Assert.assertFalse
4-
import org.junit.Assert.assertTrue
3+
import org.junit.Assert.*
54
import org.junit.Test
65

76
class JavacUtilsTest {
@@ -39,4 +38,28 @@ class JavacUtilsTest {
3938
fun `Old version scheme with extra info is parsed correctly`() {
4039
assertTrue(isJavac9OrLater("1.11.0-bla"))
4140
}
41+
42+
@Test
43+
fun `Standard javac -version output is parsed correctly`() {
44+
assertEquals("1.8.0_252", parseVersionString("javac 1.8.0_252"))
45+
}
46+
47+
@Test
48+
fun `javac -version output with JAVA OPTIONS is parsed correctly`() {
49+
assertEquals(
50+
"1.8.0_222",
51+
parseVersionString(
52+
"Picked up _JAVA_OPTIONS: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap javac 1.8.0_222"
53+
)
54+
)
55+
}
56+
57+
@Test
58+
fun `Wrong javac -version output is returning null`() {
59+
assertNull(
60+
parseVersionString(
61+
"wrong javac"
62+
)
63+
)
64+
}
4265
}

0 commit comments

Comments
 (0)