]> Dogcows Code - chaz/sbt-tap/blobdiff - src/main/scala/SbtTapReporting.scala
output start/end group as tap diagnostics
[chaz/sbt-tap] / src / main / scala / SbtTapReporting.scala
index 0d7f26b3a69eb32674b09790fe7c8e95942dd2db..097157a520359f862faee08c7ba748c7597908b4 100644 (file)
@@ -5,7 +5,7 @@ import org.scalatools.testing.{Event => TEvent, Result => TResult}
 import java.util.concurrent.atomic.AtomicInteger
 
 object SbtTapReporting extends Plugin {
-  lazy val tapListener = new SbtTapListener
+  def apply() = new SbtTapListener
 }
 
 /**
@@ -23,10 +23,22 @@ class SbtTapListener extends TestsListener {
   override def doInit {
     new File("test-results").mkdirs()
 
-    fileWriter = new FileWriter("test-results/test.tap")
+    fileWriter = new FileWriter(
+      scala.util.Properties.envOrElse("SBT_TAP_OUTPUT", "test-results/test.tap")
+    )
   }
 
-  def startGroup(name: String) {}
+  def startGroup(name: String) {
+    writeTapFields("#", "start", name)
+  }
+
+  def endGroup(name: String, result: TestResult.Value) {
+    writeTapFields("#", "end", name, "with result", result.toString.toLowerCase)
+  }
+
+  def endGroup(name: String, t: Throwable) {
+    writeTapFields("#", "end", name)
+  }
 
   def testEvent(event: TestEvent) {
     event.detail.foreach { e: TEvent =>
@@ -50,7 +62,10 @@ class SbtTapListener extends TestsListener {
     fileWriter.close()
   }
 
-  private def writeTapFields(s: Any*) { fileWriter.write(s.mkString("",  " ", "\n")) }
+  private def writeTapFields(s: Any*) {
+    fileWriter.write(s.mkString("",  " ", "\n"))
+    fileWriter.flush()
+  }
 
   private def stackTraceForError(t: Throwable): String = {
     val sw = new StringWriter()
@@ -58,7 +73,4 @@ class SbtTapListener extends TestsListener {
     t.printStackTrace(printWriter)
     sw.toString
   }
-  def endGroup(name: String, t: Throwable) { }
-
-  def endGroup(name: String, result: TestResult.Value) { }
 }
This page took 0.026219 seconds and 4 git commands to generate.