@@ -125,6 +125,65 @@ class WriteVersionFilePluginTest : VersionPluginsFixture() {
125125 assertThat(versionFile).doesNotExist()
126126 }
127127
128+ @Test
129+ fun `generated version file is ignored in runtime classpath normalization` () {
130+ writeSettings(
131+ """
132+ rootProject.name = "my-lib"
133+ """
134+ )
135+ writeRootProject(
136+ """
137+ import org.gradle.api.DefaultTask
138+ import org.gradle.api.file.ConfigurableFileCollection
139+ import org.gradle.api.file.RegularFileProperty
140+ import org.gradle.api.tasks.Classpath
141+ import org.gradle.api.tasks.InputFiles
142+ import org.gradle.api.tasks.OutputFile
143+ import org.gradle.api.tasks.TaskAction
144+
145+ plugins {
146+ id("dd-trace-java.version-file")
147+ }
148+
149+ version = "1.2.3"
150+
151+ tasks.named<datadog.gradle.plugin.version.WriteVersionFile>("writeVersionNumberFile") {
152+ gitHash.set(providers.gradleProperty("gitHash").orElse("abc12345"))
153+ }
154+
155+ abstract class ClasspathProbe : DefaultTask() {
156+ @get:InputFiles
157+ @get:Classpath
158+ val classpath: ConfigurableFileCollection = project.objects.fileCollection()
159+
160+ @get:OutputFile
161+ val outputFile: RegularFileProperty = project.objects.fileProperty()
162+
163+ @TaskAction
164+ fun probe() {
165+ outputFile.get().asFile.writeText("probed")
166+ }
167+ }
168+
169+ tasks.register<ClasspathProbe>("classpathProbe") {
170+ dependsOn("processResources")
171+ classpath.from(sourceSets.main.get().runtimeClasspath)
172+ outputFile.set(layout.buildDirectory.file("classpath-probe/output.txt"))
173+ }
174+ """
175+ )
176+
177+ assertThat(run (" classpathProbe" , " -PgitHash=abc12345" ).task(" :classpathProbe" )?.outcome)
178+ .isEqualTo(TaskOutcome .SUCCESS )
179+
180+ val result = run (" classpathProbe" , " -PgitHash=def67890" )
181+
182+ assertThat(generatedVersionFile).hasContent(" 1.2.3~def67890" )
183+ assertThat(result.task(" :writeVersionNumberFile" )?.outcome).isEqualTo(TaskOutcome .SUCCESS )
184+ assertThat(result.task(" :classpathProbe" )?.outcome).isEqualTo(TaskOutcome .UP_TO_DATE )
185+ }
186+
128187 private fun assertVersionFile (
129188 expectedContentRegex : String ,
130189 task : String = ":writeVersionNumberFile",
0 commit comments