From e237072a68257a3342735f72b09cad075604793c Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Fri, 21 Jan 2022 09:59:24 +0100 Subject: [PATCH] [MPP, KPM]: Add test runner for KPM Model Mapping Add new testKpmModelMapping task that will inject `kotlin.kpm.experimentalModelMapping=true` property for all testSuites that implements `BaseGradleIT`. --- .../build.gradle.kts | 11 +++++++++++ .../jetbrains/kotlin/gradle/BaseGradleIT.kt | 18 +++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts index f3afedbd81f..f0f8f229d47 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts @@ -124,6 +124,17 @@ projectTest( if (isTeamcityBuild) finalizedBy(cleanTestKitCacheTask) } +projectTest( + "testKpmModelMapping", + shortenTempRootName = shortenTempRootName, + jUnitMode = JUnitMode.JUnit5 +) { + systemProperty("kotlin.gradle.kpm.enableModelMapping", "true") + includeMppAndAndroid(false) + includeNative(false) + if (isTeamcityBuild) finalizedBy(cleanTestKitCacheTask) +} + if (isTeamcityBuild) { projectTest( "testNative", diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt index 7d390f122f2..00fb4057871 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/BaseGradleIT.kt @@ -39,13 +39,24 @@ abstract class BaseGradleIT { protected var workingDir = File(".") - internal open fun defaultBuildOptions(): BuildOptions = BuildOptions(withDaemon = true) + internal open fun defaultBuildOptions(): BuildOptions = BuildOptions( + withDaemon = true, + enableKpmModelMapping = isKpmModelMappingEnabled + ) open val defaultGradleVersion: GradleVersionRequired get() = GradleVersionRequired.None val isTeamCityRun = System.getenv("TEAMCITY_VERSION") != null + /** + * `var` makes it configurable per test + * `open` makes it configurable per test suite + */ + protected open var isKpmModelMappingEnabled = System + .getProperty("kotlin.gradle.kpm.enableModelMapping") + .toBoolean() + @Before open fun setUp() { // Aapt2 from Android Gradle Plugin 3.2 and below does not handle long paths on Windows. @@ -264,6 +275,7 @@ abstract class BaseGradleIT { val hierarchicalMPPStructureSupport: Boolean? = null, val enableCompatibilityMetadataVariant: Boolean? = null, val withReports: List = emptyList(), + val enableKpmModelMapping: Boolean? = null, ) enum class ConfigurationCacheProblems { @@ -932,6 +944,10 @@ Finished executing task ':$taskName'| add("-Pkotlin.build.report.output=${options.withReports.joinToString { it.name }}") } + if (options.enableKpmModelMapping != null) { + add("-Pkotlin.kpm.experimentalModelMapping=${options.enableKpmModelMapping}") + } + add("-Dorg.gradle.unsafe.configuration-cache=${options.configurationCache}") add("-Dorg.gradle.unsafe.configuration-cache-problems=${options.configurationCacheProblems.name.toLowerCase()}")