Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,10 @@ class TestJvmConstraintsPlugin : Plugin<Project> {
// Jacoco plugin is not applied on every project
project.pluginManager.withPlugin("org.gradle.jacoco") {
project.tasks.withType<Test>().configureEach {
// Disable jacoco for additional 'testJvm' tests to speed things up a bit
if (testJvmSpec.javaTestLauncher.isPresent) {
extensions.configure<JacocoTaskExtension> {
isEnabled = false
}
}
configureJacocoForAdditionalTestJvm(
testJvmSpec.javaTestLauncher.isPresent,
project.rootProject.providers.gradleProperty("checkCoverage").isPresent
)
}
}
}
Expand Down Expand Up @@ -153,3 +151,15 @@ class TestJvmConstraintsPlugin : Plugin<Project> {
taskExtension.nativeImageCapable.convention(projectExtension.nativeImageCapable)
}
}

internal fun Test.configureJacocoForAdditionalTestJvm(
hasAdditionalTestJvmLauncher: Boolean,
checkCoverage: Boolean
) {
// Disable jacoco for additional 'testJvm' tests unless coverage was explicitly requested.
if (hasAdditionalTestJvmLauncher && !checkCoverage) {
extensions.configure<JacocoTaskExtension> {
isEnabled = false
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import datadog.gradle.plugin.testJvmConstraints.TestJvmConstraintsExtension.Comp
import org.assertj.core.api.Assertions.assertThat
import org.gradle.api.tasks.testing.Test as GradleTest
import org.gradle.testfixtures.ProjectBuilder
import org.gradle.testing.jacoco.plugins.JacocoTaskExtension
import org.junit.jupiter.api.Test

class TestJvmConstraintsPluginTest {
Expand All @@ -19,4 +20,52 @@ class TestJvmConstraintsPluginTest {
assertThat(project.extensions.findByName(TEST_JVM_CONSTRAINTS)).isInstanceOf(TestJvmConstraintsExtension::class.java)
assertThat(testTask.extensions.findByName(TEST_JVM_CONSTRAINTS)).isInstanceOf(TestJvmConstraintsExtension::class.java)
}

@Test
fun `jacoco is disabled for additional test jvm when coverage is not checked`() {
val testTask = testTaskWithJacoco()

testTask.configureJacocoForAdditionalTestJvm(
hasAdditionalTestJvmLauncher = true,
checkCoverage = false
)

assertThat(jacocoExtension(testTask).isEnabled).isFalse()
}

@Test
fun `jacoco remains enabled for additional test jvm when coverage is checked`() {
val testTask = testTaskWithJacoco()

testTask.configureJacocoForAdditionalTestJvm(
hasAdditionalTestJvmLauncher = true,
checkCoverage = true
)

assertThat(jacocoExtension(testTask).isEnabled).isTrue()
}

@Test
fun `jacoco remains enabled when using the daemon jvm`() {
val testTask = testTaskWithJacoco()

testTask.configureJacocoForAdditionalTestJvm(
hasAdditionalTestJvmLauncher = false,
checkCoverage = false
)

assertThat(jacocoExtension(testTask).isEnabled).isTrue()
}

private fun testTaskWithJacoco(): GradleTest {
val project = ProjectBuilder.builder().build()

project.pluginManager.apply("java")
project.pluginManager.apply("jacoco")

return project.tasks.named("test", GradleTest::class.java).get()
}

private fun jacocoExtension(testTask: GradleTest): JacocoTaskExtension =
testTask.extensions.getByType(JacocoTaskExtension::class.java)
}