diff options
author | Haoyi Li <haoyi@haoyi-mbp.corp.dropbox.com> | 2014-11-26 00:45:31 -0800 |
---|---|---|
committer | Haoyi Li <haoyi@haoyi-mbp.corp.dropbox.com> | 2014-11-26 00:45:31 -0800 |
commit | 24f31e120f9537faede7a174bb09ee35f64e1ce4 (patch) | |
tree | 06ffc3ecc7847789008352b7e2b7c040dad48907 /examples/scala-js/sbt-plugin-test/project | |
parent | b89ce9cbf79363f8cab09186a5d7ba94bc0af02a (diff) | |
parent | 2c4b142503bd2d871e6818b5cab8c38627d9e4a0 (diff) | |
download | hands-on-scala-js-24f31e120f9537faede7a174bb09ee35f64e1ce4.tar.gz hands-on-scala-js-24f31e120f9537faede7a174bb09ee35f64e1ce4.tar.bz2 hands-on-scala-js-24f31e120f9537faede7a174bb09ee35f64e1ce4.zip |
Merge commit '2c4b142503bd2d871e6818b5cab8c38627d9e4a0' as 'examples/scala-js'
Diffstat (limited to 'examples/scala-js/sbt-plugin-test/project')
4 files changed, 89 insertions, 0 deletions
diff --git a/examples/scala-js/sbt-plugin-test/project/Jetty9Test.scala b/examples/scala-js/sbt-plugin-test/project/Jetty9Test.scala new file mode 100644 index 0000000..6a84114 --- /dev/null +++ b/examples/scala-js/sbt-plugin-test/project/Jetty9Test.scala @@ -0,0 +1,83 @@ +import sbt._ +import Keys._ + +import scala.scalajs.sbtplugin._ +import ScalaJSPlugin.autoImport._ +import Implicits._ + +import scala.scalajs.tools.env._ +import scala.scalajs.tools.io._ + +import org.eclipse.jetty.server._ +import org.eclipse.jetty.server.handler._ +import org.eclipse.jetty.util.component._ + +import java.io.File + +object Jetty9Test { + + private val jettyPort = 23548 + + val runSetting = run <<= Def.inputTask { + val env = (jsEnv in Compile).value.asInstanceOf[ComJSEnv] + val cp = (scalaJSExecClasspath in Compile).value + val jsConsole = scalaJSConsole.value + + val code = new MemVirtualJSFile("runner.js").withContent( + """ + scalajsCom.init(function(msg) { + jQuery.ajax({ + url: msg, + success: function(dat) { + scalajsCom.send(dat.trim()); + scalajsCom.close(); + }, + error: function() { + scalajsCom.send("failed!"); + scalajsCom.close(); + } + }); + }); + """ + ) + + val runner = env.comRunner(cp, code, streams.value.log, jsConsole) + + runner.start() + + val jetty = setupJetty((resourceDirectory in Compile).value) + + jetty.addLifeCycleListener(new AbstractLifeCycle.AbstractLifeCycleListener { + override def lifeCycleStarted(event: LifeCycle): Unit = { + try { + runner.send(s"http://localhost:$jettyPort/test.txt") + val msg = runner.receive() + val expected = "It works!" + if (msg != expected) + sys.error(s"""received "$msg" instead of "$expected"""") + } finally { + runner.close() + jetty.stop() + } + } + }) + + jetty.start() + runner.await() + jetty.join() + } + + private def setupJetty(dir: File): Server = { + val server = new Server(jettyPort) + + val resource_handler = new ResourceHandler() + resource_handler.setResourceBase(dir.getAbsolutePath) + + val handlers = new HandlerList() + handlers.setHandlers(Array(resource_handler, new DefaultHandler())) + server.setHandler(handlers) + + server + } + +} diff --git a/examples/scala-js/sbt-plugin-test/project/build.properties b/examples/scala-js/sbt-plugin-test/project/build.properties new file mode 100644 index 0000000..64abd37 --- /dev/null +++ b/examples/scala-js/sbt-plugin-test/project/build.properties @@ -0,0 +1 @@ +sbt.version=0.13.6 diff --git a/examples/scala-js/sbt-plugin-test/project/build.sbt b/examples/scala-js/sbt-plugin-test/project/build.sbt new file mode 100644 index 0000000..8419289 --- /dev/null +++ b/examples/scala-js/sbt-plugin-test/project/build.sbt @@ -0,0 +1,4 @@ +addSbtPlugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % + scala.scalajs.ir.ScalaJSVersions.current) + +libraryDependencies += "org.eclipse.jetty" % "jetty-server" % "9.2.3.v20140905" diff --git a/examples/scala-js/sbt-plugin-test/project/project/build.sbt b/examples/scala-js/sbt-plugin-test/project/project/build.sbt new file mode 100644 index 0000000..fb20cb7 --- /dev/null +++ b/examples/scala-js/sbt-plugin-test/project/project/build.sbt @@ -0,0 +1 @@ +sources in Compile += baseDirectory.value / "../../../ir/src/main/scala/scala/scalajs/ir/ScalaJSVersions.scala" |