summaryrefslogtreecommitdiff
path: root/scalajslib/worker
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2019-06-13 19:05:57 +0200
committerGitHub <noreply@github.com>2019-06-13 19:05:57 +0200
commit4bbfbf95dbfc0a051837287abc0ee43bf18de4b9 (patch)
tree0126de264ba7d0be49ee462f7ed7178e29dca14c /scalajslib/worker
parent07b3e0605a10ced76c953c383c2dc186c511d763 (diff)
downloadmill-4bbfbf95dbfc0a051837287abc0ee43bf18de4b9.tar.gz
mill-4bbfbf95dbfc0a051837287abc0ee43bf18de4b9.tar.bz2
mill-4bbfbf95dbfc0a051837287abc0ee43bf18de4b9.zip
Allow configuration of JSEnv used for Scala.js tests and runs (#628)
* . * . * .
Diffstat (limited to 'scalajslib/worker')
-rw-r--r--scalajslib/worker/0.6/src/ScalaJSWorkerImpl.scala43
-rw-r--r--scalajslib/worker/1.0/src/ScalaJSWorkerImpl.scala42
2 files changed, 60 insertions, 25 deletions
diff --git a/scalajslib/worker/0.6/src/ScalaJSWorkerImpl.scala b/scalajslib/worker/0.6/src/ScalaJSWorkerImpl.scala
index 64b668e5..9e49ef15 100644
--- a/scalajslib/worker/0.6/src/ScalaJSWorkerImpl.scala
+++ b/scalajslib/worker/0.6/src/ScalaJSWorkerImpl.scala
@@ -11,9 +11,8 @@ import org.scalajs.core.tools.jsdep.ResolvedJSDependency
import org.scalajs.core.tools.linker.{ModuleInitializer, StandardLinker, Semantics, ModuleKind => ScalaJSModuleKind}
import org.scalajs.core.tools.logging.ScalaConsoleLogger
import org.scalajs.jsenv._
-import org.scalajs.jsenv.nodejs._
import org.scalajs.testadapter.TestAdapter
-import mill.scalajslib.api.{ModuleKind, NodeJSConfig}
+import mill.scalajslib.api.{ModuleKind, JsEnvConfig}
class ScalaJSWorkerImpl extends mill.scalajslib.api.ScalaJSWorkerApi {
def link(sources: Array[File],
libraries: Array[File],
@@ -49,16 +48,16 @@ class ScalaJSWorkerImpl extends mill.scalajslib.api.ScalaJSWorkerApi {
}
}
- def run(config: NodeJSConfig, linkedFile: File): Unit = {
- nodeJSEnv(config)
+ def run(config: JsEnvConfig, linkedFile: File): Unit = {
+ jsEnv(config)
.jsRunner(FileVirtualJSFile(linkedFile))
.run(new ScalaConsoleLogger, ConsoleJSConsole)
}
- def getFramework(config: NodeJSConfig,
+ def getFramework(config: JsEnvConfig,
frameworkName: String,
linkedFile: File): (() => Unit, sbt.testing.Framework) = {
- val env = nodeJSEnv(config).loadLibs(
+ val env = jsEnv(config).loadLibs(
Seq(ResolvedJSDependency.minimal(new FileVirtualJSFile(linkedFile)))
)
@@ -76,12 +75,30 @@ class ScalaJSWorkerImpl extends mill.scalajslib.api.ScalaJSWorkerApi {
)
}
- def nodeJSEnv(config: NodeJSConfig): NodeJSEnv = {
- new NodeJSEnv(
- NodeJSEnv.Config()
- .withExecutable(config.executable)
- .withArgs(config.args)
- .withEnv(config.env)
- .withSourceMap(config.sourceMap))
+ def jsEnv(config: JsEnvConfig): ComJSEnv = config match{
+ case config: JsEnvConfig.NodeJs =>
+ new org.scalajs.jsenv.nodejs.NodeJSEnv(
+ org.scalajs.jsenv.nodejs.NodeJSEnv.Config()
+ .withExecutable(config.executable)
+ .withArgs(config.args)
+ .withEnv(config.env)
+ .withSourceMap(config.sourceMap)
+ )
+
+ case config: JsEnvConfig.JsDom =>
+ new org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv(
+ org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv.Config()
+ .withExecutable(config.executable)
+ .withArgs(config.args)
+ .withEnv(config.env)
+ )
+ case config: JsEnvConfig.Phantom =>
+ new org.scalajs.jsenv.phantomjs.PhantomJSEnv(
+ org.scalajs.jsenv.phantomjs.PhantomJSEnv.Config()
+ .withExecutable(config.executable)
+ .withArgs(config.args)
+ .withEnv(config.env)
+ .withAutoExit(config.autoExit)
+ )
}
}
diff --git a/scalajslib/worker/1.0/src/ScalaJSWorkerImpl.scala b/scalajslib/worker/1.0/src/ScalaJSWorkerImpl.scala
index f40f7a6b..efff38a2 100644
--- a/scalajslib/worker/1.0/src/ScalaJSWorkerImpl.scala
+++ b/scalajslib/worker/1.0/src/ScalaJSWorkerImpl.scala
@@ -3,7 +3,7 @@ package scalajslib
package worker
import java.io.File
-import mill.scalajslib.api.{ModuleKind, NodeJSConfig}
+import mill.scalajslib.api.{ModuleKind, JsEnvConfig}
import mill.api.Result
import org.scalajs.core.tools.io._
import org.scalajs.core.tools.linker.{ModuleInitializer, Semantics, StandardLinker, ModuleKind => ScalaJSModuleKind}
@@ -49,16 +49,16 @@ class ScalaJSWorkerImpl extends mill.scalajslib.api.ScalaJSWorkerApi {
}
}
- def run(config: NodeJSConfig, linkedFile: File): Unit = {
- nodeJSEnv(config)
+ def run(config: JsEnvConfig, linkedFile: File): Unit = {
+ jsEnv(config)
.jsRunner(Seq(FileVirtualJSFile(linkedFile)))
.run(new ScalaConsoleLogger, ConsoleJSConsole)
}
- def getFramework(config: NodeJSConfig,
+ def getFramework(config: JsEnvConfig,
frameworkName: String,
linkedFile: File): (() => Unit, sbt.testing.Framework) = {
- val env = nodeJSEnv(config)
+ val env = jsEnv(config)
val tconfig = TestAdapter.Config().withLogger(new ScalaConsoleLogger)
val adapter =
@@ -74,12 +74,30 @@ class ScalaJSWorkerImpl extends mill.scalajslib.api.ScalaJSWorkerApi {
)
}
- def nodeJSEnv(config: NodeJSConfig): NodeJSEnv = {
- new NodeJSEnv(
- NodeJSEnv.Config()
- .withExecutable(config.executable)
- .withArgs(config.args)
- .withEnv(config.env)
- .withSourceMap(config.sourceMap))
+ def jsEnv(config: JsEnvConfig): org.scalajs.jsenv.ComJSEnv = config match{
+ case config: JsEnvConfig.NodeJs =>
+ new org.scalajs.jsenv.nodejs.NodeJSEnv(
+ org.scalajs.jsenv.nodejs.NodeJSEnv.Config()
+ .withExecutable(config.executable)
+ .withArgs(config.args)
+ .withEnv(config.env)
+ .withSourceMap(config.sourceMap)
+ )
+
+ case config: JsEnvConfig.JsDom =>
+ new org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv(
+ org.scalajs.jsenv.jsdomnodejs.JSDOMNodeJSEnv.Config()
+ .withExecutable(config.executable)
+ .withArgs(config.args)
+ .withEnv(config.env)
+ )
+ case config: JsEnvConfig.Phantom =>
+ new org.scalajs.jsenv.phantomjs.PhantomJSEnv(
+ org.scalajs.jsenv.phantomjs.PhantomJSEnv.Config()
+ .withExecutable(config.executable)
+ .withArgs(config.args)
+ .withEnv(config.env)
+ .withAutoExit(config.autoExit)
+ )
}
}