From f02fd2e04e72491c2639b70ee43eb18340617956 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Thu, 17 Nov 2022 10:42:37 +0100 Subject: [PATCH] [Gradle] Implement smoke test for external android target prototype resolving sdk KT-54981 --- .../tcs/ideaDependencyMatcherBuilders.kt | 6 ++++ ...ExternalAndroidTargetPrototypeSmokeTest.kt | 31 ++++++++++++++++--- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/testFixtures/kotlin/org/jetbrains/kotlin/gradle/idea/testFixtures/tcs/ideaDependencyMatcherBuilders.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/testFixtures/kotlin/org/jetbrains/kotlin/gradle/idea/testFixtures/tcs/ideaDependencyMatcherBuilders.kt index 5ef75a35ee1..80668ff9ecf 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/testFixtures/kotlin/org/jetbrains/kotlin/gradle/idea/testFixtures/tcs/ideaDependencyMatcherBuilders.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/testFixtures/kotlin/org/jetbrains/kotlin/gradle/idea/testFixtures/tcs/ideaDependencyMatcherBuilders.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.gradle.idea.testFixtures.tcs import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinDependency import org.jetbrains.kotlin.gradle.idea.tcs.IdeaKotlinSourceDependency fun buildIdeaKotlinDependencyMatchers(notation: Any?): List { @@ -30,4 +31,9 @@ fun binaryCoordinates(regex: Regex): IdeaKotlinDependencyMatcher { fun binaryCoordinates(literal: String): IdeaKotlinDependencyMatcher { return binaryCoordinates(Regex.fromLiteral(literal)) +} + +fun anyDependency(): IdeaKotlinDependencyMatcher = object : IdeaKotlinDependencyMatcher { + override val description: String get() = "any" + override fun matches(dependency: IdeaKotlinDependency): Boolean = true } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/externalTargetApi/ExternalAndroidTargetPrototypeSmokeTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/externalTargetApi/ExternalAndroidTargetPrototypeSmokeTest.kt index 27c79948e77..3efd46d82b6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/externalTargetApi/ExternalAndroidTargetPrototypeSmokeTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/externalTargetApi/ExternalAndroidTargetPrototypeSmokeTest.kt @@ -10,12 +10,14 @@ package org.jetbrains.kotlin.gradle.externalTargetApi import org.gradle.api.publish.PublishingExtension import org.gradle.api.publish.maven.MavenPublication import org.gradle.api.publish.maven.plugins.MavenPublishPlugin +import org.jetbrains.kotlin.gradle.* import org.jetbrains.kotlin.gradle.android.androidTargetPrototype -import org.jetbrains.kotlin.gradle.androidLibrary -import org.jetbrains.kotlin.gradle.assumeAndroidSdkAvailable -import org.jetbrains.kotlin.gradle.buildProjectWithMPP import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension +import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.anyDependency +import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.assertMatches +import org.jetbrains.kotlin.gradle.idea.testFixtures.tcs.binaryCoordinates import org.jetbrains.kotlin.gradle.kpm.idea.mavenCentralCacheRedirector +import org.jetbrains.kotlin.gradle.plugin.ide.kotlinIdeMultiplatformImport import org.jetbrains.kotlin.gradle.utils.getByType import org.junit.Test import kotlin.test.BeforeTest @@ -72,4 +74,25 @@ class ExternalAndroidTargetPrototypeSmokeTest { val aarArtifact = androidPublication.artifacts.first() assertEquals("aar", aarArtifact.extension) } -} \ No newline at end of file + + @Test + fun `apply prototype - resolve androidPrototypeMain dependencies - contains android bootstrap classpath`() { + val project = buildProject { + enableDefaultStdlibDependency(false) + enableDependencyVerification(false) + applyMultiplatformPlugin() + repositories.mavenCentralCacheRedirector() + } + + project.androidLibrary { compileSdk = 31 } + project.multiplatformExtension.androidTargetPrototype() + project.evaluate() + + val androidPrototypeMain = project.multiplatformExtension.sourceSets.getByName("prototypeAndroidMain") + + project.kotlinIdeMultiplatformImport.resolveDependencies(androidPrototypeMain).assertMatches( + binaryCoordinates(Regex("com\\.android:sdk:.*")), + anyDependency() + ) + } +}