Skip to content

Commit 2f7754b

Browse files
fix: limit warning to once per project build
1 parent 2b016f9 commit 2f7754b

3 files changed

Lines changed: 40 additions & 21 deletions

File tree

dd-java-agent/instrumentation/gradle/gradle-3.0/src/main/groovy/datadog/trace/instrumentation/gradle/legacy/GradleProjectConfigurator.groovy

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ class GradleProjectConfigurator {
4545
private static final String JACOCO_PLUGIN_ID = 'jacoco'
4646
private static final String JACOCO_AGENT_CONFIGURATION_NAME = 'jacocoAgent'
4747
private static final String JACOCO_ANT_CONFIGURATION_NAME = 'jacocoAnt'
48+
private static final String DEPENDENCY_VERIFICATION_WARNING_EMITTED =
49+
'datadog.civisibility.dependency-verification-warning-emitted'
4850

4951
void configureTracer(Task task, Map<String, String> propagatedSystemProperties) {
5052
def config = Config.get()
@@ -226,13 +228,17 @@ class GradleProjectConfigurator {
226228
}
227229

228230
if (project.rootProject.file('gradle/verification-metadata.xml').isFile()) {
229-
project.logger.warn(
230-
"Datadog Test Optimization disabled Gradle dependency verification for configuration "
231-
+ "${configuration.name}. To keep verification enabled, set "
232-
+ "DD_CIVISIBILITY_GRADLE_DEPENDENCY_VERIFICATION_ENABLED=true and add "
233-
+ "the Datadog compiler plugin and injected JaCoCo dependencies to "
234-
+ "gradle/verification-metadata.xml. If the metadata is not updated, Gradle will "
235-
+ "fail the build while resolving these dependencies.")
231+
def extraProperties = project.rootProject.extensions.extraProperties
232+
if (!extraProperties.has(DEPENDENCY_VERIFICATION_WARNING_EMITTED)) {
233+
extraProperties.set(DEPENDENCY_VERIFICATION_WARNING_EMITTED, true)
234+
project.logger.warn(
235+
"Datadog Test Optimization disabled Gradle dependency verification for dependencies "
236+
+ "injected into this build. To keep verification enabled, set "
237+
+ "DD_CIVISIBILITY_GRADLE_DEPENDENCY_VERIFICATION_ENABLED=true and add "
238+
+ "the Datadog compiler plugin and injected JaCoCo dependencies to "
239+
+ "gradle/verification-metadata.xml. If the metadata is not updated, Gradle will "
240+
+ "fail the build while resolving these dependencies.")
241+
}
236242
}
237243
configuration.resolutionStrategy.disableDependencyVerification()
238244
}

dd-java-agent/instrumentation/gradle/gradle-8.3/src/main/groovy/datadog/trace/instrumentation/gradle/CiVisibilityPlugin.java

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ public abstract class CiVisibilityPlugin implements Plugin<Project> {
3333
private static final String JACOCO_PLUGIN_ID = "jacoco";
3434
private static final String JACOCO_AGENT_CONFIGURATION_NAME = "jacocoAgent";
3535
private static final String JACOCO_ANT_CONFIGURATION_NAME = "jacocoAnt";
36+
private static final String DEPENDENCY_VERIFICATION_WARNING_EMITTED =
37+
"datadog.civisibility.dependency-verification-warning-emitted";
3638

3739
private Project project;
3840

@@ -124,14 +126,24 @@ private void disableDependencyVerificationIfConfigured(Configuration configurati
124126
.getProjectDir()
125127
.toPath()
126128
.resolve("gradle/verification-metadata.xml"))) {
127-
LOGGER.warn(
128-
"Datadog Test Optimization disabled Gradle dependency verification for configuration "
129-
+ "{}. To keep verification enabled, set "
130-
+ "DD_CIVISIBILITY_GRADLE_DEPENDENCY_VERIFICATION_ENABLED=true and add "
131-
+ "the Datadog compiler plugin and injected JaCoCo dependencies to "
132-
+ "gradle/verification-metadata.xml. If the metadata is not updated, Gradle will "
133-
+ "fail the build while resolving these dependencies.",
134-
configuration.getName());
129+
if (!project
130+
.getRootProject()
131+
.getExtensions()
132+
.getExtraProperties()
133+
.has(DEPENDENCY_VERIFICATION_WARNING_EMITTED)) {
134+
project
135+
.getRootProject()
136+
.getExtensions()
137+
.getExtraProperties()
138+
.set(DEPENDENCY_VERIFICATION_WARNING_EMITTED, true);
139+
LOGGER.warn(
140+
"Datadog Test Optimization disabled Gradle dependency verification for dependencies "
141+
+ "injected into this build. To keep verification enabled, set "
142+
+ "DD_CIVISIBILITY_GRADLE_DEPENDENCY_VERIFICATION_ENABLED=true and add "
143+
+ "the Datadog compiler plugin and injected JaCoCo dependencies to "
144+
+ "gradle/verification-metadata.xml. If the metadata is not updated, Gradle will "
145+
+ "fail the build while resolving these dependencies.");
146+
}
135147
}
136148
configuration.getResolutionStrategy().disableDependencyVerification();
137149
}

dd-smoke-tests/gradle/src/test/java/datadog/smoketest/GradleDaemonSmokeTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.smoketest;
22

3+
import static org.junit.jupiter.api.Assertions.assertEquals;
34
import static org.junit.jupiter.api.Assertions.assertFalse;
45
import static org.junit.jupiter.api.Assertions.assertNotNull;
56
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -191,12 +192,12 @@ void testInjectedDependencyVerification(String gradleVersion, boolean verificati
191192
assertTrue(buildResult.getOutput().contains("Dependency verification failed"));
192193
} else {
193194
assertBuildSuccessful(buildResult);
194-
assertTrue(
195-
buildResult
196-
.getOutput()
197-
.contains(
198-
"Datadog Test Optimization disabled Gradle dependency verification for "
199-
+ "configuration "));
195+
String warning =
196+
"Datadog Test Optimization disabled Gradle dependency verification for dependencies "
197+
+ "injected into this build.";
198+
int firstWarning = buildResult.getOutput().indexOf(warning);
199+
assertTrue(firstWarning >= 0);
200+
assertEquals(firstWarning, buildResult.getOutput().lastIndexOf(warning));
200201
}
201202
}
202203

0 commit comments

Comments
 (0)