From 20e33806ec924ea0f3cac2c00d559e2a0569c1e4 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 7 Nov 2019 15:18:57 +0300 Subject: [PATCH] [Debugger, JS] Provide possibility to debug mocha tests --- .../gradle/targets/js/testing/KotlinJsTest.kt | 11 ++++---- .../js/testing/KotlinJsTestFramework.kt | 3 +- .../targets/js/testing/karma/KotlinKarma.kt | 3 +- .../targets/js/testing/mocha/KotlinMocha.kt | 28 +++++++++++-------- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt index 8fddcda50b6..527ef92480e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTest.kt @@ -114,10 +114,11 @@ open class KotlinJsTest : KotlinTest(), RequiresNpmDependencies { val nodeJsArgs = mutableListOf() - if (debug) { - nodeJsArgs.add("--inspect-brk") - } - - return testFramework!!.createTestExecutionSpec(this, forkOptions, nodeJsArgs) + return testFramework!!.createTestExecutionSpec( + task = this, + forkOptions = forkOptions, + nodeJsArgs = nodeJsArgs, + debug = debug + ) } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTestFramework.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTestFramework.kt index 810cbbb9bd8..06cf0d2c433 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTestFramework.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/KotlinJsTestFramework.kt @@ -15,7 +15,8 @@ interface KotlinJsTestFramework : RequiresNpmDependencies { fun createTestExecutionSpec( task: KotlinJsTest, forkOptions: ProcessForkOptions, - nodeJsArgs: MutableList + nodeJsArgs: MutableList, + debug: Boolean ): TCServiceMessagesTestExecutionSpec override val nodeModulesRequired: Boolean diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt index 1cb9efe097c..a4f7b83f1ce 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt @@ -254,7 +254,8 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF override fun createTestExecutionSpec( task: KotlinJsTest, forkOptions: ProcessForkOptions, - nodeJsArgs: MutableList + nodeJsArgs: MutableList, + debug: Boolean ): TCServiceMessagesTestExecutionSpec { if (config.browsers.isEmpty()) { error("No browsers configured for $task") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt index 1147628cc43..4e7b7725446 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt @@ -40,7 +40,8 @@ class KotlinMocha(override val compilation: KotlinJsCompilation) : KotlinJsTestF override fun createTestExecutionSpec( task: KotlinJsTest, forkOptions: ProcessForkOptions, - nodeJsArgs: MutableList + nodeJsArgs: MutableList, + debug: Boolean ): TCServiceMessagesTestExecutionSpec { val clientSettings = TCServiceMessagesClientSettings( task.name, @@ -59,20 +60,21 @@ class KotlinMocha(override val compilation: KotlinJsCompilation) : KotlinJsTestF createAdapterJs(task) - val nodeModules = listOf( - "mocha/bin/mocha", - "./$ADAPTER_NODEJS" - ) + val mocha = npmProject.require("mocha/bin/mocha") + val adapter = npmProject.require("./$ADAPTER_NODEJS") - val args = nodeJsArgs + - nodeModules.map { - npmProject.require(it) - } + cliArgs.toList() + - cliArg("--reporter", "kotlin-test-js-runner/mocha-kotlin-reporter.js") + - cliArg("--timeout", timeout) + + val args = mutableListOf(mocha).apply { + addAll(cliArg("--inspect-brk", debug)) + add(adapter) + addAll(cliArgs.toList()) + addAll(cliArg("--reporter", "kotlin-test-js-runner/mocha-kotlin-reporter.js")) + addAll(cliArg("--timeout", timeout)) + addAll( cliArg( "-r", "kotlin-test-js-runner/kotlin-nodejs-source-map-support.js" ) + ) + } return TCServiceMessagesTestExecutionSpec( forkOptions, @@ -82,6 +84,10 @@ class KotlinMocha(override val compilation: KotlinJsCompilation) : KotlinJsTestF ) } + private fun cliArg(cli: String, value: Boolean): List { + return if (value) listOf(cli) else emptyList() + } + private fun cliArg(cli: String, value: String?): List { return value?.let { listOf(cli, it) } ?: emptyList() }