From 90f6c53bf8a8f23b677c303bfeb3dd769ca894a2 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 8 Jun 2023 21:30:23 +0200 Subject: [PATCH] [Gradle, Js] Use dynamic import to catch exceptions during wasm compilation --- .../gradle/targets/js/testing/karma/KotlinKarma.kt | 14 ++++++++------ .../targets/js/testing/karma/KotlinKarmaTest.kt | 14 ++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt index b2e19b0effd..a5528c36a27 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt @@ -603,16 +603,18 @@ internal fun createLoadWasm(npmProjectDir: File, file: File): File { val static = npmProjectDir.resolve("static").also { it.mkdirs() } - val loadJs = static.resolve("load.js") + val loadJs = static.resolve("load.mjs") loadJs.printWriter().use { writer -> val relativePath = file.relativeTo(static).invariantSeparatorsPath writer.println( """ - import exports from "$relativePath"; - - exports.startUnitTests(); - - window.__karma__.loaded(); + import( /* webpackMode: "eager" */ "$relativePath") + .then((exports) => { + exports.default.startUnitTests(); + window.__karma__.loaded(); + }, (reason) => { + window.__karma__.error("Problem with loading", void 0, void 0, void 0, reason) + }) """.trimIndent() ) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarmaTest.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarmaTest.kt index 79e900012b7..1e2f97ea716 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarmaTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarmaTest.kt @@ -18,17 +18,19 @@ class KotlinKarmaTest { val loadWasm = createLoadWasm(npmProjectDir.toFile(), executableFile.toFile()) assertEquals( - "static/load.js", + "static/load.mjs", loadWasm.relativeTo(npmProjectDir.toFile()).invariantSeparatorsPath ) assertEquals( """ - import exports from "../kotlin/main.mjs"; - - exports.startUnitTests(); - - window.__karma__.loaded(); + import( /* webpackMode: "eager" */ "../kotlin/main.mjs") + .then((exports) => { + exports.default.startUnitTests(); + window.__karma__.loaded(); + }, (reason) => { + window.__karma__.error("Problem with loading", void 0, void 0, void 0, reason) + }) """.trimIndent(), loadWasm.readText().trimIndent() )