summaryrefslogtreecommitdiff
path: root/scalajslib/test/src/mill/scalajslib/ScalaJsUtils.scala
blob: 859d2d56a662ee8baea084d4778eee2ead36cf7c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package mill.scalajslib

import java.io.{FileReader, StringWriter}
import javax.script.{ScriptContext, ScriptEngineManager}

import ammonite.ops.Path

object ScalaJsUtils {
  def runJS(path: Path): String = {
    val engineManager = new ScriptEngineManager(null)
    val engine = engineManager.getEngineByName("nashorn")
    val console = new Console
    val bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE)
    bindings.put("console", console)
    engine.eval(new FileReader(path.toIO))
    console.out.toString
  }
}

class Console {
  val out = new StringWriter()
  def log(s: String): Unit = out.append(s)
}