[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.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 {
@@ -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"