From 81072ac9b498c5fbe3d4e30b83a650723e1e0811 Mon Sep 17 00:00:00 2001 From: Svyatoslav Kuzmich Date: Thu, 2 Feb 2023 16:37:32 +0000 Subject: [PATCH] [Wasm] Fix parsing D8 CLI arguments in kotlin.test `@JsFun("code")` is now executed inside a JS function which brings its `arguments` into the scope shadowing D8's CLI `arguments`. Accessing arguments through `globalThis` fixes the problem. Merge-request: KT-MR-8630 Merged-by: Svyatoslav Kuzmich --- .../wasm/src/main/kotlin/kotlin/test/TeamcityAdapter.kt | 3 ++- .../testProject/new-mpp-wasm-test/build.gradle.kts | 8 +++++++- .../new-mpp-wasm-test/src/wasmTest/kotlin/Test.kt | 5 +++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libraries/kotlin.test/wasm/src/main/kotlin/kotlin/test/TeamcityAdapter.kt b/libraries/kotlin.test/wasm/src/main/kotlin/kotlin/test/TeamcityAdapter.kt index 51d39383288..09ced3e36e5 100644 --- a/libraries/kotlin.test/wasm/src/main/kotlin/kotlin/test/TeamcityAdapter.kt +++ b/libraries/kotlin.test/wasm/src/main/kotlin/kotlin/test/TeamcityAdapter.kt @@ -9,7 +9,8 @@ import kotlin.test.FrameworkAdapter import kotlin.math.abs import kotlin.js.* -@JsFun("() => (typeof arguments !== 'undefined' && typeof arguments.join !== 'undefined') ? arguments.join(' ') : '' ") +// Using 'globalThis.arguments' because 'arguments' can refer to current JS function arguments +@JsFun("() => globalThis.arguments?.join?.(' ') ?? ''") private external fun d8Arguments(): String @JsFun("() => (typeof process != 'undefined' && typeof process.argv != 'undefined') ? process.argv.slice(2).join(' ') : ''") private external fun nodeArguments(): String diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/build.gradle.kts index 5bb5f262a46..ddbd160bfb8 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/build.gradle.kts @@ -32,7 +32,13 @@ tasks.named("kotli kotlin { wasm { - () + { + testTask { + filter.apply { + excludeTest("WasmTest", "testShouldBeExcluded") + } + } + } } diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/src/wasmTest/kotlin/Test.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/src/wasmTest/kotlin/Test.kt index 6c141257f96..8f96d415c33 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/src/wasmTest/kotlin/Test.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-wasm-test/src/wasmTest/kotlin/Test.kt @@ -27,4 +27,9 @@ class WasmTest { @Test fun test6() = assertEquals(foo(), 3) } + + @Test + fun testShouldBeExcluded() { + error("This test should be excluded") + } } \ No newline at end of file