Gradle, js: fix nodejs run target

This commit is contained in:
Sergey Rostov
2019-05-14 11:19:04 +03:00
parent c8e8224005
commit 1c3bb8529a
6 changed files with 18 additions and 19 deletions
@@ -23,8 +23,6 @@ import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
class KotlinJsTarget(project: Project, platformType: KotlinPlatformType) : class KotlinJsTarget(project: Project, platformType: KotlinPlatformType) :
KotlinOnlyTarget<KotlinJsCompilation>(project, platformType), KotlinJsTargetDsl { KotlinOnlyTarget<KotlinJsCompilation>(project, platformType), KotlinJsTargetDsl {
val npmResolveTaskHolder = project.locateOrRegisterTask<NpmResolveTask>("npmResolve") {} val npmResolveTaskHolder = project.locateOrRegisterTask<NpmResolveTask>("npmResolve") {}
val npmResolveTask
get() = npmResolveTaskHolder.getTaskOrProvider()
val testTaskName get() = lowerCamelCaseName(disambiguationClassifier, testTaskNameSuffix) val testTaskName get() = lowerCamelCaseName(disambiguationClassifier, testTaskNameSuffix)
val testTask get() = project.tasks.maybeCreate(testTaskName) val testTask get() = project.tasks.maybeCreate(testTaskName)
@@ -23,7 +23,7 @@ open class KotlinJsTargetConfigurator(kotlinPluginVersion: String) :
super.configureTarget(target) super.configureTarget(target)
target.compilations.forEach { target.compilations.forEach {
it.compileKotlinTask.dependsOn(target.npmResolveTask) it.compileKotlinTask.dependsOn(target.npmResolveTaskHolder.getTaskOrProvider())
} }
if (target.disambiguationClassifier != null) { if (target.disambiguationClassifier != null) {
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.gradle.targets.js.subtargets
import org.gradle.language.base.plugins.LifecycleBasePlugin import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl
import org.jetbrains.kotlin.gradle.targets.js.nodejs.nodeJs import org.jetbrains.kotlin.gradle.targets.js.nodejs.nodeJs
@@ -45,7 +44,7 @@ class KotlinBrowserJs(target: KotlinJsTarget) :
project.createOrRegisterTask<KotlinWebpack>(disambiguateCamelCased("webpack")) { project.createOrRegisterTask<KotlinWebpack>(disambiguateCamelCased("webpack")) {
val compileKotlinTask = compilation.compileKotlinTask val compileKotlinTask = compilation.compileKotlinTask
it.dependsOn(target.npmResolveTask, compileKotlinTask) it.dependsOn(target.npmResolveTaskHolder.getTaskOrProvider(), compileKotlinTask)
it.entry = npmProject.compileOutput(compileKotlinTask) it.entry = npmProject.compileOutput(compileKotlinTask)
@@ -54,7 +53,7 @@ class KotlinBrowserJs(target: KotlinJsTarget) :
project.createOrRegisterTask<KotlinWebpack>(disambiguateCamelCased("run")) { project.createOrRegisterTask<KotlinWebpack>(disambiguateCamelCased("run")) {
val compileKotlinTask = compilation.compileKotlinTask val compileKotlinTask = compilation.compileKotlinTask
it.dependsOn(target.npmResolveTask, compileKotlinTask) it.dependsOn(target.npmResolveTaskHolder.getTaskOrProvider(), compileKotlinTask)
it.bin = "webpack-dev-server" it.bin = "webpack-dev-server"
it.entry = npmProject.compileOutput(compileKotlinTask) it.entry = npmProject.compileOutput(compileKotlinTask)
@@ -63,14 +63,14 @@ abstract class KotlinJsSubTarget(
testJs.group = LifecycleBasePlugin.VERIFICATION_GROUP testJs.group = LifecycleBasePlugin.VERIFICATION_GROUP
testJs.dependsOn(target.npmResolveTask, compileTask, nodeJs.nodeJsSetupTask) testJs.dependsOn(target.npmResolveTaskHolder.getTaskOrProvider(), compileTask, nodeJs.nodeJsSetupTask)
testJs.onlyIf { testJs.onlyIf {
compileTask.outputFile.exists() compileTask.outputFile.exists()
} }
testJs.targetName = disambiguationClassifier testJs.targetName = disambiguationClassifier
testJs.nodeModulesToLoad.add(compileTask.outputFile.name) testJs.nodeModulesToLoad.add(compileTask.outputFile.nameWithoutExtension)
testJs.configureConventions() testJs.configureConventions()
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.gradle.targets.js.subtargets package org.jetbrains.kotlin.gradle.targets.js.subtargets
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec
@@ -15,7 +14,7 @@ import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
import org.jetbrains.kotlin.gradle.tasks.createOrRegisterTask import org.jetbrains.kotlin.gradle.tasks.createOrRegisterTask
class KotlinNodeJs(target: KotlinJsTarget) : class KotlinNodeJs(target: KotlinJsTarget) :
KotlinJsSubTarget(target, "nodeJs"), KotlinJsSubTarget(target, "node"),
KotlinJsNodeDsl { KotlinJsNodeDsl {
override fun runTask(body: NodeJsExec.() -> Unit) { override fun runTask(body: NodeJsExec.() -> Unit) {
@@ -34,17 +33,22 @@ class KotlinNodeJs(target: KotlinJsTarget) :
val project = target.project val project = target.project
project.createOrRegisterTask<NodeJsExec>(disambiguateCamelCased("run")) { project.createOrRegisterTask<NodeJsExec>(disambiguateCamelCased("run")) { runTask ->
val compileKotlinTask = compilation.compileKotlinTask val compileKotlinTask = compilation.compileKotlinTask
it.dependsOn(target.npmResolveTask, compileKotlinTask) runTask.dependsOn(target.npmResolveTaskHolder.getTaskOrProvider(), compileKotlinTask)
val npmProject = project.npmProject val npmProject = project.npmProject
it.args(npmProject.compileOutput(compileKotlinTask)) runTask.args(npmProject.compileOutput(compileKotlinTask))
// source maps support target.npmResolveTaskHolder.doGetTask().doLast {
it.args("--require", npmProject.getModuleEntryPath("kotlin-test-nodejs-runner")) // source maps support
runTask.args(
"--require",
npmProject.require("kotlin-test-nodejs-runner/kotlin-nodejs-source-map-support")
)
}
target.runTask.dependsOn(it) target.runTask.dependsOn(runTask)
} }
} }
} }
@@ -9,10 +9,8 @@ import org.gradle.api.tasks.Input
import org.gradle.process.ProcessForkOptions import org.gradle.process.ProcessForkOptions
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClientSettings import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClientSettings
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec
import org.jetbrains.kotlin.gradle.plugin.HasKotlinDependencies
import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm import org.jetbrains.kotlin.gradle.targets.js.internal.parseNodeJsStackTraceAsJvm
import org.jetbrains.kotlin.gradle.targets.js.npm.KotlinGradleNpmPackage import org.jetbrains.kotlin.gradle.targets.js.npm.KotlinGradleNpmPackage
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmPackageVersion
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject
import org.jetbrains.kotlin.gradle.targets.js.npm.RequiredKotlinJsDependency import org.jetbrains.kotlin.gradle.targets.js.npm.RequiredKotlinJsDependency
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTestFramework import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTestFramework
@@ -54,7 +52,7 @@ class KotlinNodeJsTestRunner : KotlinJsTestFramework {
val args = nodeJsArgs + val args = nodeJsArgs +
testRuntimeNodeModules.map { testRuntimeNodeModules.map {
npmProjectLayout.getModuleEntryPath(it) npmProjectLayout.require(it)
} + } +
cliArgs.toList() cliArgs.toList()