diff --git a/buildSrc/src/main/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmConstraintsPlugin.kt b/buildSrc/src/main/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmConstraintsPlugin.kt index 3091227b1bc..842b6a5312f 100644 --- a/buildSrc/src/main/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmConstraintsPlugin.kt +++ b/buildSrc/src/main/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmConstraintsPlugin.kt @@ -36,6 +36,8 @@ class TestJvmConstraintsPlugin : Plugin { "vendor" to vendor, "runtimeVersion" to javaRuntimeVersion, "vmVersion" to jvmVersion, + "operatingSystem" to System.getProperty("os.name"), + "architecture" to System.getProperty("os.arch"), ) } }) diff --git a/buildSrc/src/test/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmCacheInputsTest.kt b/buildSrc/src/test/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmCacheInputsTest.kt index e3fbcc90788..7cf97720c1b 100644 --- a/buildSrc/src/test/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmCacheInputsTest.kt +++ b/buildSrc/src/test/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmCacheInputsTest.kt @@ -10,7 +10,7 @@ import org.junit.jupiter.params.provider.ValueSource class TestJvmCacheInputsTest : GradleFixture() { @ParameterizedTest - @ValueSource(strings = ["vendor", "runtimeVersion", "vmVersion"]) + @ValueSource(strings = ["vendor", "runtimeVersion", "vmVersion", "os.name", "os.arch"]) fun `test cache follows the selected launcher identity`(changedField: String) { writeSettings( """ @@ -50,10 +50,15 @@ class TestJvmCacheInputsTest : GradleFixture() { } val launcher = javaToolchains.launcherFor {} - val changedField = providers.gradleProperty("changedJvmField").orElse("") + val changedField = providers.gradleProperty("changedJvmField").orNull + if (changedField?.startsWith("os.") == true) { + val original = System.getProperty(changedField) + System.setProperty(changedField, "different-platform") + gradle.buildFinished { System.setProperty(changedField, original) } + } tasks.test { useJUnitPlatform() - javaLauncher.set(launcher.map { SelectedLauncher(it, changedField.get()) }) + javaLauncher.set(launcher.map { SelectedLauncher(it, changedField ?: "") }) } """ ) diff --git a/buildSrc/src/test/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmConstraintsPluginTest.kt b/buildSrc/src/test/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmConstraintsPluginTest.kt index be600f0eccd..ffeff7a1fff 100644 --- a/buildSrc/src/test/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmConstraintsPluginTest.kt +++ b/buildSrc/src/test/kotlin/datadog/gradle/plugin/testJvmConstraints/TestJvmConstraintsPluginTest.kt @@ -46,6 +46,8 @@ class TestJvmConstraintsPluginTest { "vendor" to metadata.vendor, "runtimeVersion" to metadata.javaRuntimeVersion, "vmVersion" to metadata.jvmVersion, + "operatingSystem" to System.getProperty("os.name"), + "architecture" to System.getProperty("os.arch"), )) } diff --git a/docs/how_to_work_with_gradle.md b/docs/how_to_work_with_gradle.md index 87c111eaa22..c66e8bb85a2 100644 --- a/docs/how_to_work_with_gradle.md +++ b/docs/how_to_work_with_gradle.md @@ -951,7 +951,7 @@ This project provides several custom Gradle extensions to manage multi-JVM testi Controls which JVM versions are allowed to run tests. Applied via the `dd-trace-java.test-jvm-constraints` plugin. -Each `Test` task also tracks its selected JVM's vendor, full runtime version and VM version as inputs. +Each `Test` task also tracks its selected JVM's vendor, full runtime version, VM version, operating system, and architecture as inputs. Changing these values invalidates up-to-date checks and build-cache entries, even when the Java major version stays the same. ```Gradle Kotlin DSL