Skip to content

Commit 39c00ee

Browse files
committed
refactor: Simplify test jvm enablement code
1 parent 3ef9429 commit 39c00ee

File tree

3 files changed

+34
-43
lines changed

3 files changed

+34
-43
lines changed

buildSrc/src/main/kotlin/datadog.test-jvm-contraints.gradle.kts

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
import datadog.gradle.plugin.testJvmConstraints.ProvideJvmArgsOnJvmLauncherVersion
22
import datadog.gradle.plugin.testJvmConstraints.TestJvmConstraintsExtension
3-
import datadog.gradle.plugin.testJvmConstraints.TestJvmJavaLauncher
4-
import datadog.gradle.plugin.testJvmConstraints.isJavaLauncherAllowed
3+
import datadog.gradle.plugin.testJvmConstraints.TestJvmSpec
54
import datadog.gradle.plugin.testJvmConstraints.isJavaVersionAllowed
6-
import datadog.gradle.plugin.testJvmConstraints.isJdkExcluded
7-
import datadog.gradle.plugin.testJvmConstraints.isJdkIncluded
8-
import datadog.gradle.plugin.testJvmConstraints.isJdkForced
5+
import datadog.gradle.plugin.testJvmConstraints.isTestJvmAllowed
96

107
plugins {
118
java
129
}
1310

1411
val projectExtension = extensions.create<TestJvmConstraintsExtension>(TestJvmConstraintsExtension.NAME)
1512

16-
val testJvmJavaLauncher = TestJvmJavaLauncher(project)
13+
val testJvmSpec = TestJvmSpec(project)
1714

1815
tasks.withType<Test>().configureEach {
1916
if (extensions.findByName(TestJvmConstraintsExtension.NAME) != null) {
@@ -62,13 +59,10 @@ fun Test.configureJvmArgs(
6259
* can be run with the test task launcher.
6360
*/
6461
fun Test.configureTestJvm(extension: TestJvmConstraintsExtension) {
65-
if (testJvmJavaLauncher.javaTestLauncher.isPresent) {
66-
javaLauncher = testJvmJavaLauncher.javaTestLauncher
62+
if (testJvmSpec.javaTestLauncher.isPresent) {
63+
javaLauncher = testJvmSpec.javaTestLauncher
6764
onlyIf("Allowed or forced JDK") {
68-
extension.isJdkIncluded(testJvmJavaLauncher.normalizedTestJvm.get()) &&
69-
!extension.isJdkExcluded(testJvmJavaLauncher.normalizedTestJvm.get()) &&
70-
(extension.isJavaLauncherAllowed(testJvmJavaLauncher.javaTestLauncher.get()) ||
71-
extension.isJdkForced(testJvmJavaLauncher.normalizedTestJvm.get()))
65+
extension.isTestJvmAllowed(testJvmSpec)
7266
}
7367
} else {
7468
onlyIf("Is current Daemon JVM allowed") {
@@ -91,7 +85,7 @@ fun Test.configureTestJvm(extension: TestJvmConstraintsExtension) {
9185
pluginManager.withPlugin("org.gradle.jacoco") {
9286
tasks.withType<Test>().configureEach {
9387
// Disable jacoco for additional 'testJvm' tests to speed things up a bit
94-
if (testJvmJavaLauncher.javaTestLauncher.isPresent) {
88+
if (testJvmSpec.javaTestLauncher.isPresent) {
9589
extensions.configure<JacocoTaskExtension> {
9690
isEnabled = false
9791
}

buildSrc/src/main/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmConstraintsUtils.kt

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,32 @@ import org.gradle.jvm.toolchain.JavaLauncher
66

77
private val logger = Logging.getLogger("TestJvmConstraintsUtils")
88

9-
private fun TestJvmConstraintsExtension.isJavaVersionAllowedForProperty(currentJvmVersion: JavaVersion): Boolean {
9+
internal fun TestJvmConstraintsExtension.isJavaVersionAllowed(version: JavaVersion): Boolean {
10+
return isWithinAllowedRange(version)
11+
}
12+
13+
internal fun TestJvmConstraintsExtension.isTestJvmAllowed(testJvmSpec: TestJvmSpec): Boolean {
14+
val testJvmName = testJvmSpec.normalizedTestJvm.get()
15+
16+
val included = includeJdk.get()
17+
if (included.isNotEmpty() && included.none { it.equals(testJvmName, ignoreCase = true) }) {
18+
return false
19+
}
20+
21+
val excluded = excludeJdk.get()
22+
if (excluded.isNotEmpty() && excluded.any { it.equals(testJvmName, ignoreCase = true) }) {
23+
return false
24+
}
25+
26+
val launcherVersion = JavaVersion.toVersion(testJvmSpec.javaTestLauncher.get().metadata.languageVersion.asInt())
27+
if (!isWithinAllowedRange(launcherVersion) && forceJdk.get().none { it.equals(testJvmName, ignoreCase = true) }) {
28+
return false
29+
}
30+
31+
return true
32+
}
33+
34+
private fun TestJvmConstraintsExtension.isWithinAllowedRange(currentJvmVersion: JavaVersion): Boolean {
1035
val definedMin = minJavaVersionForTests.isPresent
1136
val definedMax = maxJavaVersionForTests.isPresent
1237

@@ -22,31 +47,3 @@ private fun TestJvmConstraintsExtension.isJavaVersionAllowedForProperty(currentJ
2247

2348
return true
2449
}
25-
26-
internal fun TestJvmConstraintsExtension.isJavaVersionAllowed(version: JavaVersion): Boolean {
27-
return isJavaVersionAllowedForProperty(version)
28-
}
29-
30-
/**
31-
* Convenience method to call [isJavaVersionAllowed]
32-
*/
33-
internal fun TestJvmConstraintsExtension.isJavaLauncherAllowed(javaLauncher: JavaLauncher): Boolean {
34-
val launcherVersion = JavaVersion.toVersion(javaLauncher.metadata.languageVersion.asInt())
35-
return isJavaVersionAllowed(launcherVersion)
36-
}
37-
38-
internal fun TestJvmConstraintsExtension.isJdkForced(javaName: String): Boolean {
39-
return forceJdk.orNull?.any { it.equals(javaName, ignoreCase = true) } ?: false
40-
}
41-
42-
internal fun TestJvmConstraintsExtension.isJdkExcluded(javaName: String): Boolean {
43-
return excludeJdk.get().any { it.equals(javaName, ignoreCase = true) }
44-
}
45-
46-
internal fun TestJvmConstraintsExtension.isJdkIncluded(javaName: String): Boolean {
47-
val included = includeJdk.get()
48-
return when {
49-
included.isEmpty() -> true
50-
else -> included.any { it.equals(javaName, ignoreCase = true) }
51-
}
52-
}

buildSrc/src/main/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmJavaLauncher.kt renamed to buildSrc/src/main/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmSpec.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import java.nio.file.Files
99
import java.nio.file.Path
1010
import java.nio.file.Paths
1111

12-
class TestJvmJavaLauncher(val project: Project) {
12+
class TestJvmSpec(val project: Project) {
1313
private val currentJavaHomePath = project.providers.systemProperty("java.home").map { it.normalizeToJDKJavaHome() }
1414
val normalizedTestJvm = project.providers.gradleProperty("testJvm").map { testJvm ->
1515
if (testJvm.isBlank()) {

0 commit comments

Comments
 (0)