[Gradle, JS] Migrate in KotlinJsIrTest

This commit is contained in:
Ilya Goncharov
2020-01-14 17:46:25 +03:00
parent bf415704b6
commit dd577e1008
6 changed files with 24 additions and 21 deletions
@@ -10,8 +10,10 @@ import org.jetbrains.kotlin.gradle.plugin.CompilationExecutionSource
import org.jetbrains.kotlin.gradle.plugin.CompilationExecutionSourceSupport import org.jetbrains.kotlin.gradle.plugin.CompilationExecutionSourceSupport
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetTestRun import org.jetbrains.kotlin.gradle.plugin.KotlinTargetTestRun
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSubTarget import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSubTarget
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTest
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinJsSubTarget import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinJsSubTarget
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
import org.jetbrains.kotlin.gradle.testing.KotlinReportAggregatingTestRun import org.jetbrains.kotlin.gradle.testing.KotlinReportAggregatingTestRun
@@ -22,6 +24,9 @@ import kotlin.properties.Delegates
class JsCompilationExecutionSource(override val compilation: KotlinJsCompilation) : class JsCompilationExecutionSource(override val compilation: KotlinJsCompilation) :
CompilationExecutionSource<KotlinJsCompilation> CompilationExecutionSource<KotlinJsCompilation>
class JsIrCompilationExecutionSource(override val compilation: KotlinJsIrCompilation) :
CompilationExecutionSource<KotlinJsIrCompilation>
open class KotlinJsPlatformTestRun(testRunName: String, subtarget: KotlinJsSubTarget) : open class KotlinJsPlatformTestRun(testRunName: String, subtarget: KotlinJsSubTarget) :
KotlinTaskTestRun<JsCompilationExecutionSource, KotlinJsTest>(testRunName, subtarget.target), KotlinTaskTestRun<JsCompilationExecutionSource, KotlinJsTest>(testRunName, subtarget.target),
CompilationExecutionSourceSupport<KotlinJsCompilation> { CompilationExecutionSourceSupport<KotlinJsCompilation> {
@@ -43,22 +48,22 @@ open class KotlinJsPlatformTestRun(testRunName: String, subtarget: KotlinJsSubTa
} }
open class KotlinJsIrPlatformTestRun(testRunName: String, subtarget: KotlinJsIrSubTarget) : open class KotlinJsIrPlatformTestRun(testRunName: String, subtarget: KotlinJsIrSubTarget) :
KotlinTaskTestRun<JsCompilationExecutionSource, KotlinJsTest>(testRunName, subtarget.target), KotlinTaskTestRun<JsIrCompilationExecutionSource, KotlinJsIrTest>(testRunName, subtarget.target),
CompilationExecutionSourceSupport<KotlinJsCompilation> { CompilationExecutionSourceSupport<KotlinJsIrCompilation> {
private var _executionSource: JsCompilationExecutionSource by Delegates.notNull() private var _executionSource: JsIrCompilationExecutionSource by Delegates.notNull()
final override var executionSource: JsCompilationExecutionSource final override var executionSource: JsIrCompilationExecutionSource
get() = _executionSource get() = _executionSource
set(value) { set(value) {
executionTask.configure { it.compilation = value.compilation } executionTask.configure { it.compilation = value.compilation }
_executionSource = value _executionSource = value
} }
override fun setExecutionSourceFrom(compilation: KotlinJsCompilation) { override fun setExecutionSourceFrom(compilation: KotlinJsIrCompilation) {
requireCompilationOfTarget(compilation, target) requireCompilationOfTarget(compilation, target)
executionSource = JsCompilationExecutionSource(compilation) executionSource = JsIrCompilationExecutionSource(compilation)
} }
} }
@@ -70,9 +75,9 @@ class JsAggregatingExecutionSource(private val aggregatingTestRun: KotlinJsRepor
} }
class JsIrAggregatingExecutionSource(private val aggregatingTestRun: KotlinJsIrReportAggregatingTestRun) : class JsIrAggregatingExecutionSource(private val aggregatingTestRun: KotlinJsIrReportAggregatingTestRun) :
KotlinAggregateExecutionSource<JsCompilationExecutionSource> { KotlinAggregateExecutionSource<JsIrCompilationExecutionSource> {
override val executionSources: Iterable<JsCompilationExecutionSource> override val executionSources: Iterable<JsIrCompilationExecutionSource>
get() = aggregatingTestRun.getConfiguredExecutions().map { it.executionSource } get() = aggregatingTestRun.getConfiguredExecutions().map { it.executionSource }
} }
@@ -114,11 +119,11 @@ open class KotlinJsReportAggregatingTestRun(
open class KotlinJsIrReportAggregatingTestRun( open class KotlinJsIrReportAggregatingTestRun(
testRunName: String, testRunName: String,
override val target: KotlinJsIrTarget override val target: KotlinJsIrTarget
) : KotlinReportAggregatingTestRun<JsCompilationExecutionSource, JsIrAggregatingExecutionSource, KotlinJsIrPlatformTestRun>(testRunName), ) : KotlinReportAggregatingTestRun<JsIrCompilationExecutionSource, JsIrAggregatingExecutionSource, KotlinJsIrPlatformTestRun>(testRunName),
KotlinTargetTestRun<JsIrAggregatingExecutionSource>, KotlinTargetTestRun<JsIrAggregatingExecutionSource>,
CompilationExecutionSourceSupport<KotlinJsCompilation> { CompilationExecutionSourceSupport<KotlinJsIrCompilation> {
override fun setExecutionSourceFrom(compilation: KotlinJsCompilation) = configureAllExecutions { override fun setExecutionSourceFrom(compilation: KotlinJsIrCompilation) = configureAllExecutions {
setExecutionSourceFrom(compilation) setExecutionSourceFrom(compilation)
} }
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsIrPlatformTestRun
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsIrReportAggregatingTestRun import org.jetbrains.kotlin.gradle.targets.js.KotlinJsIrReportAggregatingTestRun
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTest
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack
@@ -69,7 +70,7 @@ interface KotlinJsSubTargetDsl {
} }
interface KotlinJsIrSubTargetDsl { interface KotlinJsIrSubTargetDsl {
fun testTask(body: KotlinJsTest.() -> Unit) fun testTask(body: KotlinJsIrTest.() -> Unit)
fun testTask(fn: Closure<*>) { fun testTask(fn: Closure<*>) {
testTask { testTask {
ConfigureUtil.configure(fn, this) ConfigureUtil.configure(fn, this)
@@ -13,7 +13,6 @@ import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.targets.js.dsl.* import org.jetbrains.kotlin.gradle.targets.js.dsl.*
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.subtargets.BrowserDistribution import org.jetbrains.kotlin.gradle.targets.js.subtargets.BrowserDistribution
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Devtool import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Devtool
@@ -41,7 +40,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
} }
} }
override fun configureDefaultTestFramework(it: KotlinJsTest) { override fun configureDefaultTestFramework(it: KotlinJsIrTest) {
it.useKarma { it.useKarma {
useChromeHeadless() useChromeHeadless()
} }
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsIrSubTargetDsl
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.gradle.tasks.registerTask
import org.jetbrains.kotlin.gradle.testing.internal.configureConventions import org.jetbrains.kotlin.gradle.testing.internal.configureConventions
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
@@ -87,7 +86,7 @@ abstract class KotlinJsIrSubTarget(
} }
} }
override fun testTask(body: KotlinJsTest.() -> Unit) { override fun testTask(body: KotlinJsIrTest.() -> Unit) {
testRuns.getByName(KotlinTargetWithTests.DEFAULT_TEST_RUN_NAME).executionTask.configure(body) testRuns.getByName(KotlinTargetWithTests.DEFAULT_TEST_RUN_NAME).executionTask.configure(body)
} }
@@ -119,7 +118,7 @@ abstract class KotlinJsIrSubTarget(
) )
) )
val testJs = project.registerTask<KotlinJsTest>(testRun.subtargetTestTaskName()) { testJs -> val testJs = project.registerTask<KotlinJsIrTest>(testRun.subtargetTestTaskName()) { testJs ->
val compileTask = compilation.compileKotlinTask val compileTask = compilation.compileKotlinTask
testJs.group = LifecycleBasePlugin.VERIFICATION_GROUP testJs.group = LifecycleBasePlugin.VERIFICATION_GROUP
@@ -157,7 +156,7 @@ abstract class KotlinJsIrSubTarget(
} }
} }
protected abstract fun configureDefaultTestFramework(it: KotlinJsTest) protected abstract fun configureDefaultTestFramework(it: KotlinJsIrTest)
private fun configureMain() { private fun configureMain() {
target.compilations.all { compilation -> target.compilations.all { compilation ->
@@ -19,7 +19,7 @@ interface KotlinJsIrTestFramework : RequiresNpmDependencies {
debug: Boolean debug: Boolean
): TCServiceMessagesTestExecutionSpec ): TCServiceMessagesTestExecutionSpec
/* /* because KotlinJsTestFramework override it too
override val nodeModulesRequired: Boolean override val nodeModulesRequired: Boolean
get() = true get() = true
*/ */
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.gradle.targets.js.ir
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsIrNodeDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsIrNodeDsl
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
import javax.inject.Inject import javax.inject.Inject
open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) : open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
@@ -29,7 +28,7 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
(project.tasks.getByName(runTaskName) as NodeJsExec).body() (project.tasks.getByName(runTaskName) as NodeJsExec).body()
} }
override fun configureDefaultTestFramework(it: KotlinJsTest) { override fun configureDefaultTestFramework(it: KotlinJsIrTest) {
it.useMocha { } it.useMocha { }
} }