diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt index 920656c567f..a3dba8e63f9 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt @@ -3,12 +3,15 @@ package org.jetbrains.kotlin.gradle import org.gradle.api.logging.LogLevel import org.gradle.api.logging.configuration.WarningMode import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask import org.jetbrains.kotlin.gradle.util.* import org.jetbrains.kotlin.test.util.KtTestUtil import org.junit.Assume import org.junit.Test import java.io.File +import java.util.zip.ZipFile import kotlin.test.assertEquals +import kotlin.test.assertNotNull import kotlin.test.assertTrue open class KotlinAndroid36GradleIT : KotlinAndroid34GradleIT() { @@ -427,6 +430,23 @@ open class KotlinAndroid36GradleIT : KotlinAndroid34GradleIT() { assertSuccessful() } } + + @Test + fun `test KotlinToolingMetadataArtifact is bundled into apk`(): Unit = with(Project("kotlinToolingMetadataAndroid")) { + build("assemble") { + assertSuccessful() + assertTasksExecuted(":${BuildKotlinToolingMetadataTask.defaultTaskName}") + val debugApk = project.projectDir.resolve("build/outputs/apk/debug/project-debug.apk") + val releaseApk = project.projectDir.resolve("build/outputs/apk/release/project-release-unsigned.apk") + + listOf(debugApk, releaseApk).forEach { apk -> + assertTrue(apk.exists(), "Missing apk ${apk.path}") + ZipFile(apk).use { zip -> + assertNotNull(zip.getEntry("kotlin-tooling-metadata.json"), "Expected metadata being packaged into apk") + } + } + } + } } open class KotlinAndroid70GradleIT : KotlinAndroid36GradleIT() { @@ -559,7 +579,7 @@ open class KotlinAndroid34GradleIT : KotlinAndroid3GradleIT() { "kotlin-stdlib:\$kotlin_version", "kotlin-stdlib" ) + "\n" + - """ + """ apply plugin: 'maven-publish' android { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinToolingMetadataAndroid/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinToolingMetadataAndroid/build.gradle.kts new file mode 100644 index 00000000000..fa5a95d7b1d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinToolingMetadataAndroid/build.gradle.kts @@ -0,0 +1,19 @@ +plugins { + id("com.android.application") + kotlin("multiplatform") +} + +repositories { + google() + mavenLocal() + mavenCentral() +} + +android { + compileSdkVersion(23) + buildToolsVersion("25.0.2") +} + +kotlin { + android() +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinToolingMetadataAndroid/settings.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinToolingMetadataAndroid/settings.gradle.kts new file mode 100644 index 00000000000..cc8bb315291 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinToolingMetadataAndroid/settings.gradle.kts @@ -0,0 +1,23 @@ +pluginManagement { + repositories { + mavenLocal() + google() + gradlePluginPortal() + } + val kotlin_version: String by settings + val android_tools_version: String by settings + plugins { + kotlin("multiplatform").version(kotlin_version) + kotlin("android").version(kotlin_version) + } + + resolutionStrategy { + eachPlugin { + if (requested.id.id.startsWith("com.android")) { + useModule("com.android.tools.build:gradle:$android_tools_version") + } + } + } +} + +rootProject.name = "project" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinToolingMetadataAndroid/src/main/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinToolingMetadataAndroid/src/main/AndroidManifest.xml new file mode 100644 index 00000000000..5ffab7f3fb1 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlinToolingMetadataAndroid/src/main/AndroidManifest.xml @@ -0,0 +1 @@ +