From e744a379caac8e1a6340bba97310531332868ef9 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 14 Mar 2013 21:06:20 -0500 Subject: pass -v as an option to test-only to also display tap note that you need to run the command line like this: sbt "test-only com.iinteractive.test.TestMoreTest -- -v" fixes gh-3 --- .../com/iinteractive/test/harness/SummarizedTests.scala | 16 ++++++++++++++-- src/main/scala/com/iinteractive/test/sbt/Runner.scala | 3 ++- .../scala/com/iinteractive/test/sbt/SBTReporter.scala | 13 ++++++++++--- src/main/scala/com/iinteractive/test/tap/Parser.scala | 1 + src/main/scala/com/iinteractive/test/tap/TAPEvent.scala | 7 +++++++ 5 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/main/scala/com/iinteractive/test/harness/SummarizedTests.scala b/src/main/scala/com/iinteractive/test/harness/SummarizedTests.scala index cd555dd..df20472 100644 --- a/src/main/scala/com/iinteractive/test/harness/SummarizedTests.scala +++ b/src/main/scala/com/iinteractive/test/harness/SummarizedTests.scala @@ -21,13 +21,25 @@ trait SummarizedTests { * * @return The overall result of the test instance. */ - protected def runOneTest (test: Test, cb: TAPEvent => Unit): TAPResult = { + protected def runOneTest ( + test: Test, + cb: TAPEvent => Unit, + combine: Boolean = false + ): TAPResult = { val out = new PipedOutputStream val in = new PipedInputStream(out) + val err = if (combine) out else Console.err val testFuture = Future { Console.withOut(out) { - test.runInHarness + Console.withErr(err) { + if (combine) { + test.run + } + else { + test.runInHarness + } + } } out.close } diff --git a/src/main/scala/com/iinteractive/test/sbt/Runner.scala b/src/main/scala/com/iinteractive/test/sbt/Runner.scala index 0eee4cf..9c87d0f 100644 --- a/src/main/scala/com/iinteractive/test/sbt/Runner.scala +++ b/src/main/scala/com/iinteractive/test/sbt/Runner.scala @@ -19,7 +19,8 @@ class Runner ( eventHandler: testing.EventHandler, args: Array[String] ) { - val reporter = new SBTReporter(loader, loggers, eventHandler) + val verbose = args.contains("-v") + val reporter = new SBTReporter(loader, loggers, eventHandler, verbose) reporter.run(testClassName) } } diff --git a/src/main/scala/com/iinteractive/test/sbt/SBTReporter.scala b/src/main/scala/com/iinteractive/test/sbt/SBTReporter.scala index 34df60d..e948591 100644 --- a/src/main/scala/com/iinteractive/test/sbt/SBTReporter.scala +++ b/src/main/scala/com/iinteractive/test/sbt/SBTReporter.scala @@ -3,14 +3,15 @@ package com.iinteractive.test.sbt import org.scalatools.testing import com.iinteractive.test.harness.{Reporter,SummarizedTests} -import com.iinteractive.test.tap.{TAPEvent,ResultEvent,EndEvent} +import com.iinteractive.test.tap.{TAPEvent,ResultEvent,EndEvent,LineEvent} import com.iinteractive.test.Test /** Runs a single test under the SBT test harness. */ class SBTReporter ( loader: ClassLoader, loggers: Array[testing.Logger], - eventHandler: testing.EventHandler + eventHandler: testing.EventHandler, + verbose: Boolean ) extends Reporter with SummarizedTests { def run (testName: String): Int = { val cb = (e: TAPEvent) => e match { @@ -72,12 +73,18 @@ class SBTReporter ( logError("FAIL " + testName + " " + errors) } } + case LineEvent(line) => { + if (verbose) { + logInfo(line.toString) + } + } case _ => () } runOneTest( loader.loadClass(testName).newInstance.asInstanceOf[Test], - cb + cb, + verbose ).exitCode } diff --git a/src/main/scala/com/iinteractive/test/tap/Parser.scala b/src/main/scala/com/iinteractive/test/tap/Parser.scala index 7bc44d3..c66b1a7 100644 --- a/src/main/scala/com/iinteractive/test/tap/Parser.scala +++ b/src/main/scala/com/iinteractive/test/tap/Parser.scala @@ -212,6 +212,7 @@ class Parser private ( val (line, rest) = stream.span(_ != '\n') match { case (l, r) => (parseLine(l.mkString), r.drop(1)) } + cb(LineEvent(line)) line match { case _: CommentLine => readNextLine(rest) case other => (Some(other), rest) diff --git a/src/main/scala/com/iinteractive/test/tap/TAPEvent.scala b/src/main/scala/com/iinteractive/test/tap/TAPEvent.scala index 1c2e88d..96d8dab 100644 --- a/src/main/scala/com/iinteractive/test/tap/TAPEvent.scala +++ b/src/main/scala/com/iinteractive/test/tap/TAPEvent.scala @@ -1,5 +1,6 @@ package com.iinteractive.test.tap +import com.iinteractive.test.tap.Consumer.Line import com.iinteractive.test.Plan /** An event emitted while parsing a TAP stream. */ @@ -38,3 +39,9 @@ case class SubtestEndEvent private[tap] (result: TestResult) extends TAPEvent /** A comment (currently unused). */ case class CommentEvent private[tap] (text: String) extends TAPEvent + +/** A line was parsed. + * @param line The [[com.iinteractive.test.Consumer.Line Line]] that was + * parsed. + */ +case class LineEvent private[tap] (line: Line) extends TAPEvent -- cgit v1.2.3-54-g00ecf