[Gradle] [Android] Implement 'test KotlinToolingMetadataArtifact is bundled into apk'

Covers ^KT-48019
This commit is contained in:
sebastian.sellmair
2021-08-02 13:56:21 +02:00
committed by Space
parent 82a70a205b
commit 79565da904
4 changed files with 64 additions and 1 deletions
@@ -3,12 +3,15 @@ package org.jetbrains.kotlin.gradle
import org.gradle.api.logging.LogLevel import org.gradle.api.logging.LogLevel
import org.gradle.api.logging.configuration.WarningMode import org.gradle.api.logging.configuration.WarningMode
import org.gradle.util.GradleVersion import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.tooling.BuildKotlinToolingMetadataTask
import org.jetbrains.kotlin.gradle.util.* import org.jetbrains.kotlin.gradle.util.*
import org.jetbrains.kotlin.test.util.KtTestUtil import org.jetbrains.kotlin.test.util.KtTestUtil
import org.junit.Assume import org.junit.Assume
import org.junit.Test import org.junit.Test
import java.io.File import java.io.File
import java.util.zip.ZipFile
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.test.assertNotNull
import kotlin.test.assertTrue import kotlin.test.assertTrue
open class KotlinAndroid36GradleIT : KotlinAndroid34GradleIT() { open class KotlinAndroid36GradleIT : KotlinAndroid34GradleIT() {
@@ -427,6 +430,23 @@ open class KotlinAndroid36GradleIT : KotlinAndroid34GradleIT() {
assertSuccessful() 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() { open class KotlinAndroid70GradleIT : KotlinAndroid36GradleIT() {
@@ -559,7 +579,7 @@ open class KotlinAndroid34GradleIT : KotlinAndroid3GradleIT() {
"kotlin-stdlib:\$kotlin_version", "kotlin-stdlib:\$kotlin_version",
"kotlin-stdlib" "kotlin-stdlib"
) + "\n" + ) + "\n" +
""" """
apply plugin: 'maven-publish' apply plugin: 'maven-publish'
android { android {
@@ -0,0 +1,19 @@
plugins {
id("com.android.application")
kotlin("multiplatform")
}
repositories {
google()
mavenLocal()
mavenCentral()
}
android {
compileSdkVersion(23)
buildToolsVersion("25.0.2")
}
kotlin {
android()
}
@@ -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"