Introduce execution & test run API, KT-32679

* KotlinExecution
* KotlinExecutionSource
* KotlinTestRun
* Aggregating executions and execution sources
* KotlinTargetWithTests

* Add a `testableTargets` extension
* Make some Kotlin/Native targets testable (this requires
  having a separate preset type for them)
* Implement test runs encapsulating the tests for all
  existing testable targets by refactoring their
  TargetConfigurator classes

Issue #KT-32679 Fixed
This commit is contained in:
Sergey Igushkin
2019-07-31 18:21:08 +03:00
parent 6c8e829f19
commit 9f0c5675bd
29 changed files with 879 additions and 186 deletions
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.generators.gradle.dsl
import org.jetbrains.kotlin.konan.target.HostManager
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.konan.target.presetName
internal class KotlinPresetEntry(
@@ -21,6 +22,9 @@ internal const val MPP_PACKAGE = "org.jetbrains.kotlin.gradle.plugin.mpp"
internal const val KOTLIN_NATIVE_TARGET_PRESET_CLASS_FQNAME = "$MPP_PACKAGE.KotlinNativeTargetPreset"
internal const val KOTLIN_NATIVE_TARGET_CLASS_FQNAME = "$MPP_PACKAGE.KotlinNativeTarget"
internal const val KOTLIN_NATIVE_TARGET_WITH_TESTS_PRESET_CLASS_FQNAME = "$MPP_PACKAGE.KotlinNativeTargetWithTestsPreset"
internal const val KOTLIN_NATIVE_TARGET_WITH_TESTS_CLASS_FQNAME = "$MPP_PACKAGE.KotlinNativeTargetWithTests"
internal val jvmPresetEntry = KotlinPresetEntry(
"jvm",
typeName("$MPP_PACKAGE.KotlinJvmTargetPreset"),
@@ -39,11 +43,24 @@ internal val androidPresetEntry = KotlinPresetEntry(
typeName("$MPP_PACKAGE.KotlinAndroidTarget")
)
// Note: modifying this set should also be reflected in the MPP plugin code, see 'setupDefaultPresets'
private val testableNativeTargets = setOf(KonanTarget.LINUX_X64, KonanTarget.MACOS_X64, KonanTarget.MINGW_X64)
internal val nativePresetEntries = HostManager().targets.map { (_, target) ->
KotlinPresetEntry(
target.presetName,
typeName(KOTLIN_NATIVE_TARGET_PRESET_CLASS_FQNAME),
typeName(KOTLIN_NATIVE_TARGET_CLASS_FQNAME)
typeName(
if (target in testableNativeTargets)
KOTLIN_NATIVE_TARGET_WITH_TESTS_PRESET_CLASS_FQNAME
else
KOTLIN_NATIVE_TARGET_PRESET_CLASS_FQNAME
),
typeName(
if (target in testableNativeTargets)
KOTLIN_NATIVE_TARGET_WITH_TESTS_CLASS_FQNAME
else
KOTLIN_NATIVE_TARGET_CLASS_FQNAME
)
)
}