diff options
author | Jesse Luehrs <doy@tozt.net> | 2013-02-25 10:21:16 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2013-02-25 10:21:16 -0600 |
commit | 3900aaeebfcf5abe70964fdd42aafa0707dfe2ea (patch) | |
tree | 21d2d77b52681a1ec919b9f81f3c5d21aedb33d2 /src | |
parent | 3421a8eb9ed7c03001db90090c5c34d699b8fab0 (diff) | |
download | scala-test-more-3900aaeebfcf5abe70964fdd42aafa0707dfe2ea.tar.gz scala-test-more-3900aaeebfcf5abe70964fdd42aafa0707dfe2ea.zip |
switch back to (a simpler form of) tests reporting their exit code
Diffstat (limited to 'src')
-rw-r--r-- | src/main/scala/org/perl8/test/ExternalTest.scala | 3 | ||||
-rw-r--r-- | src/main/scala/org/perl8/test/Test.scala | 2 | ||||
-rw-r--r-- | src/main/scala/org/perl8/test/TestMore.scala | 3 | ||||
-rw-r--r-- | src/main/scala/org/perl8/test/harness/TAPReporter.scala | 17 | ||||
-rw-r--r-- | src/main/scala/org/perl8/test/tap/TestBuilder.scala | 11 |
5 files changed, 18 insertions, 18 deletions
diff --git a/src/main/scala/org/perl8/test/ExternalTest.scala b/src/main/scala/org/perl8/test/ExternalTest.scala index a58fb33..8dc5c94 100644 --- a/src/main/scala/org/perl8/test/ExternalTest.scala +++ b/src/main/scala/org/perl8/test/ExternalTest.scala @@ -35,7 +35,8 @@ class ExternalTest (cmdLine: Seq[String]) extends Test { } } - process.waitFor + val exitCode = process.waitFor Await.ready(Future.sequence(listeners), Duration.Inf) + exitCode } } diff --git a/src/main/scala/org/perl8/test/Test.scala b/src/main/scala/org/perl8/test/Test.scala index cc79df8..93933dd 100644 --- a/src/main/scala/org/perl8/test/Test.scala +++ b/src/main/scala/org/perl8/test/Test.scala @@ -6,5 +6,5 @@ trait Test { /** Runs the test. The TAP stream will be written to Console.out and * Console.err, so you can swap these out as required in order to parse it. */ - def run (): Unit + def run (): Int } diff --git a/src/main/scala/org/perl8/test/TestMore.scala b/src/main/scala/org/perl8/test/TestMore.scala index 8a675fa..2c41738 100644 --- a/src/main/scala/org/perl8/test/TestMore.scala +++ b/src/main/scala/org/perl8/test/TestMore.scala @@ -15,13 +15,14 @@ class TestMore (plan: Option[Plan] = None) extends Test with DelayedInit { testBody = () => body } - def run () { + def run (): Int = { if (testBody == null) { delayedInit { } } testBody() builder.doneTesting + builder.exitCode } def ok (cond: Boolean, desc: Message = NoMessage): Boolean = { diff --git a/src/main/scala/org/perl8/test/harness/TAPReporter.scala b/src/main/scala/org/perl8/test/harness/TAPReporter.scala index 87d4955..d6f27fd 100644 --- a/src/main/scala/org/perl8/test/harness/TAPReporter.scala +++ b/src/main/scala/org/perl8/test/harness/TAPReporter.scala @@ -6,19 +6,6 @@ import org.perl8.test.tap import org.perl8.test.Test class TAPReporter extends Reporter { - def run (testName: String): Int = { - val out = new ByteArrayOutputStream - Console.withOut(out) { - Console.withErr(out) { - newInstance[Test](testName).run - } - } - - // XXX this is wrong: it sends everything to stdout - // need to write a tee-like outputstream to fix it - print(out) - - val result = tap.Consumer.parse(out) - result.exitCode - } + def run (testName: String): Int = + newInstance[Test](testName).run } diff --git a/src/main/scala/org/perl8/test/tap/TestBuilder.scala b/src/main/scala/org/perl8/test/tap/TestBuilder.scala index 421fa7f..2f57be2 100644 --- a/src/main/scala/org/perl8/test/tap/TestBuilder.scala +++ b/src/main/scala/org/perl8/test/tap/TestBuilder.scala @@ -87,6 +87,17 @@ class TestBuilder ( def failedTests: Int = state.failCount + def exitCode: Int = + if (state.isPassing) { + 0 + } + else if (!state.matchesPlan) { + 255 + } + else { + state.failCount + } + private val state = new TestState private def outLine (str: String) { |