From 75bc90f51299efacc72b9af5386fae07421e1002 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Wed, 11 May 2022 13:27:31 +0000 Subject: [PATCH] rra/ilgonmic/KT-52221-dry-run-with-empty-nodejs [Gradle, JS] Disable for wasm [Gradle, JS] Add test on mocha with dry run should report test state [Gradle, JS] When run in dry mode, we need special adapter which not run tests Merge-request: KT-MR-6205 Merged-by: Ilya Goncharov ^KT-52221 fixed --- .../kotlin/gradle/Kotlin2JsGradlePluginIT.kt | 20 ++++++++++++++++++ .../kotlin-js-nodejs-project/TEST-all.xml | 17 +++++++++++++++ .../gradle.properties | 1 + .../testing/TCServiceMessagesTestExecutor.kt | 2 +- .../targets/js/testing/mocha/KotlinMocha.kt | 21 ++++++++++--------- 5 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-project/TEST-all.xml create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-project/gradle.properties diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt index f8451eeda77..0a28b5d9ff0 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.gradle.util.normalizePath import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.condition.DisabledIf +import java.io.File import java.nio.file.Files import java.nio.file.Paths import java.util.zip.ZipFile @@ -1150,6 +1151,25 @@ abstract class AbstractKotlin2JsGradlePluginIT(protected val irBackend: Boolean) assertOutputDoesNotContain("##teamcity[") } + projectPath.resolve("src/test/kotlin/Tests.kt").appendText( + "\n" + """ + |class Tests3 { + | @Test + | fun testHello() { + | throw IllegalArgumentException("foo") + | } + |} + """.trimMargin() + ) + buildAndFail("nodeTest") { + assertTasksFailed(":nodeTest") + + assertTestResults( + projectPath.resolve("TEST-all.xml"), + "nodeTest" + ) + } + projectPath.resolve("src/test/kotlin/Tests.kt").appendText( "\n" + """ | diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-project/TEST-all.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-project/TEST-all.xml new file mode 100644 index 00000000000..7db7358d788 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-project/TEST-all.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + ... + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-project/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-project/gradle.properties new file mode 100644 index 00000000000..a4a181c3de2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kotlin-js-nodejs-project/gradle.properties @@ -0,0 +1 @@ +kotlin.tests.individualTaskReports=true \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/testing/TCServiceMessagesTestExecutor.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/testing/TCServiceMessagesTestExecutor.kt index 57d64c298d6..560acb9ddd6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/testing/TCServiceMessagesTestExecutor.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/internal/testing/TCServiceMessagesTestExecutor.kt @@ -53,7 +53,7 @@ class TCServiceMessagesTestExecutor( if (spec.dryRunArgs != null) { val exec = execHandleFactory.newExec() spec.forkOptions.copyTo(exec) - exec.args = spec.args + exec.args = spec.dryRunArgs // We do not need output by dry run of tests exec.standardOutput = object : OutputStream() { override fun write(b: Int) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt index b730fbcdbc0..8dc1b5537b8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt @@ -102,16 +102,17 @@ class KotlinMocha(@Transient override val compilation: KotlinJsCompilation, priv } } - val dryRunArgs = mutableListOf( - "--require", - npmProject.require("source-map-support/register.js") - ).apply { - if (debug) { - add("--inspect-brk") - } - add(createAdapterJs(file, "kotlin-test-nodejs-empty-runner", ADAPTER_EMPTY_NODEJS).canonicalPath) - addAll(cliArgs.toList()) - if (platformType == KotlinPlatformType.wasm) { + val dryRunArgs = if (platformType == KotlinPlatformType.wasm) + null + else { + mutableListOf( + "--require", + npmProject.require("source-map-support/register.js") + ).apply { + add(mocha) + add(createAdapterJs(file, "kotlin-test-nodejs-empty-runner", ADAPTER_EMPTY_NODEJS).canonicalPath) + addAll(cliArgs.toList()) + addAll(cliArg("-n", "experimental-wasm-typed-funcref,experimental-wasm-gc,experimental-wasm-eh")) } }