summaryrefslogtreecommitdiff
path: root/scalajslib
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-03-03 07:11:13 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-03-03 07:11:20 -0800
commit9f6151f438d7661590c09be13af0f2df8bf5e701 (patch)
treea161cd56641c4b05f96907636f1147a6c6be150a /scalajslib
parent2bc394a02ec18aadaa34c95805e94dab46aae465 (diff)
downloadmill-9f6151f438d7661590c09be13af0f2df8bf5e701.tar.gz
mill-9f6151f438d7661590c09be13af0f2df8bf5e701.tar.bz2
mill-9f6151f438d7661590c09be13af0f2df8bf5e701.zip
make mainClass discovery work in ScalaJSModule#run
Also disable ScalaJSModule#runMain, since the official Scala.js-SBT plugin does not support it and it requires an expensive re-linking every time it is run.
Diffstat (limited to 'scalajslib')
-rw-r--r--scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala2
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSModule.scala41
-rw-r--r--scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala25
3 files changed, 20 insertions, 48 deletions
diff --git a/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala b/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala
index 604df3f7..86abbd14 100644
--- a/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala
+++ b/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala
@@ -37,7 +37,7 @@ class ScalaJSBridge extends mill.scalajslib.ScalaJSBridge {
val env = new NodeJSEnv().loadLibs(
Seq(ResolvedJSDependency.minimal(new FileVirtualJSFile(linkedFile)))
)
- val jsConsole = ConsoleJSConsole
+
val config = TestAdapter.Config().withLogger(new ScalaConsoleLogger)
val adapter =
new TestAdapter(env, config)
diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
index b3cc28a4..5a3b6526 100644
--- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
+++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
@@ -4,7 +4,7 @@ package scalajslib
import ammonite.ops.{Path, exists, ls, mkdir, rm}
import coursier.Cache
import coursier.maven.MavenRepository
-import mill.eval.PathRef
+import mill.eval.{PathRef, Result}
import mill.eval.Result.Success
import mill.scalalib.Lib.resolveDependencies
import mill.scalalib.{CompilationResult, Dep, DepSyntax, TestModule}
@@ -71,7 +71,7 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer =>
ScalaJSBridge.scalaJSBridge(),
toolsClasspath(),
runClasspath(),
- mainClass(),
+ finalMainClassOpt().toOption,
FastOpt
)
}
@@ -81,39 +81,32 @@ trait ScalaJSModule extends scalalib.ScalaModule { outer =>
ScalaJSBridge.scalaJSBridge(),
toolsClasspath(),
runClasspath(),
- mainClass(),
+ finalMainClassOpt().toOption,
FullOpt
)
}
- override def runLocal(args: String*) = T.command { run(args:_*) }
+ override def runLocal(args: String*) = T.command { run(args:_*) }
override def run(args: String*) = T.command {
- if(mainClass().isEmpty) {
- throw new RuntimeException("No mainClass provided!")
+ finalMainClassOpt() match{
+ case Left(err) => Result.Failure(err)
+ case Right(_) =>
+ ScalaJSBridge.scalaJSBridge().run(
+ toolsClasspath().map(_.path),
+ fastOpt().path.toIO
+ )
+ Result.Success(())
}
- ScalaJSBridge.scalaJSBridge().run(
- toolsClasspath().map(_.path),
- fastOpt().path.toIO
- )
}
- override def runMainLocal(mainClass: String, args: String*) = T.command { runMain(mainClass, args:_*) }
-
- override def runMain(mainClass: String, args: String*) = T.command {
- val linkedFile = link(
- ScalaJSBridge.scalaJSBridge(),
- toolsClasspath(),
- runClasspath(),
- Some(mainClass),
- FastOpt
- )
+ override def runMainLocal(mainClass: String, args: String*) = T.command[Unit] {
+ mill.eval.Result.Failure("runMain is not supported in Scala.js")
+ }
- ScalaJSBridge.scalaJSBridge().run(
- toolsClasspath().map(_.path),
- linkedFile.path.toIO
- )
+ override def runMain(mainClass: String, args: String*) = T.command[Unit] {
+ mill.eval.Result.Failure("runMain is not supported in Scala.js")
}
def link(worker: ScalaJSWorker,
diff --git a/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala b/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala
index 23db8cf6..2429a189 100644
--- a/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala
+++ b/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala
@@ -204,11 +204,8 @@ object HelloJSWorldTests extends TestSuite {
// 'scalaTest_2124_100M2 - checkScalaTest("2.12.4", "1.0.0-M2")
}
- def checkRun(scalaVersion: String, scalaJSVersion: String, mainClass: Option[String] = None): Unit = {
- val task = mainClass match {
- case Some(main) => HelloJSWorld.helloJsWorld(scalaVersion, scalaJSVersion).runMain(main)
- case None => HelloJSWorld.helloJsWorld(scalaVersion, scalaJSVersion).run()
- }
+ def checkRun(scalaVersion: String, scalaJSVersion: String): Unit = {
+ val task = HelloJSWorld.helloJsWorld(scalaVersion, scalaJSVersion).run()
val Right((_, evalCount)) = helloWorldEvaluator(task)
@@ -224,24 +221,6 @@ object HelloJSWorldTests extends TestSuite {
)
}
- 'runMain - {
- val mainClass = Some("Main")
- 'run_2118_0622 - checkRun("2.11.8", "0.6.22", mainClass)
- 'run_2124_0622 - checkRun("2.12.4", "0.6.22", mainClass)
- 'run_2118_100M2 - checkRun("2.11.8", "1.0.0-M2", mainClass)
- 'run_2124_100M2 - checkRun("2.12.4", "1.0.0-M2", mainClass)
-
- 'wrongMain - {
- val wrongMainClass = "Foo"
- val task = HelloJSWorld.helloJsWorld("2.12.4", "0.6.22").runMain(wrongMainClass)
-
- val Left(Result.Exception(ex, _)) = helloWorldEvaluator(task)
-
- assert(
- ex.isInstanceOf[Exception]
- )
- }
- }
'run - {
'run_2118_0622 - checkRun("2.11.8", "0.6.22")
'run_2124_0622 - checkRun("2.12.4", "0.6.22")