summaryrefslogtreecommitdiff
path: root/examples/scala-js/sbt-plugin-test
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scala-js/sbt-plugin-test')
-rw-r--r--examples/scala-js/sbt-plugin-test/README.md7
-rw-r--r--examples/scala-js/sbt-plugin-test/build.sbt44
-rw-r--r--examples/scala-js/sbt-plugin-test/jetty9/src/main/resources/test.txt1
-rw-r--r--examples/scala-js/sbt-plugin-test/noDOM/src/main/scala/sbttest/noDOM/Lib.scala11
-rw-r--r--examples/scala-js/sbt-plugin-test/noDOM/src/main/scala/sbttest/noDOM/TestApp.scala12
-rw-r--r--examples/scala-js/sbt-plugin-test/noDOM/src/test/scala/sbttest/noDOM/LibTest.scala19
-rw-r--r--examples/scala-js/sbt-plugin-test/project/Jetty9Test.scala83
-rw-r--r--examples/scala-js/sbt-plugin-test/project/build.properties1
-rw-r--r--examples/scala-js/sbt-plugin-test/project/build.sbt4
-rw-r--r--examples/scala-js/sbt-plugin-test/project/project/build.sbt1
-rw-r--r--examples/scala-js/sbt-plugin-test/withDOM/src/main/scala/sbttest/withDOM/Lib.scala28
-rw-r--r--examples/scala-js/sbt-plugin-test/withDOM/src/main/scala/sbttest/withDOM/TestApp.scala14
-rw-r--r--examples/scala-js/sbt-plugin-test/withDOM/src/test/scala/sbttest/withDOM/LibTest.scala24
13 files changed, 249 insertions, 0 deletions
diff --git a/examples/scala-js/sbt-plugin-test/README.md b/examples/scala-js/sbt-plugin-test/README.md
new file mode 100644
index 0000000..71414a3
--- /dev/null
+++ b/examples/scala-js/sbt-plugin-test/README.md
@@ -0,0 +1,7 @@
+This is a standalone SBT project to test the Scala.js SBT plugin as it
+will be used by the users. (Through normal SBT dependency
+management). This needs the Scala.js artifacts to be published
+locally.
+
+It has two subprojects, to test Scala.js with and without DOM. Both
+subprojects have a main class and a test.
diff --git a/examples/scala-js/sbt-plugin-test/build.sbt b/examples/scala-js/sbt-plugin-test/build.sbt
new file mode 100644
index 0000000..dd2e12e
--- /dev/null
+++ b/examples/scala-js/sbt-plugin-test/build.sbt
@@ -0,0 +1,44 @@
+import scala.scalajs.sbtplugin.RuntimeDOM
+
+name := "Scala.js sbt test"
+
+version := scalaJSVersion
+
+val baseSettings = Seq(
+ version := scalaJSVersion,
+ scalaVersion := "2.11.2",
+ libraryDependencies +=
+ "org.scala-lang.modules.scalajs" %% "scalajs-jasmine-test-framework" % scalaJSVersion % "test"
+)
+
+lazy val root = project.in(file(".")).
+ aggregate(noDOM, withDOM)
+
+lazy val noDOM = project.settings(baseSettings: _*).
+ enablePlugins(ScalaJSPlugin).
+ settings(
+ name := "Scala.js sbt test w/o DOM"
+ )
+
+lazy val withDOM = project.settings(baseSettings: _*).
+ enablePlugins(ScalaJSPlugin).
+ settings(
+ name := "Scala.js sbt test w/ DOM",
+ jsDependencies ++= Seq(
+ RuntimeDOM,
+ "org.webjars" % "jquery" % "1.10.2" / "jquery.js"
+ )
+ )
+
+lazy val jetty9 = project.settings(baseSettings: _*).
+ enablePlugins(ScalaJSPlugin).
+ settings(
+ name := "Scala.js sbt test with jetty9 on classpath",
+ jsDependencies ++= Seq(
+ RuntimeDOM,
+ "org.webjars" % "jquery" % "1.10.2" / "jquery.js"
+ ),
+ // Use PhantomJS, allow cross domain requests
+ postLinkJSEnv := PhantomJSEnv(args = Seq("--web-security=no")).value,
+ Jetty9Test.runSetting
+ )
diff --git a/examples/scala-js/sbt-plugin-test/jetty9/src/main/resources/test.txt b/examples/scala-js/sbt-plugin-test/jetty9/src/main/resources/test.txt
new file mode 100644
index 0000000..68300b8
--- /dev/null
+++ b/examples/scala-js/sbt-plugin-test/jetty9/src/main/resources/test.txt
@@ -0,0 +1 @@
+It works!
diff --git a/examples/scala-js/sbt-plugin-test/noDOM/src/main/scala/sbttest/noDOM/Lib.scala b/examples/scala-js/sbt-plugin-test/noDOM/src/main/scala/sbttest/noDOM/Lib.scala
new file mode 100644
index 0000000..884c422
--- /dev/null
+++ b/examples/scala-js/sbt-plugin-test/noDOM/src/main/scala/sbttest/noDOM/Lib.scala
@@ -0,0 +1,11 @@
+package sbttest.noDOM
+
+object Lib {
+
+ /** appends `_foo` to a string */
+ def foo(x: String): String = x + "foo"
+
+ /** squares a number */
+ def sq(x: Int): Int = x * x
+
+}
diff --git a/examples/scala-js/sbt-plugin-test/noDOM/src/main/scala/sbttest/noDOM/TestApp.scala b/examples/scala-js/sbt-plugin-test/noDOM/src/main/scala/sbttest/noDOM/TestApp.scala
new file mode 100644
index 0000000..16a4cbe
--- /dev/null
+++ b/examples/scala-js/sbt-plugin-test/noDOM/src/main/scala/sbttest/noDOM/TestApp.scala
@@ -0,0 +1,12 @@
+package sbttest.noDOM
+
+import scala.scalajs.js
+
+object TestApp extends js.JSApp {
+
+ def main(): Unit = {
+ println(Lib.foo("Hello World"))
+ println(Lib.sq(10))
+ }
+
+}
diff --git a/examples/scala-js/sbt-plugin-test/noDOM/src/test/scala/sbttest/noDOM/LibTest.scala b/examples/scala-js/sbt-plugin-test/noDOM/src/test/scala/sbttest/noDOM/LibTest.scala
new file mode 100644
index 0000000..bc24eda
--- /dev/null
+++ b/examples/scala-js/sbt-plugin-test/noDOM/src/test/scala/sbttest/noDOM/LibTest.scala
@@ -0,0 +1,19 @@
+package sbttest.noDOM
+
+import org.scalajs.jasminetest.JasmineTest
+
+object LibTest extends JasmineTest {
+
+ describe("Dummy Library") {
+ it("should provide `foo`") {
+ expect(Lib.foo("")).toEqual("foo")
+ expect(Lib.foo("a")).toEqual("afoo")
+ }
+
+ it("should provide `sq`") {
+ expect(Lib.sq(0)).toEqual(0)
+ expect(Lib.sq(10)).toEqual(100)
+ }
+ }
+
+}
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"
diff --git a/examples/scala-js/sbt-plugin-test/withDOM/src/main/scala/sbttest/withDOM/Lib.scala b/examples/scala-js/sbt-plugin-test/withDOM/src/main/scala/sbttest/withDOM/Lib.scala
new file mode 100644
index 0000000..e431557
--- /dev/null
+++ b/examples/scala-js/sbt-plugin-test/withDOM/src/main/scala/sbttest/withDOM/Lib.scala
@@ -0,0 +1,28 @@
+package sbttest.withDOM
+
+import scala.scalajs.js
+
+object Lib {
+
+ val document: js.Dynamic = js.Dynamic.global.document
+ val jQuery: js.Dynamic = js.Dynamic.global.jQuery
+
+ def getElementsByTagName(name: String): js.Array[js.Dynamic] =
+ document.getElementsByTagName(name).asInstanceOf[js.Array[js.Dynamic]]
+
+ /** appends a <p> with the message to the document */
+ def appendDocument(msg: String): Unit = {
+ val trg = {
+ val bodies = getElementsByTagName("body")
+ if (bodies.length > 0)
+ bodies(0)
+ else
+ document
+ }
+
+ val elem = document.createElement("p")
+ elem.appendChild(document.createTextNode(msg))
+ trg.appendChild(elem)
+ }
+
+}
diff --git a/examples/scala-js/sbt-plugin-test/withDOM/src/main/scala/sbttest/withDOM/TestApp.scala b/examples/scala-js/sbt-plugin-test/withDOM/src/main/scala/sbttest/withDOM/TestApp.scala
new file mode 100644
index 0000000..e61ed20
--- /dev/null
+++ b/examples/scala-js/sbt-plugin-test/withDOM/src/main/scala/sbttest/withDOM/TestApp.scala
@@ -0,0 +1,14 @@
+package sbttest.withDOM
+
+import scala.scalajs.js
+
+object TestApp extends js.JSApp {
+
+ def main(): Unit = {
+ Lib.appendDocument("Hello World")
+ Lib.appendDocument("Still Here!")
+
+ println(Lib.jQuery("p").text())
+ }
+
+}
diff --git a/examples/scala-js/sbt-plugin-test/withDOM/src/test/scala/sbttest/withDOM/LibTest.scala b/examples/scala-js/sbt-plugin-test/withDOM/src/test/scala/sbttest/withDOM/LibTest.scala
new file mode 100644
index 0000000..e08e6e3
--- /dev/null
+++ b/examples/scala-js/sbt-plugin-test/withDOM/src/test/scala/sbttest/withDOM/LibTest.scala
@@ -0,0 +1,24 @@
+package sbttest.withDOM
+
+import scala.scalajs.js
+
+import org.scalajs.jasminetest.JasmineTest
+
+object LibTest extends JasmineTest {
+
+ describe("Dummy Library") {
+
+ it("should provide jQuery") {
+ expect(Lib.jQuery).toBeDefined
+ }
+
+ it("should append an element") {
+ def count = Lib.jQuery("p").length.asInstanceOf[Int]
+ val oldCount = count
+ Lib.appendDocument("foo")
+ expect(count - oldCount).toEqual(1)
+ }
+
+ }
+
+}