From a821fc4af652a28c1a1ea1d5d8318dbee420ea70 Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Mon, 1 Dec 2025 18:08:48 -0500 Subject: [PATCH 1/2] Cleanup project classpath. Groovy and Spock should not pollute the classpath. --- build.gradle.kts | 3 ++- buildSrc/build.gradle.kts | 5 +++++ .../call-site-instrumentation-plugin/build.gradle.kts | 4 ++-- .../build.gradle | 3 +++ .../civisibility-test-fixtures/build.gradle | 4 ++++ dd-java-agent/agent-iast/build.gradle | 7 ++++--- .../agent-iast/iast-test-fixtures/build.gradle | 3 +++ dd-java-agent/appsec/appsec-test-fixtures/build.gradle | 5 +++++ dd-java-agent/instrumentation-testing/build.gradle | 5 ++++- .../java/java-lang/java-lang-15.0/build.gradle | 1 + .../jetty/jetty-server/jetty-server-11.0/build.gradle | 2 ++ .../jetty/jetty-server/jetty-server-9.0/build.gradle | 2 ++ dd-java-agent/instrumentation/jms/build.gradle | 3 +++ .../kafka/kafka-streams-0.11/build.gradle | 4 +++- .../instrumentation/kotlin-coroutines/build.gradle | 3 +++ .../instrumentation/liberty/liberty-20.0/build.gradle | 9 ++++----- .../instrumentation/liberty/liberty-23.0/build.gradle | 8 ++++---- .../resteasy/resteasy-appsec-3.0/build.gradle | 3 +++ .../jax-rs-annotations-1/build.gradle | 1 - dd-java-agent/instrumentation/selenium/build.gradle | 7 +++++-- .../servlet/jakarta-servlet-5.0/build.gradle | 3 +++ .../javax-servlet/javax-servlet-3.0/build.gradle | 3 +++ dd-java-agent/instrumentation/spark/build.gradle | 4 ++++ .../spring/spring-cloud-zuul-2.0/build.gradle | 4 ++-- .../spring/spring-data-1.8/build.gradle | 3 ++- .../instrumentation/spring/spring-jms-3.1/build.gradle | 3 +++ .../spring-webflux/spring-webflux-5.0/build.gradle | 4 ++-- .../spring-webflux/spring-webflux-6.0/build.gradle | 4 ---- .../spring-webmvc/spring-webmvc-3.1/build.gradle | 4 ++-- .../spring-webmvc/spring-webmvc-5.3/build.gradle | 4 ++-- .../spring-webmvc/spring-webmvc-6.0/build.gradle | 4 ++-- dd-java-agent/instrumentation/synapse-3.0/build.gradle | 2 ++ dd-java-agent/instrumentation/testng/build.gradle | 4 ++++ dd-java-agent/testing/build.gradle | 6 +++--- dd-smoke-tests/appsec/build.gradle | 3 +++ dd-smoke-tests/backend-mock/build.gradle | 3 +++ dd-smoke-tests/build.gradle | 6 +++++- dd-smoke-tests/iast-propagation/build.gradle | 3 ++- dd-smoke-tests/iast-util/build.gradle | 3 +++ dd-smoke-tests/iast-util/iast-util-11/build.gradle | 3 +++ dd-smoke-tests/iast-util/iast-util-17/build.gradle | 4 ++++ dd-smoke-tests/rum/build.gradle | 3 +++ gradle/java_deps.gradle | 3 ++- gradle/libs.versions.toml | 10 +++++++++- utils/test-utils/build.gradle.kts | 7 ++++--- 45 files changed, 137 insertions(+), 45 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 67e0daf4e8a..0e91fa243fa 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,6 +2,8 @@ import com.diffplug.gradle.spotless.SpotlessExtension import datadog.gradle.plugin.ci.testAggregate plugins { + kotlin("jvm") version libs.versions.kotlin.plugin apply false + id("dd-trace-java.gradle-debug") id("dd-trace-java.dependency-locking") id("dd-trace-java.tracer-version") @@ -16,7 +18,6 @@ plugins { id("com.gradleup.shadow") version "8.3.6" apply false id("me.champeau.jmh") version "0.7.3" apply false id("org.gradle.playframework") version "0.13" apply false - kotlin("jvm") version libs.versions.kotlin.plugin apply false } description = "dd-trace-java" diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index b4298b1849c..5b805cdfc1a 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -18,6 +18,7 @@ gradlePlugin { id = "dd-trace-java.instrument" implementationClass = "InstrumentPlugin" } + create("muzzle-plugin") { id = "dd-trace-java.muzzle" implementationClass = "datadog.gradle.plugin.muzzle.MuzzlePlugin" @@ -26,18 +27,22 @@ gradlePlugin { id = "dd-trace-java.call-site-instrumentation" implementationClass = "datadog.gradle.plugin.csi.CallSiteInstrumentationPlugin" } + create("tracer-version-plugin") { id = "dd-trace-java.tracer-version" implementationClass = "datadog.gradle.plugin.version.TracerVersionPlugin" } + create("dump-hanged-test-plugin") { id = "dd-trace-java.dump-hanged-test" implementationClass = "datadog.gradle.plugin.dump.DumpHangedTestPlugin" } + create("supported-config-generation") { id = "dd-trace-java.supported-config-generator" implementationClass = "datadog.gradle.plugin.config.SupportedConfigPlugin" } + create("supported-config-linter") { id = "dd-trace-java.config-inversion-linter" implementationClass = "datadog.gradle.plugin.config.ConfigInversionLinter" diff --git a/buildSrc/call-site-instrumentation-plugin/build.gradle.kts b/buildSrc/call-site-instrumentation-plugin/build.gradle.kts index 8b8793e721c..ea64b871e31 100644 --- a/buildSrc/call-site-instrumentation-plugin/build.gradle.kts +++ b/buildSrc/call-site-instrumentation-plugin/build.gradle.kts @@ -32,10 +32,10 @@ dependencies { implementation("org.freemarker", "freemarker", "2.3.30") implementation(libs.asm) implementation(libs.asm.tree) - implementation("com.github.javaparser", "javaparser-symbol-solver-core", "3.24.4") + implementation(libs.javaparser.symbol.solver) testImplementation(libs.bytebuddy) - testImplementation(libs.groovy) + testImplementation(libs.bundles.groovy) testImplementation(libs.bundles.spock) testImplementation("javax.servlet", "javax.servlet-api", "3.0.1") testImplementation("com.github.spotbugs", "spotbugs-annotations", "4.2.0") diff --git a/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/build.gradle b/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/build.gradle index dec74075fae..01f83345bfe 100644 --- a/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/build.gradle +++ b/dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/build.gradle @@ -4,5 +4,8 @@ apply from: "$rootDir/gradle/version.gradle" dependencies { api project(':dd-java-agent:instrumentation-testing') api project(':dd-java-agent:agent-ci-visibility:civisibility-test-fixtures') + + compileOnly(libs.bundles.groovy) + compileOnly(libs.bundles.spock) } diff --git a/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/build.gradle b/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/build.gradle index 9dae3654dd3..2e2d7a6c16a 100644 --- a/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/build.gradle +++ b/dd-java-agent/agent-ci-visibility/civisibility-test-fixtures/build.gradle @@ -11,5 +11,9 @@ dependencies { api libs.jackson.databind api group: 'org.msgpack', name: 'jackson-dataformat-msgpack', version: '0.9.6' api group: 'org.xmlunit', name: 'xmlunit-core', version: '2.10.3' + + compileOnly(libs.junit.jupiter) + compileOnly(libs.bundles.groovy) + compileOnly(libs.bundles.spock) } diff --git a/dd-java-agent/agent-iast/build.gradle b/dd-java-agent/agent-iast/build.gradle index 707af32464e..159ade30593 100644 --- a/dd-java-agent/agent-iast/build.gradle +++ b/dd-java-agent/agent-iast/build.gradle @@ -48,10 +48,11 @@ dependencies { testImplementation project(':utils:test-utils') testImplementation project(':dd-java-agent:agent-bootstrap') - testImplementation libs.bytebuddy testImplementation('org.skyscreamer:jsonassert:1.5.1') - testImplementation libs.groovy.yaml - testImplementation libs.guava + testImplementation(libs.bytebuddy) + testImplementation(libs.guava) + + testImplementation(libs.groovy.yaml) testImplementation group: 'io.grpc', name: 'grpc-core', version: grpcVersion testImplementation group: 'io.grpc', name: 'grpc-protobuf', version: grpcVersion diff --git a/dd-java-agent/agent-iast/iast-test-fixtures/build.gradle b/dd-java-agent/agent-iast/iast-test-fixtures/build.gradle index e822e95efcc..248d7a9e008 100644 --- a/dd-java-agent/agent-iast/iast-test-fixtures/build.gradle +++ b/dd-java-agent/agent-iast/iast-test-fixtures/build.gradle @@ -4,4 +4,7 @@ apply from: "$rootDir/gradle/version.gradle" dependencies { api project(':dd-java-agent:agent-iast') api project(':dd-java-agent:instrumentation-testing') + + compileOnly(libs.bundles.groovy) + compileOnly(libs.bundles.spock) } diff --git a/dd-java-agent/appsec/appsec-test-fixtures/build.gradle b/dd-java-agent/appsec/appsec-test-fixtures/build.gradle index 7adb94080e9..a7f64623b36 100644 --- a/dd-java-agent/appsec/appsec-test-fixtures/build.gradle +++ b/dd-java-agent/appsec/appsec-test-fixtures/build.gradle @@ -4,6 +4,11 @@ apply from: "$rootDir/gradle/version.gradle" dependencies { api project(':dd-java-agent:appsec') api project(':dd-java-agent:instrumentation-testing') + + compileOnly(libs.junit.jupiter) + + compileOnly(libs.bundles.groovy) + compileOnly(libs.bundles.spock) } configurations.named('api') { diff --git a/dd-java-agent/instrumentation-testing/build.gradle b/dd-java-agent/instrumentation-testing/build.gradle index d4b3e247854..076b9d77da5 100644 --- a/dd-java-agent/instrumentation-testing/build.gradle +++ b/dd-java-agent/instrumentation-testing/build.gradle @@ -4,7 +4,6 @@ dependencies { api libs.bytebuddy api libs.bytebuddyagent api libs.slf4j - api libs.bundles.spock api libs.bundles.test.logging api libs.guava @@ -12,6 +11,7 @@ dependencies { implementation project(':dd-java-agent:agent-debugger') + implementation(libs.junit.jupiter) implementation "org.junit.platform:junit-platform-runner:${libs.versions.junit.platform.get()}" testImplementation project(':dd-java-agent:instrumentation:trace-annotation') @@ -23,4 +23,7 @@ dependencies { // We have autoservices defined in test subtree, looks like we need this to be able to properly rebuild this testAnnotationProcessor libs.autoservice.processor testCompileOnly libs.autoservice.annotation + + compileOnly(libs.bundles.groovy) + compileOnly(libs.bundles.spock) } diff --git a/dd-java-agent/instrumentation/java/java-lang/java-lang-15.0/build.gradle b/dd-java-agent/instrumentation/java/java-lang/java-lang-15.0/build.gradle index 3304f103f20..4f46b2aa45d 100644 --- a/dd-java-agent/instrumentation/java/java-lang/java-lang-15.0/build.gradle +++ b/dd-java-agent/instrumentation/java/java-lang/java-lang-15.0/build.gradle @@ -28,6 +28,7 @@ csi { addTestSuiteForDir('latestDepTest', 'test') dependencies { + testImplementation(libs.javaparser) testRuntimeOnly project(':dd-java-agent:instrumentation:iast-instrumenter') } diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle index 111367c055c..cf2bb7155f4 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-11.0/build.gradle @@ -29,6 +29,8 @@ dependencies { testFixturesCompileOnly "org.eclipse.jetty.websocket:websocket-jakarta-server:11.0.0" testFixturesImplementation group: 'jakarta.websocket', name: 'jakarta.websocket-client-api', version: '2.0.0' + testFixturesCompileOnly(libs.bundles.groovy) + testFixturesImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } diff --git a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle index 3a1e9dfa6dd..d9039758f93 100644 --- a/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle +++ b/dd-java-agent/instrumentation/jetty/jetty-server/jetty-server-9.0/build.gradle @@ -46,4 +46,6 @@ dependencies { testImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) testFixturesImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) testImplementation project(':dd-java-agent:appsec:appsec-test-fixtures') + + testFixturesCompileOnly(libs.bundles.groovy) } diff --git a/dd-java-agent/instrumentation/jms/build.gradle b/dd-java-agent/instrumentation/jms/build.gradle index 717ef42380d..e919a0bf12e 100644 --- a/dd-java-agent/instrumentation/jms/build.gradle +++ b/dd-java-agent/instrumentation/jms/build.gradle @@ -45,4 +45,7 @@ dependencies { latestDepTestImplementation group: 'org.hornetq', name: 'hornetq-jms-client', version: '2.4.7.Final' latestDepTestImplementation group: 'org.hornetq', name: 'hornetq-jms-server', version: '2.4.7.Final' + + // For this module Groovy 3 needs `org.junit.rules.ExternalResource` from JUnit4. + testImplementation(libs.junit4) } diff --git a/dd-java-agent/instrumentation/kafka/kafka-streams-0.11/build.gradle b/dd-java-agent/instrumentation/kafka/kafka-streams-0.11/build.gradle index f8bd3970654..0ab6b30ad7f 100644 --- a/dd-java-agent/instrumentation/kafka/kafka-streams-0.11/build.gradle +++ b/dd-java-agent/instrumentation/kafka/kafka-streams-0.11/build.gradle @@ -24,9 +24,11 @@ dependencies { testImplementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.2.3' testImplementation group: 'org.mockito', name: 'mockito-core', version: '2.19.0' + // This module still needs Spock with JUnit4. + testImplementation(libs.spock.junit4) + // Include latest version of kafka itself along with latest version of client libs. // This seems to help with jar compatibility hell. - latestDepTestImplementation libs.spock.junit4 // This module still needs Spock with JUnit4. latestDepTestImplementation group: 'org.apache.kafka', name: 'kafka_2.13', version: '2.+' latestDepTestImplementation group: 'org.apache.kafka', name: 'kafka-clients', version: '2.+' latestDepTestImplementation group: 'org.apache.kafka', name: 'kafka-streams', version: '2.+' diff --git a/dd-java-agent/instrumentation/kotlin-coroutines/build.gradle b/dd-java-agent/instrumentation/kotlin-coroutines/build.gradle index 453ab37dfe6..fd3db60812a 100644 --- a/dd-java-agent/instrumentation/kotlin-coroutines/build.gradle +++ b/dd-java-agent/instrumentation/kotlin-coroutines/build.gradle @@ -69,4 +69,7 @@ dependencies { latestDepTestImplementation libs.kotlin latestDepTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.+" latestDepTestImplementation testFixtures(project(':dd-java-agent:instrumentation:kotlin-coroutines')) + + testFixturesCompileOnly(libs.bundles.groovy) + testFixturesCompileOnly(libs.bundles.spock) } diff --git a/dd-java-agent/instrumentation/liberty/liberty-20.0/build.gradle b/dd-java-agent/instrumentation/liberty/liberty-20.0/build.gradle index 05aaa11b0a6..7feba42cb3d 100644 --- a/dd-java-agent/instrumentation/liberty/liberty-20.0/build.gradle +++ b/dd-java-agent/instrumentation/liberty/liberty-20.0/build.gradle @@ -42,6 +42,8 @@ dependencies { testRuntimeOnly files(filterLogbackClassic.map { it.destinationDir }) testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0') + testImplementation(libs.groovy.xml) + webappCompileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0' // compileOnly to avoid bringing all the test dependencies to the test app // these are to be provided by the system classloader on test time @@ -50,15 +52,12 @@ dependencies { add("webappImplementation", testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0'))) { transitive = false } - // use the above instead of: - // webappImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0')) - // because using testFixtures() causes some early evaluation of dependencies - webappRuntimeOnly libs.groovy + + webappCompileOnly(libs.bundles.spock) } configurations.named("testRuntimeOnly") { exclude group: 'ch.qos.logback', module: 'logback-classic' - exclude group: 'org.codehaus.groovy', module: 'groovy-servlet' } configurations.named("webappRuntimeClasspath") { exclude group: 'ch.qos.logback', module: 'logback-classic' diff --git a/dd-java-agent/instrumentation/liberty/liberty-23.0/build.gradle b/dd-java-agent/instrumentation/liberty/liberty-23.0/build.gradle index b4346554f1e..bc8b7405ed1 100644 --- a/dd-java-agent/instrumentation/liberty/liberty-23.0/build.gradle +++ b/dd-java-agent/instrumentation/liberty/liberty-23.0/build.gradle @@ -49,6 +49,8 @@ dependencies { testRuntimeOnly project(':dd-java-agent:instrumentation:servlet:jakarta-servlet-5.0') testRuntimeOnly files(shadowJar.map { it.archiveFile }) + testImplementation(libs.groovy.xml) + webappCompileOnly group: 'jakarta.servlet', name: 'jakarta.servlet-api', version: '5.0.0' // compileOnly to avoid bringing all the test dependencies to the test app // these are to be provided by the system classloader on test time @@ -57,10 +59,8 @@ dependencies { add("webappImplementation", testFixtures(project(':dd-java-agent:instrumentation:servlet:jakarta-servlet-5.0'))) { transitive = false } - // use the above instead of: - // webappImplementation testFixtures(project(':dd-java-agent:instrumentation:servlet:jakarta-servlet-5.0')) - // because using testFixtures() causes some early evaluation of dependencies - webappRuntimeOnly libs.groovy + + webappCompileOnly(libs.bundles.spock) } configurations.named("testRuntimeOnly") { diff --git a/dd-java-agent/instrumentation/resteasy/resteasy-appsec-3.0/build.gradle b/dd-java-agent/instrumentation/resteasy/resteasy-appsec-3.0/build.gradle index 9d05c66c564..700d97ad611 100644 --- a/dd-java-agent/instrumentation/resteasy/resteasy-appsec-3.0/build.gradle +++ b/dd-java-agent/instrumentation/resteasy/resteasy-appsec-3.0/build.gradle @@ -28,6 +28,7 @@ tasks.named("test", Test) { configurations.configureEach { resolutionStrategy.deactivateDependencyLocking() } + dependencies { compileOnly group: 'org.jboss.resteasy', name: 'resteasy-jaxrs', version: '3.0.0.Final' compileOnly group: 'org.jboss.resteasy', name: 'resteasy-multipart-provider', version: '3.0.0.Final' @@ -38,6 +39,8 @@ dependencies { testFixturesImplementation project(':dd-java-agent:instrumentation-testing'), { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } + testFixturesCompileOnly(libs.bundles.groovy) + testFixturesCompileOnly(libs.bundles.spock) testImplementation project(':dd-java-agent:instrumentation-testing'), { exclude group: 'org.eclipse.jetty', module: 'jetty-server' diff --git a/dd-java-agent/instrumentation/rs/jax-rs/jax-rs-annotations/jax-rs-annotations-1/build.gradle b/dd-java-agent/instrumentation/rs/jax-rs/jax-rs-annotations/jax-rs-annotations-1/build.gradle index 7d1844129c7..5d7c4c60eee 100644 --- a/dd-java-agent/instrumentation/rs/jax-rs/jax-rs-annotations/jax-rs-annotations-1/build.gradle +++ b/dd-java-agent/instrumentation/rs/jax-rs/jax-rs-annotations/jax-rs-annotations-1/build.gradle @@ -16,7 +16,6 @@ apply from: "$rootDir/gradle/java.gradle" dependencies { compileOnly group: 'javax.ws.rs', name: 'jsr311-api', version: '1.1.1' - testImplementation libs.spock.junit4 // This module still needs Spock with JUnit4. testImplementation group: 'io.dropwizard', name: 'dropwizard-testing', version: '0.7.1' testImplementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.2.3' } diff --git a/dd-java-agent/instrumentation/selenium/build.gradle b/dd-java-agent/instrumentation/selenium/build.gradle index a33ac686525..24c5b880448 100644 --- a/dd-java-agent/instrumentation/selenium/build.gradle +++ b/dd-java-agent/instrumentation/selenium/build.gradle @@ -22,8 +22,11 @@ dependencies { testFixturesApi project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') testFixturesApi project(':dd-java-agent:instrumentation:junit:junit-5.3') - testFixturesApi group: 'org.junit.platform', name: 'junit-platform-launcher', version: libs.versions.junit.platform.get() - testFixturesApi group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: libs.versions.junit5.get() + testFixturesApi(libs.junit.platform.launcher) + testFixturesApi(libs.junit.jupiter.engine) + + testFixturesCompileOnly(libs.bundles.groovy) + testFixturesCompileOnly(libs.bundles.spock) testImplementation group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.141.59' testImplementation group: 'org.seleniumhq.selenium', name: 'htmlunit-driver', version: '2.70.0' diff --git a/dd-java-agent/instrumentation/servlet/jakarta-servlet-5.0/build.gradle b/dd-java-agent/instrumentation/servlet/jakarta-servlet-5.0/build.gradle index c66fe766504..881c00118ad 100644 --- a/dd-java-agent/instrumentation/servlet/jakarta-servlet-5.0/build.gradle +++ b/dd-java-agent/instrumentation/servlet/jakarta-servlet-5.0/build.gradle @@ -69,6 +69,9 @@ dependencies { } testFixturesCompileOnly group: 'jakarta.servlet', name: 'jakarta.servlet-api', version: '5.0.0' + testFixturesCompileOnly(libs.bundles.groovy) + testFixturesCompileOnly(libs.bundles.spock) + // tested on tomcat-5.5:latestDepTest } diff --git a/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/build.gradle b/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/build.gradle index 3f894736015..0ef49c0e83f 100644 --- a/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/build.gradle +++ b/dd-java-agent/instrumentation/servlet/javax-servlet/javax-servlet-3.0/build.gradle @@ -43,6 +43,9 @@ dependencies { } testFixturesCompileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1' + testFixturesCompileOnly(libs.bundles.groovy) + testFixturesCompileOnly(libs.bundles.spock) + testImplementation(project(':dd-java-agent:instrumentation-testing')) { exclude group: 'org.eclipse.jetty', module: 'jetty-server' } diff --git a/dd-java-agent/instrumentation/spark/build.gradle b/dd-java-agent/instrumentation/spark/build.gradle index b3b9965c9d0..7553d0f4fb2 100644 --- a/dd-java-agent/instrumentation/spark/build.gradle +++ b/dd-java-agent/instrumentation/spark/build.gradle @@ -6,6 +6,7 @@ apply from: "$rootDir/gradle/java.gradle" configurations.configureEach { resolutionStrategy.deactivateDependencyLocking() } + dependencies { compileOnly group: 'org.apache.spark', name: 'spark-core_2.12', version: '2.4.0' compileOnly group: 'org.apache.spark', name: 'spark-sql_2.12', version: '2.4.0' @@ -20,4 +21,7 @@ dependencies { testFixturesCompileOnly group: 'org.apache.spark', name: 'spark-core_2.12', version: '2.4.0' testFixturesCompileOnly group: 'org.apache.spark', name: 'spark-sql_2.12', version: '2.4.0' testFixturesCompileOnly group: 'org.apache.spark', name: 'spark-yarn_2.12', version: '2.4.0' + + testFixturesCompileOnly(libs.bundles.groovy) + testFixturesCompileOnly(libs.bundles.spock) } diff --git a/dd-java-agent/instrumentation/spring/spring-cloud-zuul-2.0/build.gradle b/dd-java-agent/instrumentation/spring/spring-cloud-zuul-2.0/build.gradle index daf520accae..3c0b93b9c7f 100644 --- a/dd-java-agent/instrumentation/spring/spring-cloud-zuul-2.0/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-cloud-zuul-2.0/build.gradle @@ -37,8 +37,6 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:apache-httpclient:apache-httpclient-4.0') testImplementation project(':dd-java-agent:instrumentation:http-url-connection') - testImplementation libs.spock.spring - // These two version sets are compatible together: testImplementation enforcedPlatform('org.springframework.boot:spring-boot-dependencies:2.3.5.RELEASE') { exclude group: 'net.bytebuddy', module: 'byte-buddy' // we don't want this shared dependency pinned @@ -64,4 +62,6 @@ dependencies { testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-web' testImplementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-netflix-zuul' testImplementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind' + + testImplementation(libs.spock.spring) } diff --git a/dd-java-agent/instrumentation/spring/spring-data-1.8/build.gradle b/dd-java-agent/instrumentation/spring/spring-data-1.8/build.gradle index 2cbe98f0ee8..12816958144 100644 --- a/dd-java-agent/instrumentation/spring/spring-data-1.8/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-data-1.8/build.gradle @@ -37,7 +37,6 @@ dependencies { compileOnly(group: 'org.springframework', name: 'spring-aop', version: '1.2') implementation project(':dd-java-agent:agent-debugger:debugger-bootstrap') - testImplementation libs.spock.spring testImplementation group: 'org.springframework', name: 'spring-test', version: '3.0.0.RELEASE' // JPA dependencies @@ -47,6 +46,8 @@ dependencies { testImplementation group: 'org.hsqldb', name: 'hsqldb', version: '2.0.0' testImplementation group: 'org.hibernate', name: 'hibernate-entitymanager', version: '4.3.0.Final' + testImplementation(libs.spock.spring) + latestDepTestImplementation group: 'org.springframework', name: 'spring-test', version: '5.+' latestDepTestImplementation group: 'org.springframework', name: 'spring-context', version: '5.+' diff --git a/dd-java-agent/instrumentation/spring/spring-jms-3.1/build.gradle b/dd-java-agent/instrumentation/spring/spring-jms-3.1/build.gradle index ecc8a113a6f..5588c751ec3 100644 --- a/dd-java-agent/instrumentation/spring/spring-jms-3.1/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-jms-3.1/build.gradle @@ -30,6 +30,9 @@ dependencies { testImplementation group: 'org.apache.activemq', name: 'activemq-pool', version: '5.14.5' testImplementation group: 'org.apache.activemq', name: 'activemq-broker', version: '5.14.5' + // For this module Groovy 3 needs `org.junit.rules.ExternalResource` from JUnit4. + testImplementation(libs.junit4) + latestDepTestImplementation group: 'org.springframework', name: 'spring-jms', version: '5.+' latestDepTestImplementation group: 'org.springframework', name: 'spring-context', version: '5.+' } diff --git a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/build.gradle b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/build.gradle index 68163949547..7fdf2422e09 100644 --- a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-5.0/build.gradle @@ -60,7 +60,6 @@ muzzle { apply from: "$rootDir/gradle/java.gradle" - addTestSuiteForDir('latestDepTest', 'test') addTestSuiteForDir('latestBoot20Test', 'bootTest') addTestSuiteForDir('latestBoot24Test', 'bootTest') @@ -86,12 +85,13 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:reactor-core-3.1') testImplementation project(':dd-java-agent:instrumentation:reactive-streams') testImplementation project(':dd-java-agent:instrumentation:reactor-netty-1') - testImplementation libs.spock.spring testImplementation group: 'org.springframework', name: 'spring-webflux', version: '5.0.0.RELEASE' testImplementation group: 'io.projectreactor.ipc', name: 'reactor-netty', version: '0.7.0.RELEASE' testImplementation group: 'org.springframework', name: 'spring-test', version: '5.0.0.RELEASE' + testImplementation(libs.spock.spring) + latestDepTestImplementation group: 'org.springframework', name: 'spring-webflux', version: '5.+' // This is the key dep that breaks things, 1.x doesn't work latestDepTestImplementation group: 'io.projectreactor.netty', name: 'reactor-netty', version: '0.+' diff --git a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle index 74aa20688cd..6b55541cd07 100644 --- a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle @@ -32,7 +32,6 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:reactive-streams') testImplementation project(':dd-java-agent:instrumentation:reactor-netty-1') - testImplementation libs.spock.spring testImplementation group: 'org.springframework', name: 'spring-webflux', version: '6.0.0' testImplementation group: 'io.projectreactor.netty', name: 'reactor-netty', version: '1.1.3' testImplementation group: 'org.springframework', name: 'spring-test', version: '6.0.0' @@ -45,12 +44,10 @@ dependencies { bootTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-webflux', version: '3.0.0' bootTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '3.0.0' bootTestImplementation project(':dd-java-agent:instrumentation:spring:spring-webflux:spring-webflux-5.0') - bootTestImplementation libs.spock.spring latestDepBootTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-webflux', version: '3.+' latestDepBootTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '3.+' latestDepBootTestImplementation project(':dd-java-agent:instrumentation:spring:spring-webflux:spring-webflux-5.0') - latestDepBootTestImplementation libs.spock.spring iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-reactor-netty', version: '3.0.0' iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-json', version: '3.0.0' @@ -63,6 +60,5 @@ dependencies { iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '3.0.0' iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-reactor-netty', version: '3.0.0' iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-json', version: '3.0.0' - iastTestImplementation libs.spock.spring } diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/build.gradle b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/build.gradle index b4271d94180..b78ba6edd6f 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-3.1/build.gradle @@ -66,8 +66,6 @@ dependencies { testImplementation group: 'javax.validation', name: 'validation-api', version: '1.1.0.Final' testImplementation group: 'org.hibernate', name: 'hibernate-validator', version: '5.4.2.Final' - testImplementation libs.spock.spring - testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '1.5.17.RELEASE' testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.5.17.RELEASE' testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-websocket', version: '1.5.17.RELEASE' @@ -80,6 +78,8 @@ dependencies { testImplementation group: 'org.jboss.resteasy', name: 'resteasy-spring', version: '3.0.0.Final' + testImplementation(libs.spock.spring) + latestDepTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.+' latestDepTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.+' latestDepTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-websocket', version: '2.+' diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/build.gradle b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/build.gradle index 9db995f2046..df112e975a7 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-5.3/build.gradle @@ -21,10 +21,10 @@ dependencies { testImplementation project(':dd-java-agent:instrumentation:servlet:javax-servlet:javax-servlet-3.0') testImplementation project(':dd-java-agent:instrumentation:spring:spring-webmvc:spring-webmvc-3.1') - testImplementation libs.spock.spring - testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.7.5' testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.7.5' + testImplementation(libs.spock.spring) + testRuntimeOnly project(':dd-java-agent:instrumentation:iast-instrumenter') } diff --git a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/build.gradle b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/build.gradle index f7b6603d1f3..6653fb340a4 100644 --- a/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-webmvc/spring-webmvc-6.0/build.gradle @@ -47,14 +47,14 @@ dependencies { testRuntimeOnly project(':dd-java-agent:instrumentation:websocket:jakarta-websocket-2.0') testImplementation project(':dd-java-agent:instrumentation:servlet:jakarta-servlet-5.0') - testImplementation libs.spock.spring - testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '3.0.0' testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '3.0.0' testImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '3.0.0' testImplementation group: 'org.springframework', name: 'spring-websocket', version: '6.0.2' testImplementation group: 'com.google.code.gson', name: 'gson', version: '+' + testImplementation(libs.spock.spring) + latestDepTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '3.+' latestDepTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '3.+' latestDepTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '3.+' diff --git a/dd-java-agent/instrumentation/synapse-3.0/build.gradle b/dd-java-agent/instrumentation/synapse-3.0/build.gradle index a8c0c4dd48c..ff064a0e6c4 100644 --- a/dd-java-agent/instrumentation/synapse-3.0/build.gradle +++ b/dd-java-agent/instrumentation/synapse-3.0/build.gradle @@ -23,5 +23,7 @@ dependencies { testImplementation group: 'org.apache.synapse', name: 'synapse-core', version: '3.0.0' + testImplementation(libs.groovy.templates) + latestDepTestImplementation group: 'org.apache.synapse', name: 'synapse-core', version: '+' } diff --git a/dd-java-agent/instrumentation/testng/build.gradle b/dd-java-agent/instrumentation/testng/build.gradle index 36966fc9165..99a6a8557d9 100644 --- a/dd-java-agent/instrumentation/testng/build.gradle +++ b/dd-java-agent/instrumentation/testng/build.gradle @@ -10,7 +10,11 @@ dependencies { testFixturesApi project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures') testFixturesImplementation group: 'org.testng', name: 'testng', version: '6.4' + testFixturesImplementation libs.junit.jupiter testFixturesApi group: 'org.apache.maven', name: 'maven-artifact', version: '3.9.9' + + testFixturesCompileOnly(libs.bundles.groovy) + testFixturesCompileOnly(libs.bundles.spock) } // gradle can't downgrade the testng dependencies with `strictly` and IntelliJ IDEA reports diff --git a/dd-java-agent/testing/build.gradle b/dd-java-agent/testing/build.gradle index 1780cd406ad..b280e1b48f9 100644 --- a/dd-java-agent/testing/build.gradle +++ b/dd-java-agent/testing/build.gradle @@ -35,7 +35,6 @@ dependencies { api libs.bytebuddy api libs.bytebuddyagent api libs.slf4j - api libs.bundles.spock api libs.bundles.test.logging api libs.guava @@ -48,10 +47,11 @@ dependencies { api project(':utils:test-utils') api project(':utils:time-utils') - api libs.groovy - implementation "org.junit.platform:junit-platform-runner:${libs.versions.junit.platform.get()}" implementation project(':dd-java-agent:appsec') + + compileOnly(libs.bundles.groovy) + compileOnly(libs.bundles.spock) } tasks.named("shadowJar", ShadowJar) { diff --git a/dd-smoke-tests/appsec/build.gradle b/dd-smoke-tests/appsec/build.gradle index f5a54e7985a..78b188094d8 100644 --- a/dd-smoke-tests/appsec/build.gradle +++ b/dd-smoke-tests/appsec/build.gradle @@ -4,4 +4,7 @@ description = 'appsec-smoke-tests' dependencies { api project(':dd-smoke-tests') + + compileOnly(libs.bundles.groovy) + compileOnly(libs.bundles.spock) } diff --git a/dd-smoke-tests/backend-mock/build.gradle b/dd-smoke-tests/backend-mock/build.gradle index 94fe5563ee6..096c944c0f2 100644 --- a/dd-smoke-tests/backend-mock/build.gradle +++ b/dd-smoke-tests/backend-mock/build.gradle @@ -4,4 +4,7 @@ description = 'Mock Datadog backend used by smoke tests.' dependencies { implementation project(':dd-smoke-tests') api project(':dd-java-agent:agent-ci-visibility:civisibility-test-fixtures') + + compileOnly(libs.bundles.groovy) + compileOnly(libs.bundles.spock) } diff --git a/dd-smoke-tests/build.gradle b/dd-smoke-tests/build.gradle index 630c7a83014..15e070ea84d 100644 --- a/dd-smoke-tests/build.gradle +++ b/dd-smoke-tests/build.gradle @@ -5,10 +5,14 @@ apply from: "$rootDir/gradle/java.gradle" description = 'dd-smoke-tests' dependencies { - api libs.bundles.spock api libs.okhttp api project(':dd-java-agent:testing') api project(':utils:test-agent-utils:decoder') + + compileOnly(libs.junit.jupiter) + + compileOnly(libs.bundles.groovy) + compileOnly(libs.bundles.spock) } tasks.withType(GroovyCompile).configureEach { diff --git a/dd-smoke-tests/iast-propagation/build.gradle b/dd-smoke-tests/iast-propagation/build.gradle index e9c0b0fd8a8..e93a6fff92c 100644 --- a/dd-smoke-tests/iast-propagation/build.gradle +++ b/dd-smoke-tests/iast-propagation/build.gradle @@ -37,11 +37,12 @@ dependencies { implementation project(':dd-trace-api') implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.5.4' implementation libs.scala213 - implementation libs.groovy implementation libs.kotlin testImplementation project(':dd-smoke-tests') testImplementation(testFixtures(project(":dd-smoke-tests:iast-util"))) + + compileOnly(libs.bundles.groovy) } tasks.withType(Test).configureEach { diff --git a/dd-smoke-tests/iast-util/build.gradle b/dd-smoke-tests/iast-util/build.gradle index ab33dca3efd..4219698314c 100644 --- a/dd-smoke-tests/iast-util/build.gradle +++ b/dd-smoke-tests/iast-util/build.gradle @@ -25,4 +25,7 @@ dependencies { implementation 'com.sun.mail:jakarta.mail:2.0.1' // text sanitization implementation group: 'org.apache.commons', name: 'commons-text', version: '1.0' + + testFixturesCompileOnly(libs.bundles.groovy) + testFixturesCompileOnly(libs.bundles.spock) } diff --git a/dd-smoke-tests/iast-util/iast-util-11/build.gradle b/dd-smoke-tests/iast-util/iast-util-11/build.gradle index 198ae793c1f..1e9ac4ce3f9 100644 --- a/dd-smoke-tests/iast-util/iast-util-11/build.gradle +++ b/dd-smoke-tests/iast-util/iast-util-11/build.gradle @@ -19,6 +19,9 @@ dependencies { compileOnly group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.2.0.RELEASE' testFixturesImplementation testFixtures(project(":dd-smoke-tests:iast-util")) + + testFixturesCompileOnly(libs.bundles.groovy) + testFixturesCompileOnly(libs.bundles.spock) } tasks.named("compileJava", JavaCompile) { diff --git a/dd-smoke-tests/iast-util/iast-util-17/build.gradle b/dd-smoke-tests/iast-util/iast-util-17/build.gradle index 7f194b74922..d4ceb097c08 100644 --- a/dd-smoke-tests/iast-util/iast-util-17/build.gradle +++ b/dd-smoke-tests/iast-util/iast-util-17/build.gradle @@ -19,6 +19,10 @@ dependencies { compileOnly group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.2.0.RELEASE' testFixturesImplementation testFixtures(project(":dd-smoke-tests:iast-util")) + testFixturesImplementation(libs.javaparser) + + testFixturesCompileOnly(libs.bundles.groovy) + testFixturesCompileOnly(libs.bundles.spock) } tasks.named("compileJava", JavaCompile) { diff --git a/dd-smoke-tests/rum/build.gradle b/dd-smoke-tests/rum/build.gradle index f5a54e7985a..78b188094d8 100644 --- a/dd-smoke-tests/rum/build.gradle +++ b/dd-smoke-tests/rum/build.gradle @@ -4,4 +4,7 @@ description = 'appsec-smoke-tests' dependencies { api project(':dd-smoke-tests') + + compileOnly(libs.bundles.groovy) + compileOnly(libs.bundles.spock) } diff --git a/gradle/java_deps.gradle b/gradle/java_deps.gradle index 69391241807..cb0762bf10c 100644 --- a/gradle/java_deps.gradle +++ b/gradle/java_deps.gradle @@ -2,7 +2,8 @@ apply plugin: 'groovy' dependencies { testImplementation libs.bundles.spock - testImplementation libs.groovy + testImplementation libs.bundles.groovy + testImplementation libs.bundles.test.logging // JUnit and Mockito compatible with Spock 2.4.0 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b72ae5bd563..eec698c3914 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -48,6 +48,7 @@ cafe_crypto = "0.1.0" # Common utils commons = "3.2" guava = "[16.0,20.0]" # Last version to support Java 7 +javaparser = "3.24.4" jctools = "3.3.0" lz4 = "1.7.1" @@ -78,8 +79,11 @@ okhttp = { module = "com.datadoghq.okhttp3:okhttp", version.ref = "okhttp" } # Languages ## Groovy -groovy = { module = "org.codehaus.groovy:groovy-all", version.ref = "groovy" } +groovy = { module = "org.codehaus.groovy:groovy", version.ref = "groovy" } +groovy-json = { module = "org.codehaus.groovy:groovy-json", version.ref = "groovy" } +groovy-templates = { module = "org.codehaus.groovy:groovy-templates", version.ref = "groovy" } groovy-yaml = { module = "org.codehaus.groovy:groovy-yaml", version.ref = "groovy" } +groovy-xml = { module = "org.codehaus.groovy:groovy-xml", version.ref = "groovy" } ## Kotlin kotlin = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } @@ -119,6 +123,8 @@ cafe-crypto-curve25519 = { module = "cafe.cryptography:curve25519-elisabeth", ve aircompressor = { module = "io.airlift:aircompressor", version = "2.0.2"} # aircompressor v3 requires Java 22 commons-math = { module = "org.apache.commons:commons-math3", version.ref = "commons" } guava = { module = "com.google.guava:guava", version.ref = "guava" } +javaparser = {module = "com.github.javaparser:javaparser-core", version.ref = "javaparser"} +javaparser-symbol-solver = {module = "com.github.javaparser:javaparser-symbol-solver-core", version.ref = "javaparser"} jctools = { module = "org.jctools:jctools-core", version.ref = "jctools" } lz4 = { module = "org.lz4:lz4-java", version.ref = "lz4" } @@ -138,6 +144,7 @@ moshi = { module = "com.squareup.moshi:moshi", version.ref = "moshi" } junit4 = { module = "junit:junit", version.ref = "junit4" } junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit5" } junit-jupiter-params = { module = "org.junit.jupiter:junit-jupiter-params", version.ref = "junit5" } +junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit5" } junit-platform-launcher = { module = "org.junit.platform:junit-platform-launcher", version.ref = "junit-platform" } mokito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" } mokito-junit-jupiter = { module = "org.mockito:mockito-junit-jupiter", version.ref = "mockito" } @@ -163,4 +170,5 @@ test-logging = ["logback-classic", "log4j-over-slf4j", "jcl-over-slf4j", "jul-to junit5 = ["junit-jupiter", "junit-jupiter-params"] junit-platform = ["junit-platform-launcher"] mockito = ["mokito-core", "mokito-junit-jupiter", "bytebuddy", "bytebuddyagent"] +groovy = ["groovy", "groovy-json"] spock = ["spock-core", "objenesis"] diff --git a/utils/test-utils/build.gradle.kts b/utils/test-utils/build.gradle.kts index 5ddcf0b8dd1..2e9f00058c3 100644 --- a/utils/test-utils/build.gradle.kts +++ b/utils/test-utils/build.gradle.kts @@ -5,15 +5,16 @@ plugins { apply(from = "$rootDir/gradle/java.gradle") dependencies { - api(libs.groovy) - api(libs.bundles.spock) - api(libs.bytebuddy) api(libs.bytebuddyagent) api(project(":components:environment")) api(group = "commons-fileupload", name = "commons-fileupload", version = "1.5") + compileOnly(libs.junit.jupiter) compileOnly(libs.logback.core) compileOnly(libs.logback.classic) + + compileOnly(libs.bundles.groovy) + compileOnly(libs.bundles.spock) } From 6445069cb81628152efc000c7cceb6e0c8ee085f Mon Sep 17 00:00:00 2001 From: Alexey Kuznetsov Date: Tue, 2 Dec 2025 19:57:52 -0500 Subject: [PATCH 2/2] Fixed tests. --- .../jax-rs-annotations/jax-rs-annotations-1/build.gradle | 3 +++ .../spring/spring-webflux/spring-webflux-6.0/build.gradle | 5 +++++ dd-smoke-tests/iast-propagation/build.gradle | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/rs/jax-rs/jax-rs-annotations/jax-rs-annotations-1/build.gradle b/dd-java-agent/instrumentation/rs/jax-rs/jax-rs-annotations/jax-rs-annotations-1/build.gradle index 5d7c4c60eee..2da2642f8c9 100644 --- a/dd-java-agent/instrumentation/rs/jax-rs/jax-rs-annotations/jax-rs-annotations-1/build.gradle +++ b/dd-java-agent/instrumentation/rs/jax-rs/jax-rs-annotations/jax-rs-annotations-1/build.gradle @@ -18,4 +18,7 @@ dependencies { testImplementation group: 'io.dropwizard', name: 'dropwizard-testing', version: '0.7.1' testImplementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.2.3' + + // This module still needs Spock with JUnit4. + testImplementation(libs.spock.junit4) } diff --git a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle index 6b55541cd07..6d192560ce8 100644 --- a/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle +++ b/dd-java-agent/instrumentation/spring/spring-webflux/spring-webflux-6.0/build.gradle @@ -60,5 +60,10 @@ dependencies { iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '3.0.0' iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-reactor-netty', version: '3.0.0' iastTestImplementation group: 'org.springframework.boot', name: 'spring-boot-starter-json', version: '3.0.0' + + testImplementation(libs.spock.spring) + bootTestImplementation(libs.spock.spring) + latestDepBootTestImplementation(libs.spock.spring) + iastTestImplementation(libs.spock.spring) } diff --git a/dd-smoke-tests/iast-propagation/build.gradle b/dd-smoke-tests/iast-propagation/build.gradle index e93a6fff92c..91077482408 100644 --- a/dd-smoke-tests/iast-propagation/build.gradle +++ b/dd-smoke-tests/iast-propagation/build.gradle @@ -42,7 +42,7 @@ dependencies { testImplementation project(':dd-smoke-tests') testImplementation(testFixtures(project(":dd-smoke-tests:iast-util"))) - compileOnly(libs.bundles.groovy) + implementation(libs.bundles.groovy) } tasks.withType(Test).configureEach {