diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppIdeDependencyResolutionIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppIdeDependencyResolutionIT.kt index 25f1aae3392..6329f67ba4f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppIdeDependencyResolutionIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/MppIdeDependencyResolutionIT.kt @@ -13,10 +13,7 @@ import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinResolvedBinaryDependency import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinUnresolvedBinaryDependency import org.jetbrains.kotlin.gradle.idea.tcs.extras.* -import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.IdeaKotlinDependencyMatcher -import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.assertMatches -import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.binaryCoordinates -import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.getOrFail +import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.* import org.jetbrains.kotlin.gradle.testbase.* import org.jetbrains.kotlin.gradle.util.* import org.jetbrains.kotlin.konan.target.HostManager @@ -354,6 +351,36 @@ class MppIdeDependencyResolutionIT : KGPBaseTest() { } } + @GradleTest + fun `test native project dependencies resolve leniently`(gradleVersion: GradleVersion) { + project("kt-61466-lenient-dependency-resolution", gradleVersion) { + resolveIdeDependencies(":consumer") { dependencies -> + dependencies["commonMain"].assertMatches( + kotlinStdlibDependencies, + kotlinNativeDistributionDependencies, + ) + + dependencies["linuxMain"].assertMatches( + kotlinStdlibDependencies, + kotlinNativeDistributionDependencies, + dependsOnDependency(":consumer/commonMain"), + dependsOnDependency(":consumer/nativeMain") + ) + + dependencies["linuxX64Main"].assertMatches( + kotlinNativeDistributionDependencies, + dependsOnDependency(":consumer/commonMain"), + dependsOnDependency(":consumer/nativeMain"), + dependsOnDependency(":consumer/linuxMain"), + binaryCoordinates("this:does:not-exist"), + IdeaKotlinDependencyMatcher("Project Dependency: producer") { dependency -> + dependency is IdeaKotlinUnresolvedBinaryDependency && ":producer" in dependency.cause.orEmpty() + } + ) + } + } + } + private fun Iterable.cinteropDependencies() = this.filterIsInstance().filter { it.klibExtra?.isInterop == true && !it.isNativeStdlib && !it.isNativeDistribution diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-61466-lenient-dependency-resolution/consumer/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-61466-lenient-dependency-resolution/consumer/build.gradle.kts new file mode 100644 index 00000000000..209448d8fac --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-61466-lenient-dependency-resolution/consumer/build.gradle.kts @@ -0,0 +1,13 @@ +plugins { + kotlin("multiplatform") +} + +kotlin { + linuxX64() + linuxArm64() + + sourceSets.commonMain.dependencies { + implementation(project(":producer")) // <- does not support any native target + implementation("this:does:not-exist:1.0.0") // <- Obviously, does not exist :) + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-61466-lenient-dependency-resolution/producer/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-61466-lenient-dependency-resolution/producer/build.gradle.kts new file mode 100644 index 00000000000..b8d0d2fdf69 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-61466-lenient-dependency-resolution/producer/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + kotlin("multiplatform") +} + +kotlin { + jvm() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-61466-lenient-dependency-resolution/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-61466-lenient-dependency-resolution/settings.gradle.kts new file mode 100644 index 00000000000..3307a46a4be --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kt-61466-lenient-dependency-resolution/settings.gradle.kts @@ -0,0 +1,10 @@ + +dependencyResolutionManagement { + repositories { + mavenLocal() + mavenCentral() + } +} + +include(":consumer") +include(":producer") \ No newline at end of file