@@ -6,6 +6,14 @@ plugins {
66 id(" io.opentelemetry.instrumentation.javaagent-shadowing" )
77}
88
9+ val failOnContextLeakProperty = providers.gradleProperty(" failOnContextLeak" )
10+ .map { it != " false" }
11+ .orElse(true )
12+
13+ val testIndyProperty = providers.gradleProperty(" testIndy" )
14+ .map { it == " true" }
15+ .orElse(false )
16+
917val denyUnsafe = gradle.startParameter.projectProperties[" denyUnsafe" ] == " true"
1018extra[" denyUnsafe" ] = denyUnsafe
1119
@@ -74,6 +82,15 @@ class JavaagentTestArgumentsProvider(
7482 @InputFile
7583 @PathSensitive(PathSensitivity .RELATIVE )
7684 val shadowJar : File ,
85+
86+ @get:Input
87+ val failOnContextLeak : Boolean ,
88+
89+ @get:Input
90+ val testIndy : Boolean ,
91+
92+ @get:Input
93+ val denyUnsafe : Boolean ,
7794) : CommandLineArgumentProvider {
7895 override fun asArguments (): Iterable <String > {
7996 val list = mutableListOf (
@@ -83,13 +100,13 @@ class JavaagentTestArgumentsProvider(
83100 " -Dotel.javaagent.testing.javaagent-jar-path=${agentShadowJar.absolutePath} " ,
84101 " -Dotel.javaagent.experimental.initializer.jar=${shadowJar.absolutePath} " ,
85102 " -Dotel.javaagent.testing.additional-library-ignores.enabled=false" ,
86- " -Dotel.javaagent.testing.fail-on-context-leak=${findProperty( " failOnContextLeak" ) != false } " ,
103+ " -Dotel.javaagent.testing.fail-on-context-leak=$failOnContextLeak " ,
87104 // prevent sporadic gradle deadlocks, see SafeLogger for more details
88105 " -Dotel.javaagent.testing.transform-safe-logging.enabled=true" ,
89106 // Reduce noise in assertion messages since we don't need to verify this in most tests. We check
90107 // in smoke tests instead.
91108 " -Dotel.javaagent.add-thread-details=false" ,
92- " -Dotel.javaagent.experimental.indy=${findProperty( " testIndy" ) == " true " } " ,
109+ " -Dotel.javaagent.experimental.indy=$testIndy " ,
93110 // suppress repeated logging of "No metric data to export - skipping export."
94111 // since PeriodicMetricReader is configured with a short interval
95112 " -Dio.opentelemetry.javaagent.slf4j.simpleLogger.log.io.opentelemetry.sdk.metrics.export.PeriodicMetricReader=INFO" ,
@@ -123,22 +140,26 @@ afterEvaluate {
123140 // this dependency.
124141 dependsOn(agentForTesting.buildDependencies)
125142
143+ val failOnContextLeakOverride = failOnContextLeakProperty.get()
144+ val testIndyEnabled = testIndyProperty.get()
145+
126146 jvmArgumentProviders.add(
127147 JavaagentTestArgumentsProvider (
128148 agentShadowJar,
129- shadowJar.archiveFile.get().asFile
149+ shadowJar.archiveFile.get().asFile,
150+ failOnContextLeakOverride,
151+ testIndyEnabled,
152+ denyUnsafe
130153 )
131154 )
132155
133156 // We do fine-grained filtering of the classpath of this codebase's sources since Gradle's
134157 // configurations will include transitive dependencies as well, which tests do often need.
158+ val mainResourcesDir = project.layout.buildDirectory.dir(" resources/main" ).get().asFile.absoluteFile
159+ val mainClassesDir = project.layout.buildDirectory.dir(" classes/java/main" ).get().asFile.absoluteFile
160+
135161 classpath = classpath.filter {
136- if (file(layout.buildDirectory.dir(" resources/main" )).equals(it) || file(
137- layout.buildDirectory.dir(
138- " classes/java/main"
139- )
140- ).equals(it)
141- ) {
162+ if (it.absoluteFile == mainResourcesDir || it.absoluteFile == mainClassesDir) {
142163 // The sources are packaged into the testing jar, so we need to exclude them from the test
143164 // classpath, which automatically inherits them, to ensure our shaded versions are used.
144165 return @filter false
0 commit comments