From cb103dae75df71f4bcd3d57d36f4971a2d4d627b Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Tue, 19 Oct 2021 14:12:14 +0200 Subject: [PATCH] [Gradle] Don't show false positive warning about old hmpp flags When HMPP is enabled by default it is still printing warnings about enableDependencyPropagation and enableGranularSourceSetsMetadata flags #KT-48818 Fixed --- .../kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt | 7 +++++++ .../org/jetbrains/kotlin/gradle/MppFlagsMigrationIT.kt | 10 ++++++++++ .../internal/hierarchicalStructureMigrationHandling.kt | 10 ++++++---- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index 260b202fab5..dcfe8213d5e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -493,6 +493,13 @@ abstract class BaseGradleIT { return this } + fun CompiledProject.assertDoesNotContain(vararg notExpected: String, ignoreCase: Boolean = false): CompiledProject { + for (str in notExpected) { + assertFalse(output.contains(str.normalize(), ignoreCase), "Output should not contain '$str'") + } + return this + } + fun CompiledProject.assertContainsRegex(expected: Regex): CompiledProject { assertTrue(expected.containsMatchIn(output), "Output should contain pattern '$expected'") return this diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppFlagsMigrationIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppFlagsMigrationIT.kt index 00dd72b7bd0..8fd98719e19 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppFlagsMigrationIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppFlagsMigrationIT.kt @@ -20,6 +20,7 @@ internal class MppFlagsMigrationIT : BaseGradleIT() { var dependencyPropagationFlag: Boolean? = null, var expectedToPass: Boolean = true, var expectedPhraseInOutput: String? = null, + var notExpectedPhraseInOutput: String? = null, ) { constructor(configure: TestCase.() -> Unit) : this() { configure() @@ -32,6 +33,13 @@ internal class MppFlagsMigrationIT : BaseGradleIT() { companion object { @OptIn(ExperimentalStdlibApi::class) private val testCases = buildList { + add(TestCase { + hierarchiesByDefault = true + granularMetadataFlag = null + dependencyPropagationFlag = null + expectedToPass = true + notExpectedPhraseInOutput = "It is safe to remove the property." + }) add(TestCase { hierarchiesByDefault = true granularMetadataFlag = true @@ -100,6 +108,7 @@ internal class MppFlagsMigrationIT : BaseGradleIT() { Project("new-mpp-published").apply { setupWorkingDir() gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) + gradleProperties().delete() } } @@ -128,6 +137,7 @@ internal class MppFlagsMigrationIT : BaseGradleIT() { assertFailed() testCase.expectedPhraseInOutput?.let { assertContains(it, ignoreCase = true) } + testCase.notExpectedPhraseInOutput?.let { assertDoesNotContain(it, ignoreCase = true) } } } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/internal/hierarchicalStructureMigrationHandling.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/internal/hierarchicalStructureMigrationHandling.kt index 9cc02c2e5fb..cd8d5083d39 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/internal/hierarchicalStructureMigrationHandling.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/internal/hierarchicalStructureMigrationHandling.kt @@ -14,11 +14,13 @@ import org.jetbrains.kotlin.gradle.utils.SingleWarningPerBuild import org.jetbrains.kotlin.gradle.utils.getOrPut internal fun handleHierarchicalStructureFlagsMigration(project: Project) { - SingleActionPerProject.run(project.rootProject, "handleHierarchicalStructureFlagsMigration - rootProject") { - doHandleHierarchicalStructureFlagsMigration(project.rootProject) + if (project.rootProject === project) { + SingleActionPerProject.run(project.rootProject, "handleHierarchicalStructureFlagsMigration - rootProject") { + doHandleHierarchicalStructureFlagsMigration(project.rootProject) + } + } else { + doHandleHierarchicalStructureFlagsMigration(project) } - - doHandleHierarchicalStructureFlagsMigration(project) } private fun doHandleHierarchicalStructureFlagsMigration(project: Project) {