summaryrefslogtreecommitdiff
path: root/examples/scala-js/test-bridge/src/main/scala/scala/scalajs/testbridge/TestFramework.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scala-js/test-bridge/src/main/scala/scala/scalajs/testbridge/TestFramework.scala')
-rw-r--r--examples/scala-js/test-bridge/src/main/scala/scala/scalajs/testbridge/TestFramework.scala36
1 files changed, 36 insertions, 0 deletions
diff --git a/examples/scala-js/test-bridge/src/main/scala/scala/scalajs/testbridge/TestFramework.scala b/examples/scala-js/test-bridge/src/main/scala/scala/scalajs/testbridge/TestFramework.scala
new file mode 100644
index 0000000..f855cf6
--- /dev/null
+++ b/examples/scala-js/test-bridge/src/main/scala/scala/scalajs/testbridge/TestFramework.scala
@@ -0,0 +1,36 @@
+/* __ *\
+** ________ ___ / / ___ __ ____ Scala.js API **
+** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
+** /____/\___/_/ |_/____/_/ | |__/ /____/ **
+** |/____/ **
+\* */
+
+
+package scala.scalajs.testbridge
+
+import scala.scalajs.js
+import js.annotation.{ JSExportDescendentObjects, JSExport }
+
+/** This trait should be sub classed (as object) by a concrete test framework
+ *
+ * It will receive a call to runTest for each object on the classpath
+ * extending Test
+ */
+@JSExportDescendentObjects
+trait TestFramework {
+ @JSExport
+ final def safeRunTest(testOutput: TestOutput, args: js.Array[String])(
+ test: js.Function0[Test]): Unit = {
+ try {
+ runTest(testOutput, args)(test)
+ } catch {
+ case e: Throwable =>
+ testOutput.error(s"Test framework ${getClass.getName} failed:")
+ testOutput.error(e.getMessage, e.getStackTrace)
+ }
+ }
+
+ def runTest(testOutput: TestOutput, args: js.Array[String])(
+ test: js.Function0[Test]): Unit
+}