aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-02-23 02:53:43 -0600
committerJesse Luehrs <doy@tozt.net>2013-02-23 02:53:43 -0600
commit0cf9e98c2a04b8e5c4698278bbb2ba22fef7c1a2 (patch)
treecd700709d5f4b9b15de1974a2694860e7fdb6565 /src
parentc3e56778e8d47aec5c5e8354148ea1356a980e69 (diff)
downloadscala-test-more-0cf9e98c2a04b8e5c4698278bbb2ba22fef7c1a2.tar.gz
scala-test-more-0cf9e98c2a04b8e5c4698278bbb2ba22fef7c1a2.zip
clean up the test runner
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/org/perl8/test/sbt/Runner.scala30
-rw-r--r--src/main/scala/org/perl8/test/sbt/SBTReporter.scala71
2 files changed, 75 insertions, 26 deletions
diff --git a/src/main/scala/org/perl8/test/sbt/Runner.scala b/src/main/scala/org/perl8/test/sbt/Runner.scala
index cd68fd1..e75f799 100644
--- a/src/main/scala/org/perl8/test/sbt/Runner.scala
+++ b/src/main/scala/org/perl8/test/sbt/Runner.scala
@@ -1,6 +1,6 @@
package org.perl8.test.sbt
-import org.scalatools.testing.{EventHandler,Event,Result}
+import org.scalatools.testing.{EventHandler,Logger}
import org.perl8.test.harness.Utils._
import org.perl8.test.harness.SummaryReporter
@@ -8,7 +8,7 @@ import org.perl8.test.Test
class Runner (
loader: ClassLoader,
- loggers: Array[org.scalatools.testing.Logger]
+ loggers: Array[Logger]
) extends org.scalatools.testing.Runner2 {
def run (
testClassName: String,
@@ -16,29 +16,7 @@ class Runner (
eventHandler: EventHandler,
args: Array[String]
) {
- val reporter = new SummaryReporter
- val results = reporter.runTests(Seq(testClassName))
- results(testClassName)._2.results.foreach { r =>
- val event = new Event {
- val testName: String = testClassName
- val description: String = r.description
- val result: Result =
- if (r.passed) {
- org.scalatools.testing.Result.Success
- }
- else if (r.directive.isDefined) {
- org.scalatools.testing.Result.Skipped
- }
- else {
- org.scalatools.testing.Result.Failure
- }
- val error: Throwable = null
- }
- eventHandler.handle(event)
- }
- }
-
- def println (thing: Any) {
- loggers.foreach(_.info(thing.toString))
+ val reporter = new SBTReporter(loader, loggers, eventHandler)
+ reporter.run(testClassName)
}
}
diff --git a/src/main/scala/org/perl8/test/sbt/SBTReporter.scala b/src/main/scala/org/perl8/test/sbt/SBTReporter.scala
new file mode 100644
index 0000000..f868e43
--- /dev/null
+++ b/src/main/scala/org/perl8/test/sbt/SBTReporter.scala
@@ -0,0 +1,71 @@
+package org.perl8.test.sbt
+
+import org.scalatools.testing.{EventHandler,Event,Result,Logger}
+import java.io.ByteArrayOutputStream
+
+import org.perl8.test.harness._
+import org.perl8.test.tap
+import org.perl8.test.Test
+
+class SBTReporter (
+ loader: ClassLoader,
+ loggers: Array[Logger],
+ eventHandler: EventHandler
+) extends Reporter {
+ def run (testName: String): Int = {
+ val test = loader.loadClass(testName).newInstance.asInstanceOf[Test]
+
+ val out = new ByteArrayOutputStream
+ Console.withOut(out) {
+ test.run
+ }
+
+ val result = tap.Consumer.parse(out)
+
+ result.results.foreach { r =>
+ val event = new Event {
+ val testName: String = r.description
+ val description: String = r.description
+ val result: Result =
+ if (r.passed) {
+ Result.Success
+ }
+ else if (r.directive.isDefined) {
+ logDebug("Skipped test " + r.description)
+ Result.Skipped
+ }
+ else {
+ logError("Failed test " + r.description)
+ Result.Failure
+ }
+ val error: Throwable = null
+ }
+ eventHandler.handle(event)
+ }
+
+ if (result.results.exists { r => !r.passed && !r.directive.isDefined }) {
+ logError(testName + " failed.")
+ 1
+ }
+ else {
+ logInfo(testName + " succeeded.")
+ 0
+ }
+ }
+
+ private def logDebug (msg: String) {
+ loggers.foreach(_.debug(msg))
+ }
+
+ private def logInfo (msg: String) {
+ loggers.foreach(_.info(msg))
+ }
+
+ private def logWarn (msg: String) {
+ loggers.foreach(_.warn(msg))
+ }
+
+ private def logError (msg: String) {
+ loggers.foreach(_.error(msg))
+ }
+}