Gradle, js: karma

#KT-31011 fixed
This commit is contained in:
Sergey Rostov
2019-04-11 09:08:10 +03:00
parent 92910ec3e9
commit 3dae2739a4
4 changed files with 9 additions and 13 deletions
@@ -1,8 +0,0 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.targets.js.nodejs
import org.gradle.api.Project
@@ -49,6 +49,7 @@ data class NpmDependency(
} }
private fun tryFindNodeModule(): MutableSet<File> { private fun tryFindNodeModule(): MutableSet<File> {
// todo: transitive dependencies
var p = project var p = project
do { do {
val result = p.rootDir.resolve("node_modules/$key") val result = p.rootDir.resolve("node_modules/$key")
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProjectLayout import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProjectLayout
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolver import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolver
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTestFramework import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTestFramework
import org.jetbrains.kotlin.gradle.targets.js.testing.karma.KotlinKarma
import org.jetbrains.kotlin.gradle.targets.js.testing.nodejs.KotlinNodeJsTestRunner import org.jetbrains.kotlin.gradle.targets.js.testing.nodejs.KotlinNodeJsTestRunner
import org.jetbrains.kotlin.gradle.targets.js.testing.mocha.KotlinMocha import org.jetbrains.kotlin.gradle.targets.js.testing.mocha.KotlinMocha
import org.jetbrains.kotlin.gradle.tasks.KotlinTestTask import org.jetbrains.kotlin.gradle.tasks.KotlinTestTask
@@ -35,6 +36,8 @@ open class KotlinNodeJsTestTask : KotlinTestTask() {
fun useMocha(body: KotlinMocha.() -> Unit) = use(KotlinMocha(), body) fun useMocha(body: KotlinMocha.() -> Unit) = use(KotlinMocha(), body)
fun useKarma(body: KotlinKarma.() -> Unit) = use(KotlinKarma(), body)
private inline fun <T : KotlinJsTestFramework> use(runner: T, body: T.() -> Unit) { private inline fun <T : KotlinJsTestFramework> use(runner: T, body: T.() -> Unit) {
testFramework = runner.also(body) testFramework = runner.also(body)
@@ -11,8 +11,8 @@ import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClientSetti
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec
import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProjectLayout
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.targets.js.tasks.KotlinNodeJsTestTask
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTestFramework import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTestFramework
class KotlinKarma : KotlinJsTestFramework { class KotlinKarma : KotlinJsTestFramework {
@@ -31,19 +31,19 @@ class KotlinKarma : KotlinJsTestFramework {
} }
override fun createTestExecutionSpec( override fun createTestExecutionSpec(
task: KotlinJsTest, task: KotlinNodeJsTestTask,
forkOptions: ProcessForkOptions, forkOptions: ProcessForkOptions,
nodeJsArgs: MutableList<String> nodeJsArgs: MutableList<String>
): TCServiceMessagesTestExecutionSpec { ): TCServiceMessagesTestExecutionSpec {
val clientSettings = TCServiceMessagesClientSettings( val clientSettings = TCServiceMessagesClientSettings(
task.name, task.name,
testNameSuffix = task.targetName, testNameSuffix = task.targetName,
prependSuiteName = true, prepandSuiteName = true,
stackTraceParser = ::parseNodeJsStackTraceAsJvm, stackTraceParser = ::parseNodeJsStackTraceAsJvm,
ignoreOutOfRootNodes = true ignoreOutOfRootNodes = true
) )
val npmProjectLayout = NpmProject[task.project] val npmProjectLayout = NpmProjectLayout[task.project]
val files = task.nodeModulesToLoad.map { val files = task.nodeModulesToLoad.map {
npmProjectLayout.nodeModulesDir.resolve(it).also { file -> npmProjectLayout.nodeModulesDir.resolve(it).also { file ->