aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-02-25 10:21:16 -0600
committerJesse Luehrs <doy@tozt.net>2013-02-25 10:21:16 -0600
commit3900aaeebfcf5abe70964fdd42aafa0707dfe2ea (patch)
tree21d2d77b52681a1ec919b9f81f3c5d21aedb33d2
parent3421a8eb9ed7c03001db90090c5c34d699b8fab0 (diff)
downloadscala-test-more-3900aaeebfcf5abe70964fdd42aafa0707dfe2ea.tar.gz
scala-test-more-3900aaeebfcf5abe70964fdd42aafa0707dfe2ea.zip
switch back to (a simpler form of) tests reporting their exit code
-rw-r--r--src/main/scala/org/perl8/test/ExternalTest.scala3
-rw-r--r--src/main/scala/org/perl8/test/Test.scala2
-rw-r--r--src/main/scala/org/perl8/test/TestMore.scala3
-rw-r--r--src/main/scala/org/perl8/test/harness/TAPReporter.scala17
-rw-r--r--src/main/scala/org/perl8/test/tap/TestBuilder.scala11
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) {