aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-02-28 18:05:09 -0600
committerJesse Luehrs <doy@tozt.net>2013-02-28 18:05:09 -0600
commit5d792755f90d871ba51cdf16aae3961079ce81c2 (patch)
tree14594dd09d3ac0c0d4fb782f426fa558baf1f863
parent650cfdf8fd45287f956c46cd3f00dab6cb896ad3 (diff)
downloadscala-test-more-5d792755f90d871ba51cdf16aae3961079ce81c2.tar.gz
scala-test-more-5d792755f90d871ba51cdf16aae3961079ce81c2.zip
convert the sbt reporter to use streaming
-rw-r--r--src/main/scala/org/perl8/test/sbt/SBTReporter.scala65
1 files changed, 39 insertions, 26 deletions
diff --git a/src/main/scala/org/perl8/test/sbt/SBTReporter.scala b/src/main/scala/org/perl8/test/sbt/SBTReporter.scala
index b9dcdee..c92544d 100644
--- a/src/main/scala/org/perl8/test/sbt/SBTReporter.scala
+++ b/src/main/scala/org/perl8/test/sbt/SBTReporter.scala
@@ -4,6 +4,7 @@ import java.io.ByteArrayOutputStream
import org.scalatools.testing
import org.perl8.test.harness.{Reporter,SummarizedTests}
+import org.perl8.test.tap._
import org.perl8.test.Test
class SBTReporter (
@@ -12,36 +13,48 @@ class SBTReporter (
eventHandler: testing.EventHandler
) extends Reporter with SummarizedTests {
def run (testName: String): Int = {
- val test = loader.loadClass(testName).newInstance.asInstanceOf[Test]
- val result = runOneTest(test, e => ())
-
- result.results.foreach { r =>
- val event = new testing.Event {
- val testName: String = r.description
- val description: String = r.description
- val result: testing.Result =
- if (r.passed) {
- testing.Result.Success
- }
- else if (r.directive.isDefined) {
- testing.Result.Skipped
- }
- else {
- testing.Result.Failure
+ val cb = (e: TAPEvent) => e match {
+ case ResultEvent(r) => {
+ val event = new testing.Event {
+ val testName: String = r.description
+ val description: String = r.description
+ val result: testing.Result =
+ if (r.passed) {
+ testing.Result.Success
+ }
+ else if (r.directive.isDefined) {
+ testing.Result.Skipped
+ }
+ else {
+ testing.Result.Failure
+ }
+ val error: Throwable = null
+ }
+ eventHandler.handle(event)
+ }
+ case EndEvent(result) => {
+ if (result.success) {
+ logInfo("PASS " + testName)
+ }
+ else {
+ val results = result.results.length
+ val failed = result.results.count { t =>
+ !t.passed && !t.directive.isDefined
}
- val error: Throwable = null
+
+ logError(
+ "FAIL " + testName + " " +
+ "(failed " + failed + "/" + results + ")"
+ )
+ }
}
- eventHandler.handle(event)
+ case _ => ()
}
- if (result.success) {
- logInfo("PASS " + testName)
- 0
- }
- else {
- logError("FAIL " + testName)
- 1
- }
+ runOneTest(
+ loader.loadClass(testName).newInstance.asInstanceOf[Test],
+ cb
+ ).exitCode
}
private def logDebug (msg: String) {