diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/NewMultiplatformProjectImportingTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/NewMultiplatformProjectImportingTest.kt index a521e9f36de..f9fe1b17001 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/NewMultiplatformProjectImportingTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/NewMultiplatformProjectImportingTest.kt @@ -11,6 +11,7 @@ import org.jetbrains.jps.model.java.JavaResourceRootType import org.jetbrains.jps.model.java.JavaSourceRootType import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.idea.codeInsight.gradle.MultiplePluginVersionGradleImportingTestCase +import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.platform.CommonPlatforms import org.jetbrains.kotlin.platform.js.JsPlatforms import org.jetbrains.kotlin.platform.jvm.JvmPlatforms @@ -886,6 +887,61 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin } } + @Test + @PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.60+") + fun testIgnoreIncompatibleNativeTestTasks() { + configureByFiles() + importProject() + + checkProjectStructure(exhaustiveSourceSourceRootList = false, exhaustiveDependencyList = false, exhaustiveTestsList = true) { + module("project") + module("project_commonMain") { + + } + module("project_commonTest") { + externalSystemTestTask("jsBrowserTest", "project:jsTest", "js") + externalSystemTestTask("jsNodeTest", "project:jsTest", "js") + externalSystemTestTask("jvmTest", "project:jvmTest", "jvm") + + when { + HostManager.hostIsMac -> externalSystemTestTask("macosTest", "project:macosTest", "macos") + HostManager.hostIsMingw -> externalSystemTestTask("winTest", "project:winTest", "win") + HostManager.hostIsLinux -> externalSystemTestTask("linuxTest", "project:linuxTest", "linux") + } + } + + module("project_jsMain") + module("project_jsTest") { + externalSystemTestTask("jsBrowserTest", "project:jsTest", "js") + externalSystemTestTask("jsNodeTest", "project:jsTest", "js") + } + + module("project_jvmMain") + module("project_jvmTest") { + externalSystemTestTask("jvmTest", "project:jvmTest", "jvm") + } + + module("project_macosMain") { + } + module("project_macosTest") { + if (HostManager.hostIsMac) externalSystemTestTask("macosTest", "project:macosTest", "macos") + } + + module("project_winMain") { + } + module("project_winTest") { + if (HostManager.hostIsMingw) externalSystemTestTask("winTest", "project:winTest", "win") + } + + module("project_linuxMain") { + } + module("project_linuxTest") { + if (HostManager.hostIsLinux) externalSystemTestTask("linuxTest", "project:linuxTest", "linux") + } + } + } + + private fun checkProjectStructure( exhaustiveModuleList: Boolean = true, exhaustiveSourceSourceRootList: Boolean = true, diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt index 1d764349c29..c4f33cf6f18 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt @@ -466,7 +466,7 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { } }) ?: listOf(it) } - return testTasks.mapNotNull { + return testTasks.filter { it.enabled }.map { val name = it.name val compilation = it.javaClass.getMethodOrNull("getCompilation")?.invoke(it) val compilationName = compilation?.javaClass?.getMethodOrNull("getCompilationName")?.invoke(compilation)?.toString() diff --git a/idea/testData/gradle/newMultiplatformImport/ignoreIncompatibleNativeTestTasks/build.gradle b/idea/testData/gradle/newMultiplatformImport/ignoreIncompatibleNativeTestTasks/build.gradle new file mode 100644 index 00000000000..309ec60a745 --- /dev/null +++ b/idea/testData/gradle/newMultiplatformImport/ignoreIncompatibleNativeTestTasks/build.gradle @@ -0,0 +1,88 @@ +buildscript { + repositories { + {{kotlin_plugin_repositories}} + } + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:{{kotlin_plugin_version}}") + {{extraPluginDependencies}} + } +} + +allprojects { + repositories { + {{kotlin_plugin_repositories}} + } +} + +apply plugin: 'kotlin-multiplatform' + +group 'com.example' +version '0.0.1' + +apply plugin: 'maven-publish' + +kotlin { + jvm { + } + + js { + browser { + } + nodejs { + } + } + + macosX64("macos") + mingwX64("win") + linuxX64("linux") + + sourceSets { + commonMain { + dependencies { + implementation kotlin('stdlib-common') + } + } + commonTest { + dependencies { + implementation kotlin('test-common') + implementation kotlin('test-annotations-common') + } + } + + jvmMain { + dependencies { + implementation kotlin('stdlib-jdk8') + } + } + jvmTest { + dependencies { + implementation kotlin('test') + implementation kotlin('test-junit') + } + } + jsMain { + dependencies { + implementation kotlin('stdlib-js') + } + } + jsTest { + dependencies { + implementation kotlin('test-js') + } + } + + macosMain { + } + macosTest { + } + winMain { + } + winTest { + } + linuxMain { + } + linuxTest { + } + + } +} diff --git a/idea/testData/gradle/newMultiplatformImport/ignoreIncompatibleNativeTestTasks/gradle.properties b/idea/testData/gradle/newMultiplatformImport/ignoreIncompatibleNativeTestTasks/gradle.properties new file mode 100644 index 00000000000..7fc6f1ff272 --- /dev/null +++ b/idea/testData/gradle/newMultiplatformImport/ignoreIncompatibleNativeTestTasks/gradle.properties @@ -0,0 +1 @@ +kotlin.code.style=official diff --git a/idea/testData/gradle/newMultiplatformImport/ignoreIncompatibleNativeTestTasks/settings.gradle b/idea/testData/gradle/newMultiplatformImport/ignoreIncompatibleNativeTestTasks/settings.gradle new file mode 100644 index 00000000000..4d66cc8c7da --- /dev/null +++ b/idea/testData/gradle/newMultiplatformImport/ignoreIncompatibleNativeTestTasks/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'project' +enableFeaturePreview('GRADLE_METADATA')