[Gradle, JS] Detect adapter automatically, not depends on JasmineLike

This commit is contained in:
Ilya Goncharov
2019-10-10 19:28:04 +03:00
parent 55fb9be7f6
commit 7cde993b43
3 changed files with 28 additions and 11 deletions
@@ -246,7 +246,7 @@ class KotlinKarma(override val compilation: KotlinJsCompilation) : KotlinJsTestF
val npmProject = compilation.npmProject
val files = it.nodeModulesToLoad.map { npmProject.require(it) }
val adapterJs = npmProject.dir.resolve("adapter.js")
val adapterJs = npmProject.dir.resolve("adapter-browser.js")
adapterJs.printWriter().use { writer ->
val karmaRunner = npmProject.require("kotlin-test-js-runner/kotlin-test-karma-runner.js")
writer.println("require(${karmaRunner.jsQuoted()})")
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.KotlinGradleNpmPackage
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
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.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
@@ -50,14 +51,15 @@ class KotlinMocha(override val compilation: KotlinJsCompilation) : KotlinJsTestF
val npmProject = compilation.npmProject
val cliArgs = KotlinTestRunnerCliArgs(
task.nodeModulesToLoad.map { npmProject.require(it) },
task.includePatterns,
task.excludePatterns
include = task.includePatterns,
exclude = task.excludePatterns
)
createAdapterJs(task)
val nodeModules = listOf(
"mocha/bin/mocha",
task.nodeModulesToLoad.single()
"./$ADAPTER_NODEJS"
)
val args = nodeJsArgs +
@@ -66,8 +68,7 @@ class KotlinMocha(override val compilation: KotlinJsCompilation) : KotlinJsTestF
} + cliArgs.toList() +
listOf("--reporter", "mocha-teamcity-reporter") +
listOf(
"-r", "kotlin-test-js-runner/kotlin-nodejs-source-map-support.js",
"-r", "kotlin-test-js-runner/kotlin-test-nodejs-runner.js"
"-r", "kotlin-test-js-runner/kotlin-nodejs-source-map-support.js"
)
return TCServiceMessagesTestExecutionSpec(
@@ -77,4 +78,23 @@ class KotlinMocha(override val compilation: KotlinJsCompilation) : KotlinJsTestF
clientSettings
)
}
private fun createAdapterJs(task: KotlinJsTest) {
val npmProject = compilation.npmProject
val file = task.nodeModulesToLoad
.map { npmProject.require(it) }
.single()
val adapterJs = npmProject.dir.resolve(ADAPTER_NODEJS)
adapterJs.printWriter().use { writer ->
val adapter = npmProject.require("kotlin-test-js-runner/kotlin-test-nodejs-runner.js")
writer.println("require(${adapter.jsQuoted()})")
writer.println("require(${file.jsQuoted()})")
}
}
companion object {
const val ADAPTER_NODEJS = "adapter-nodejs.js"
}
}
@@ -10,8 +10,6 @@ const defaultMochaArgs = [
'place-holder',
'--require',
'place-holder',
'--require',
'place-holder',
'--no-config',
'--no-package',
'--no-opts',
@@ -28,6 +26,5 @@ const defaultMochaArgs = [
const processArgs = process.argv.slice(2, -1 * defaultMochaArgs.length);
const untypedArgs = parser.parse(processArgs);
// TODO(ilgonmic): Try to detect adapter
const initialAdapter = new kotlin_test.kotlin.test.adapters.JasmineLikeAdapter();
const initialAdapter = kotlin_test.kotlin.test.detectAdapter_8be2vx$();
kotlin_test.setAdapter(runWithFilteringAndConsoleAdapters(initialAdapter, untypedArgs));