summaryrefslogtreecommitdiff
path: root/scalajslib
diff options
context:
space:
mode:
Diffstat (limited to 'scalajslib')
-rw-r--r--scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala15
-rw-r--r--scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala15
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSBridge.scala4
-rw-r--r--scalajslib/src/mill/scalajslib/ScalaJSModule.scala10
4 files changed, 28 insertions, 16 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 283576ab..80f84c3d 100644
--- a/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala
+++ b/scalajslib/jsbridges/0.6/src/mill/scalajslib/bridge/ScalaJSBridge.scala
@@ -46,7 +46,7 @@ class ScalaJSBridge extends mill.scalajslib.ScalaJSBridge {
def getFramework(config: NodeJSConfig,
frameworkName: String,
- linkedFile: File): sbt.testing.Framework = {
+ linkedFile: File): (() => Unit, sbt.testing.Framework) = {
val env = nodeJSEnv(config).loadLibs(
Seq(ResolvedJSDependency.minimal(new FileVirtualJSFile(linkedFile)))
)
@@ -55,11 +55,14 @@ class ScalaJSBridge extends mill.scalajslib.ScalaJSBridge {
val adapter =
new TestAdapter(env, tconfig)
- adapter
- .loadFrameworks(List(List(frameworkName)))
- .flatten
- .headOption
- .getOrElse(throw new RuntimeException("Failed to get framework"))
+ (
+ () => adapter.close(),
+ adapter
+ .loadFrameworks(List(List(frameworkName)))
+ .flatten
+ .headOption
+ .getOrElse(throw new RuntimeException("Failed to get framework"))
+ )
}
def nodeJSEnv(config: NodeJSConfig): NodeJSEnv = {
diff --git a/scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala b/scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala
index 711ef200..796fe212 100644
--- a/scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala
+++ b/scalajslib/jsbridges/1.0/src/mill/scalajslib/bridge/ScalaJSBridge.scala
@@ -45,18 +45,21 @@ class ScalaJSBridge extends mill.scalajslib.ScalaJSBridge {
def getFramework(config: NodeJSConfig,
frameworkName: String,
- linkedFile: File): sbt.testing.Framework = {
+ linkedFile: File): (() => Unit, sbt.testing.Framework) = {
val env = nodeJSEnv(config)
val tconfig = TestAdapter.Config().withLogger(new ScalaConsoleLogger)
val adapter =
new TestAdapter(env, Seq(FileVirtualJSFile(linkedFile)), tconfig)
- adapter
- .loadFrameworks(List(List(frameworkName)))
- .flatten
- .headOption
- .getOrElse(throw new RuntimeException("Failed to get framework"))
+ (
+ () => adapter.close(),
+ adapter
+ .loadFrameworks(List(List(frameworkName)))
+ .flatten
+ .headOption
+ .getOrElse(throw new RuntimeException("Failed to get framework"))
+ )
}
def nodeJSEnv(config: NodeJSConfig): NodeJSEnv = {
diff --git a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala
index 322a6ca4..507d8af7 100644
--- a/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala
+++ b/scalajslib/src/mill/scalajslib/ScalaJSBridge.scala
@@ -65,7 +65,7 @@ class ScalaJSWorker {
def getFramework(toolsClasspath: Agg[Path],
config: NodeJSConfig,
frameworkName: String,
- linkedFile: File): sbt.testing.Framework = {
+ linkedFile: File): (() => Unit, sbt.testing.Framework) = {
bridge(toolsClasspath).getFramework(config, frameworkName, linkedFile)
}
@@ -83,7 +83,7 @@ trait ScalaJSBridge {
def getFramework(config: NodeJSConfig,
frameworkName: String,
- linkedFile: File): sbt.testing.Framework
+ linkedFile: File): (() => Unit, sbt.testing.Framework)
}
diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
index dd955bc7..92c071c2 100644
--- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
+++ b/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
@@ -191,7 +191,7 @@ trait TestScalaJSModule extends ScalaJSModule with TestModule {
override def testLocal(args: String*) = T.command { test(args:_*) }
override def test(args: String*) = T.command {
- val framework = mill.scalajslib.ScalaJSBridge.scalaJSBridge().getFramework(
+ val (close, framework) = mill.scalajslib.ScalaJSBridge.scalaJSBridge().getFramework(
toolsClasspath().map(_.path),
nodeJSConfig(),
testFrameworks().head,
@@ -206,7 +206,13 @@ trait TestScalaJSModule extends ScalaJSModule with TestModule {
Agg(compile().classes.path),
args
)
- TestModule.handleResults(doneMsg, results)
+ val res = TestModule.handleResults(doneMsg, results)
+ // Hack to try and let the Node.js subprocess finish streaming it's stdout
+ // to the JVM. Without this, the stdout can still be streaming when `close()`
+ // is called, and some of the output is dropped onto the floor.
+ Thread.sleep(100)
+ close()
+ res
}
}