From c9b7063d964206ccfecf64c9597f81a3db8f7230 Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Wed, 26 Jul 2023 19:29:54 +0200 Subject: [PATCH] [mpp] Report commonTest with dependsOn similarly to commonMain ^KT-60556 --- .../expectedOutput.txt | 4 ++-- .../diagnostics/KotlinGradleProjectChecker.kt | 2 +- .../diagnostics/KotlinToolingDiagnostics.kt | 6 ++--- ...> CommonMainOrTestWithDependsOnChecker.kt} | 22 +++++++++++++------ .../MppDiagnosticsFunctionalTest.kt | 11 ++++++++-- .../commonMainOrTestWithDependsOn.txt | 3 +++ .../commonMainWithDependsOn.txt | 1 - 7 files changed, 33 insertions(+), 16 deletions(-) rename libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/{CommonMainWithDependsOnChecker.kt => CommonMainOrTestWithDependsOnChecker.kt} (58%) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/commonMainOrTestWithDependsOn.txt delete mode 100644 libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/commonMainWithDependsOn.txt diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/expectedOutput.txt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/expectedOutput.txt index 7850e0d1635..9cc292a9789 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/expectedOutput.txt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/diagnosticsRenderingSmoke/expectedOutput.txt @@ -6,7 +6,7 @@ kotlin.mpp.enableCompatibilityMetadataVariant, kotlin.mpp.hierarchicalStructureS Read the details here: https://kotlinlang.org/docs/multiplatform-compatibility-guide.html#deprecate-hmpp-properties #diagnostic-end -e: [CommonMainWithDependsOnDiagnostic | ERROR] commonMain can't declare dependsOn on other source sets +e: [CommonMainOrTestWithDependsOnDiagnostic | ERROR] commonMain can't declare dependsOn on other source sets #diagnostic-end w: [KotlinDefaultHierarchyFallbackDependsOnUsageDetected | WARNING] The Default Kotlin Hierarchy was not applied to 'project ':subprojectA'': @@ -20,7 +20,7 @@ to your gradle.properties > Configure project :subprojectB -e: [CommonMainWithDependsOnDiagnostic | ERROR] commonMain can't declare dependsOn on other source sets +e: [CommonMainOrTestWithDependsOnDiagnostic | ERROR] commonMain can't declare dependsOn on other source sets #diagnostic-end w: [KotlinDefaultHierarchyFallbackDependsOnUsageDetected | WARNING] The Default Kotlin Hierarchy was not applied to 'project ':subprojectB'': diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt index 2cd6a489092..f87113736d2 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinGradleProjectChecker.kt @@ -97,7 +97,7 @@ internal interface KotlinGradleProjectChecker { companion object { val ALL_CHECKERS: List = listOf( - CommonMainWithDependsOnChecker, + CommonMainOrTestWithDependsOnChecker, DeprecatedKotlinNativeTargetsChecker, MissingNativeStdlibChecker, UnusedSourceSetsChecker, diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt index 7ecede4e7f1..b8eb7cb7709 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/KotlinToolingDiagnostics.kt @@ -35,8 +35,8 @@ object KotlinToolingDiagnostics { ) } - object CommonMainWithDependsOnDiagnostic : ToolingDiagnosticFactory(ERROR) { - operator fun invoke() = build("commonMain can't declare dependsOn on other source sets") + object CommonMainOrTestWithDependsOnDiagnostic : ToolingDiagnosticFactory(ERROR) { + operator fun invoke(suffix: String) = build("common$suffix can't declare dependsOn on other source sets") } object NativeStdlibIsMissingDiagnostic : ToolingDiagnosticFactory(WARNING) { @@ -587,4 +587,4 @@ private fun String.indentLines(nSpaces: Int = 4, skipFirstLine: Boolean = true): if (skipFirstLine && index == 0) return@joinToString line if (line.isNotBlank()) "$spaces$line" else line } -} \ No newline at end of file +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/CommonMainWithDependsOnChecker.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/CommonMainOrTestWithDependsOnChecker.kt similarity index 58% rename from libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/CommonMainWithDependsOnChecker.kt rename to libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/CommonMainOrTestWithDependsOnChecker.kt index 6de04a20e40..ef2e046b1a6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/CommonMainWithDependsOnChecker.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/CommonMainOrTestWithDependsOnChecker.kt @@ -6,19 +6,27 @@ package org.jetbrains.kotlin.gradle.plugin.diagnostics.checkers import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet -import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics -import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnosticsCollector import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinGradleProjectChecker import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinGradleProjectCheckerContext +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics +import org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnosticsCollector import org.jetbrains.kotlin.gradle.plugin.sources.internal -internal object CommonMainWithDependsOnChecker : KotlinGradleProjectChecker { +internal object CommonMainOrTestWithDependsOnChecker : KotlinGradleProjectChecker { override suspend fun KotlinGradleProjectCheckerContext.runChecks(collector: KotlinToolingDiagnosticsCollector) { + fun KotlinSourceSet.registerReporting(suffix: String) { + internal.dependsOn.forAll { + collector.reportOncePerGradleProject( + project, + KotlinToolingDiagnostics.CommonMainOrTestWithDependsOnDiagnostic(suffix), + key = suffix + ) + } + } multiplatformExtension?.sourceSets?.all { - if (it.name == KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME) { - it.internal.dependsOn.forAll { - collector.reportOncePerGradleProject(project, KotlinToolingDiagnostics.CommonMainWithDependsOnDiagnostic()) - } + when (it.name) { + KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME -> it.registerReporting("Main") + KotlinSourceSet.COMMON_TEST_SOURCE_SET_NAME -> it.registerReporting("Test") } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt index 11ec82c128e..17ee5149a5b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/diagnosticsTests/MppDiagnosticsFunctionalTest.kt @@ -14,8 +14,8 @@ import org.junit.Test class MppDiagnosticsFunctionalTest { @Test - fun testCommonMainWithDependsOn() { - checkDiagnosticsWithMppProject("commonMainWithDependsOn") { + fun testCommonMainOrTestWithDependsOn() { + checkDiagnosticsWithMppProject("commonMainOrTestWithDependsOn") { kotlin { jvm() linuxX64() @@ -29,6 +29,13 @@ class MppDiagnosticsFunctionalTest { dependsOn(myCustomCommonMain) dependsOn(myCustomCommonMain2) // check that diagnostic isn't duplicated } + + val myCustomCommonTest = create("myCustomCommonTest") + val myCustomCommonTest2 = create("myCustomCommonTest2") + commonTest { + dependsOn(myCustomCommonTest) + dependsOn(myCustomCommonTest2) // check that diagnostic isn't duplicated + } } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/commonMainOrTestWithDependsOn.txt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/commonMainOrTestWithDependsOn.txt new file mode 100644 index 00000000000..45c33a6ef46 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/commonMainOrTestWithDependsOn.txt @@ -0,0 +1,3 @@ +[CommonMainOrTestWithDependsOnDiagnostic | ERROR] commonMain can't declare dependsOn on other source sets +---- +[CommonMainOrTestWithDependsOnDiagnostic | ERROR] commonTest can't declare dependsOn on other source sets diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/commonMainWithDependsOn.txt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/commonMainWithDependsOn.txt deleted file mode 100644 index a1f4e4085ad..00000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/resources/expectedDiagnostics/commonMainWithDependsOn.txt +++ /dev/null @@ -1 +0,0 @@ -[CommonMainWithDependsOnDiagnostic | ERROR] commonMain can't declare dependsOn on other source sets