From 376d27dc6afb826243ef79d2f167b9fac08a7e17 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Thu, 12 Oct 2023 09:27:34 +0000 Subject: [PATCH] [Gradle, Wasm] Fix proxy for karma wasm tests on windows ^KT-62128 fixed --- .../gradle/targets/js/testing/karma/KotlinKarma.kt | 13 +++++++++++-- .../targets/js/testing/karma/KotlinKarmaTest.kt | 13 +++++++++++++ 2 files changed, 24 insertions(+), 2 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 ecaf9e4136c..ee40932e334 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 @@ -354,7 +354,7 @@ class KotlinKarma( createLoadWasm(npmProject.dir, file).normalize().absolutePath ) - config.proxies["/${wasmFile.name}"] = wasmFileString + config.proxies["/${wasmFile.name}"] = basify(npmProjectDir, wasmFile) config.customContextFile = npmProject.require("kotlin-test-js-runner/static/context.html") config.customDebugFile = npmProject.require("kotlin-test-js-runner/static/debug.html") @@ -396,7 +396,7 @@ class KotlinKarma( escapeTCMessagesInLog = isTeamCity.isPresent ) - config.basePath = npmProject.nodeModulesDir.absolutePath + config.basePath = npmProjectDir.absolutePath configurators.forEach { it(task) @@ -606,6 +606,15 @@ class KotlinKarma( } } +// In Karma config it means relative path based on basePath which is configured inside Karma config +// It helps to get rid of windows backslashes in proxies config +// `base` is using because of how Karma works with proxies +// http://karma-runner.github.io/6.4/config/configuration-file.html#proxies +// http://karma-runner.github.io/6.4/config/files.html#loading-assets +internal fun basify(npmProjectDir: File, file: File): String { + return "/base/${file.relativeTo(npmProjectDir).invariantSeparatorsPath}" +} + internal fun createLoadWasm(npmProjectDir: File, file: File): File { val static = npmProjectDir.resolve("static").also { it.mkdirs() 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 1e2f97ea716..9b670638caa 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 @@ -35,4 +35,17 @@ class KotlinKarmaTest { loadWasm.readText().trimIndent() ) } + + @Test + fun checkBasify() { + val npmProjectDir = createTempDirectory("tmp") + val executableFile = npmProjectDir.resolve("kotlin/main.wasm") + + val based = basify(npmProjectDir.toFile(), executableFile.toFile()) + + assertEquals( + "/base/kotlin/main.wasm", + based + ) + } } \ No newline at end of file