diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt index 3d4cbfea5b8..46468fc1cb4 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt @@ -392,4 +392,35 @@ class AppleFrameworkIT : BaseGradleIT() { } } + @Test + fun `smoke test with apple gradle plugin`() { + with(Project("appleGradlePluginConsumesAppleFrameworks", minLogLevel = LogLevel.INFO)) { + setupWorkingDir() + + fun dependencyInsight(configuration: String) = arrayOf( + ":iosApp:dependencyInsight", "--configuration", configuration, "--dependency", "iosLib" + ) + build(*dependencyInsight("iosAppIosX64DebugImplementation")) { + assertSuccessful() + assertContains("variant \"mainDynamicDebugFrameworkIos\"") + } + + build(*dependencyInsight("iosAppIosX64ReleaseImplementation")) { + assertSuccessful() + assertContains("variant \"mainDynamicReleaseFrameworkIos\"") + } + + // NB: '0' is required at the end since dependency is added with custom attribute and it creates new configuration + build(*dependencyInsight("iosAppIosX64DebugImplementation0"), "-PmultipleFrameworks") { + assertSuccessful() + assertContains("variant \"mainStaticDebugFrameworkIos\"") + } + + build(*dependencyInsight("iosAppIosX64ReleaseImplementation0"), "-PmultipleFrameworks") { + assertSuccessful() + assertContains("variant \"mainStaticReleaseFrameworkIos\"") + } + } + } + } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt index 92a8c9d3c2c..3e884815ef8 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/TestVersions.kt @@ -64,4 +64,8 @@ interface TestVersions { AGP_80(AGP.AGP_80, GradleVersion.version(Gradle.G_8_0), GradleVersion.version(Gradle.G_8_0), JavaVersion.VERSION_17), ; } + + object AppleGradlePlugin { + const val V222_0_21 = "222.4550-0.21" + } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/build.gradle.kts new file mode 100644 index 00000000000..95805026bdb --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/build.gradle.kts @@ -0,0 +1,3 @@ +plugins { + kotlin("multiplatform") apply false +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/iosApp/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/iosApp/build.gradle.kts new file mode 100644 index 00000000000..73e979b0652 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/iosApp/build.gradle.kts @@ -0,0 +1,23 @@ +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget + +plugins { + id("org.jetbrains.gradle.apple.applePlugin") version "222.4550-0.21-dev-0" +} + +apple { + iosApp { + productName = "test" + productModuleName = "MobileApp" + launchStoryboard = "LaunchScreen" + + dependencies { + implementation(project(":iosLib")) { + if (properties.containsKey("multipleFrameworks")) { + attributes.attribute(KotlinNativeTarget.kotlinNativeFrameworkNameAttribute, "mainStatic") + } + } + } + } +} + +println(configurations.names.joinToString("\n")) \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/iosLib/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/iosLib/build.gradle.kts new file mode 100644 index 00000000000..157dbc3d2d4 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/iosLib/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + kotlin("multiplatform") +} + +kotlin { + iosX64("ios") { + binaries { + framework("mainDynamic") { + isStatic = false + } + + if (properties.containsKey("multipleFrameworks")) { + framework("mainStatic") { + isStatic = true + } + } + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/settings.gradle.kts new file mode 100644 index 00000000000..c775d13eaa9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/appleGradlePluginConsumesAppleFrameworks/settings.gradle.kts @@ -0,0 +1 @@ +include(":iosLib", ":iosApp") \ No newline at end of file