From 39b74804dda9286c0c65f78da4213e0e5a3bfde2 Mon Sep 17 00:00:00 2001 From: Matthew Haughton <3flex@users.noreply.github.com> Date: Sun, 31 Jul 2022 11:30:02 +1000 Subject: [PATCH 1/2] Get compile classpath from variant compileConfiguration Using compileClasspath didn't resolve the right values at the right point during configuration phase, causing problems with the configuration cache. Fixes #5150 --- .../gitlab/arturbosch/detekt/DetektAndroidSpec.kt | 2 -- .../arturbosch/detekt/internal/DetektAndroid.kt | 13 +++++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt index 9bc52b99ba5..fbdf20f6891 100644 --- a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt +++ b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt @@ -3,7 +3,6 @@ package io.gitlab.arturbosch.detekt import io.gitlab.arturbosch.detekt.testkit.DslGradleRunner import io.gitlab.arturbosch.detekt.testkit.ProjectLayout import org.assertj.core.api.Assertions.assertThat -import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test @@ -274,7 +273,6 @@ class DetektAndroidSpec { @Test @DisplayName("task :android_lib:detektMain") - @Disabled("https://github.com/detekt/detekt/issues/5150") fun libDetektMain() { gradleRunner.runTasksAndCheckResult( "--configuration-cache", diff --git a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektAndroid.kt b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektAndroid.kt index 0cdfe0b2d37..0ccc641486f 100644 --- a/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektAndroid.kt +++ b/detekt-gradle-plugin/src/main/kotlin/io/gitlab/arturbosch/detekt/internal/DetektAndroid.kt @@ -14,6 +14,7 @@ import io.gitlab.arturbosch.detekt.extensions.DetektExtension import org.gradle.api.DomainObjectSet import org.gradle.api.Project import org.gradle.api.Task +import org.gradle.api.attributes.Attribute import org.gradle.api.file.DirectoryProperty import org.gradle.api.file.FileCollection import org.gradle.api.tasks.TaskProvider @@ -117,7 +118,11 @@ internal fun Project.registerAndroidDetektTask( setSource(variant.sourceSets.map { it.javaDirectories + it.kotlinDirectories }) extraInputSource?.let { source(it) } classpath.setFrom( - variant.getCompileClasspath(null).filter { it.exists() }, + variant.compileConfiguration.incoming.artifactView { view -> + view.attributes { + it.attribute(Attribute.of("artifactType", String::class.java), "jar") + } + }.files, bootClasspath, javaCompileDestination(variant), ) @@ -141,7 +146,11 @@ internal fun Project.registerAndroidCreateBaselineTask( setSource(variant.sourceSets.map { it.javaDirectories + it.kotlinDirectories }) extraInputSource?.let { source(it) } classpath.setFrom( - variant.getCompileClasspath(null).filter { it.exists() }, + variant.compileConfiguration.incoming.artifactView { view -> + view.attributes { + it.attribute(Attribute.of("artifactType", String::class.java), "jar") + } + }.files, bootClasspath, javaCompileDestination(variant), ) From b5ff3d97b1a26548504ee368d29b356c536ea7b5 Mon Sep 17 00:00:00 2001 From: Matthew Haughton <3flex@users.noreply.github.com> Date: Sun, 31 Jul 2022 13:12:02 +1000 Subject: [PATCH 2/2] Add detektTest test case for #5150 --- .../arturbosch/detekt/DetektAndroidSpec.kt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt index fbdf20f6891..b03b878034f 100644 --- a/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt +++ b/detekt-gradle-plugin/src/functionalTest/kotlin/io/gitlab/arturbosch/detekt/DetektAndroidSpec.kt @@ -291,6 +291,31 @@ class DetektAndroidSpec { ) } } + + @Test + @DisplayName("task :android_lib:detektTest") + fun libDetektTest() { + gradleRunner.runTasksAndCheckResult( + "--configuration-cache", + ":android_lib:detektTest", + ) { buildResult -> + assertThat(buildResult.output).contains("Configuration cache") + assertThat(buildResult.output).containsPattern( + """--baseline \S*[/\\]detekt-baseline-debugUnitTest.xml """ + ) + assertThat(buildResult.output).containsPattern( + """--baseline \S*[/\\]detekt-baseline-debugAndroidTest.xml """ + ) + assertThat(buildResult.output).contains("--report xml:") + assertThat(buildResult.output).contains("--report sarif:") + assertThat(buildResult.output).doesNotContain("--report txt:") + assertThat(buildResult.tasks.map { it.path }).containsAll( + listOf( + ":android_lib:detektTest", + ) + ) + } + } } @Nested