[MPP] Use android.sdk from kotlin/dependencies for functionalTests

This commit is contained in:
Pavel Kargashinsky
2023-05-08 18:22:34 +02:00
committed by Space Team
parent 877438b1f3
commit 4b6ed128a2
5 changed files with 58 additions and 41 deletions
+42
View File
@@ -331,6 +331,48 @@ fun Task.useAndroidJar() {
TaskUtils.useAndroidJar(this)
}
fun Task.acceptAndroidSdkLicenses() {
val separator = System.lineSeparator()
with(project) {
val androidSdk = configurations["androidSdk"].singleFile
val sdkLicensesDir = androidSdk.resolve("licenses").also {
if (!it.exists()) it.mkdirs()
}
val sdkLicenses = listOf(
"8933bad161af4178b1185d1a37fbf41ea5269c55",
"d56f5187479451eabf01fb78af6dfcb131a6481e",
"24333f8a63b6825ea9c5514f83c2829b004d1fee",
)
val sdkPreviewLicense = "84831b9409646a918e30573bab4c9c91346d8abd"
val sdkLicenseFile = sdkLicensesDir.resolve("android-sdk-license")
if (!sdkLicenseFile.exists()) {
sdkLicenseFile.createNewFile()
sdkLicenseFile.writeText(
sdkLicenses.joinToString(separator = separator)
)
} else {
sdkLicenses
.subtract(
sdkLicenseFile.readText().lines()
)
.forEach {
sdkLicenseFile.appendText("$it$separator")
}
}
val sdkPreviewLicenseFile = sdkLicensesDir.resolve("android-sdk-preview-license")
if (!sdkPreviewLicenseFile.exists()) {
sdkPreviewLicenseFile.writeText(sdkPreviewLicense)
} else {
if (sdkPreviewLicense != sdkPreviewLicenseFile.readText().trim()) {
sdkPreviewLicenseFile.writeText(sdkPreviewLicense)
}
}
}
}
fun Project.confugureFirPluginAnnotationsDependency(testTask: TaskProvider<Test>) {
val firPluginAnnotations: Configuration by configurations.creating
@@ -76,44 +76,7 @@ fun addBenchmarkTask(
val acceptAndroidSdkLicenses = tasks.register("acceptAndroidSdkLicenses") {
useAndroidSdk()
doLast {
val androidSdk = configurations["androidSdk"].singleFile
val sdkLicensesDir = androidSdk.resolve("licenses").also {
if (!it.exists()) it.mkdirs()
}
val sdkLicenses = listOf(
"8933bad161af4178b1185d1a37fbf41ea5269c55",
"d56f5187479451eabf01fb78af6dfcb131a6481e",
"24333f8a63b6825ea9c5514f83c2829b004d1fee",
)
val sdkPreviewLicense = "84831b9409646a918e30573bab4c9c91346d8abd"
val sdkLicenseFile = sdkLicensesDir.resolve("android-sdk-license")
if (!sdkLicenseFile.exists()) {
sdkLicenseFile.createNewFile()
sdkLicenseFile.writeText(
sdkLicenses.joinToString(separator = "\n")
)
} else {
sdkLicenses
.subtract(
sdkLicenseFile.readText().lines()
)
.forEach {
sdkLicenseFile.appendText("$it\n")
}
}
val sdkPreviewLicenseFile = sdkLicensesDir.resolve("android-sdk-preview-license")
if (!sdkPreviewLicenseFile.exists()) {
sdkPreviewLicenseFile.writeText(sdkPreviewLicense)
} else {
if (sdkPreviewLicense != sdkPreviewLicenseFile.readText().trim()) {
sdkPreviewLicenseFile.writeText(sdkPreviewLicense)
}
}
}
doLast { acceptAndroidSdkLicenses() }
}
fun JavaExec.usesAndroidSdk() {
@@ -277,6 +277,8 @@ if (!kotlinBuildProperties.isInJpsBuildIdeaSync) {
languageVersion.set(JavaLanguageVersion.of(11))
})
dependsOnKotlinGradlePluginInstall()
useAndroidSdk()
doFirst { acceptAndroidSdkLicenses() }
testLogging {
events("passed", "skipped", "failed")
@@ -10,7 +10,6 @@ package org.jetbrains.kotlin.gradle.dependencyResolutionTests.tcs
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.dependencyResolutionTests.mavenCentralCacheRedirector
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
@@ -48,6 +47,7 @@ class ExternalAndroidTargetPrototypeSmokeTest {
@Test
fun `apply prototype - evaluate - configurations can be resolved`() {
val project = buildProjectWithMPP()
setAndroidSdkDirProperty(project)
project.androidLibrary { compileSdk = 31 }
val androidTargetPrototype = project.multiplatformExtension.androidTargetPrototype()
@@ -84,7 +84,7 @@ class ExternalAndroidTargetPrototypeSmokeTest {
applyMultiplatformPlugin()
repositories.mavenCentralCacheRedirector()
}
setAndroidSdkDirProperty(project)
project.androidLibrary { compileSdk = 31 }
project.multiplatformExtension.androidTargetPrototype()
project.evaluate()
@@ -5,11 +5,21 @@
package org.jetbrains.kotlin.gradle.util
import org.gradle.api.Project
import org.junit.Assume
import java.io.File
val isAndroidSdkAvailable: Boolean = System.getenv("ANDROID_SDK_ROOT")?.let { root -> File(root).exists() } ?: false
val androidSdk: String? = System.getProperty("android.sdk")
val isAndroidSdkAvailable: Boolean = androidSdk?.let { root -> File(root).exists() } ?: false
fun assumeAndroidSdkAvailable() {
Assume.assumeTrue("Missing android sdk", isAndroidSdkAvailable)
}
fun setAndroidSdkDirProperty(project: Project) {
val localPropertiesFile = File(project.rootDir.canonicalPath).resolve("local.properties")
if (!localPropertiesFile.exists()) {
localPropertiesFile.createNewFile()
}
localPropertiesFile.writeText("sdk.dir = $androidSdk")
}