[Gradle, Wasm] Use invariant path separator for wasm karma
^KT-58931 fixed
This commit is contained in:
committed by
Space Team
parent
b595328192
commit
4c9b94330d
+24
-27
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClientSetti
|
||||
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec
|
||||
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutor
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.MppTestReportHelper
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||
@@ -31,13 +30,11 @@ import org.jetbrains.kotlin.gradle.targets.js.appendConfigsFromDir
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.WebpackRulesDsl.Companion.webpackRulesContainer
|
||||
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
|
||||
import org.jetbrains.kotlin.gradle.targets.js.jsQuoted
|
||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin.Companion.kotlinNodeJsExtension
|
||||
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
||||
import org.jetbrains.kotlin.gradle.targets.js.testing.*
|
||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTest
|
||||
import org.jetbrains.kotlin.gradle.testing.internal.reportsDir
|
||||
import org.jetbrains.kotlin.gradle.utils.appendLine
|
||||
import org.jetbrains.kotlin.gradle.utils.property
|
||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
|
||||
@@ -47,7 +44,7 @@ import java.io.File
|
||||
class KotlinKarma(
|
||||
@Transient override val compilation: KotlinJsCompilation,
|
||||
private val services: () -> ServiceRegistry,
|
||||
private val basePath: String
|
||||
private val basePath: String,
|
||||
) : KotlinJsTestFramework {
|
||||
@Transient
|
||||
private val project: Project = compilation.target.project
|
||||
@@ -328,7 +325,7 @@ class KotlinKarma(
|
||||
task: KotlinJsTest,
|
||||
forkOptions: ProcessForkOptions,
|
||||
nodeJsArgs: MutableList<String>,
|
||||
debug: Boolean
|
||||
debug: Boolean,
|
||||
): TCServiceMessagesTestExecutionSpec {
|
||||
val file = task.inputFileProperty.get().asFile
|
||||
val fileString = file.toString()
|
||||
@@ -347,7 +344,7 @@ class KotlinKarma(
|
||||
)
|
||||
)
|
||||
config.files.add(
|
||||
createLoadWasm(file).normalize().absolutePath
|
||||
createLoadWasm(npmProject.dir, file).normalize().absolutePath
|
||||
)
|
||||
|
||||
config.proxies["/${wasmFile.name}"] = wasmFileString
|
||||
@@ -591,27 +588,6 @@ class KotlinKarma(
|
||||
return adapterJs
|
||||
}
|
||||
|
||||
private fun createLoadWasm(file: File): File {
|
||||
val static = npmProject.dir.resolve("static").also {
|
||||
it.mkdirs()
|
||||
}
|
||||
val loadJs = static.resolve("load.js")
|
||||
loadJs.printWriter().use { writer ->
|
||||
val relativePath = file.toRelativeString(static)
|
||||
writer.println(
|
||||
"""
|
||||
import exports from "$relativePath";
|
||||
|
||||
exports.startUnitTests();
|
||||
|
||||
window.__karma__.loaded();
|
||||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
|
||||
return loadJs
|
||||
}
|
||||
|
||||
private fun Appendable.appendFromConfigDir() {
|
||||
if (!configDirectory.isDirectory) {
|
||||
return
|
||||
@@ -623,5 +599,26 @@ class KotlinKarma(
|
||||
}
|
||||
}
|
||||
|
||||
internal fun createLoadWasm(npmProjectDir: File, file: File): File {
|
||||
val static = npmProjectDir.resolve("static").also {
|
||||
it.mkdirs()
|
||||
}
|
||||
val loadJs = static.resolve("load.js")
|
||||
loadJs.printWriter().use { writer ->
|
||||
val relativePath = file.relativeTo(static).invariantSeparatorsPath
|
||||
writer.println(
|
||||
"""
|
||||
import exports from "$relativePath";
|
||||
|
||||
exports.startUnitTests();
|
||||
|
||||
window.__karma__.loaded();
|
||||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
|
||||
return loadJs
|
||||
}
|
||||
|
||||
private val KARMA_MESSAGE = "^.*\\d{2} \\d{2} \\d{4,} \\d{2}:\\d{2}:\\d{2}.\\d{3}:(ERROR|WARN|INFO|DEBUG|LOG) \\[.*]: ([\\w\\W]*)\$"
|
||||
.toRegex()
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.gradle.targets.js.testing.karma
|
||||
|
||||
import org.junit.Test
|
||||
import java.nio.file.Files.createTempDirectory
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class KotlinKarmaTest {
|
||||
@Test
|
||||
fun checkLoadWasm() {
|
||||
val npmProjectDir = createTempDirectory("tmp")
|
||||
val executableFile = npmProjectDir.resolve("kotlin/main.mjs")
|
||||
|
||||
val loadWasm = createLoadWasm(npmProjectDir.toFile(), executableFile.toFile())
|
||||
|
||||
assertEquals(
|
||||
"static/load.js",
|
||||
loadWasm.relativeTo(npmProjectDir.toFile()).invariantSeparatorsPath
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
"""
|
||||
import exports from "../kotlin/main.mjs";
|
||||
|
||||
exports.startUnitTests();
|
||||
|
||||
window.__karma__.loaded();
|
||||
""".trimIndent(),
|
||||
loadWasm.readText().trimIndent()
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user