aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/scala/org/perl8/test/tap
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-02-23 16:09:06 -0600
committerJesse Luehrs <doy@tozt.net>2013-02-23 16:15:11 -0600
commit073d5a06c07c85c0d1794c4a15d564e8463b31fc (patch)
treedfb53af9f24d8cec55f41ea7024de1060be07c36 /src/main/scala/org/perl8/test/tap
parent18854928e8697f733d2758d274151999bcc4a238 (diff)
downloadscala-test-more-073d5a06c07c85c0d1794c4a15d564e8463b31fc.tar.gz
scala-test-more-073d5a06c07c85c0d1794c4a15d564e8463b31fc.zip
tests shouldn't produce anything other than tap
the harness can parse the tap to figure out whatever it needs from that
Diffstat (limited to 'src/main/scala/org/perl8/test/tap')
-rw-r--r--src/main/scala/org/perl8/test/tap/Consumer.scala27
-rw-r--r--src/main/scala/org/perl8/test/tap/TestBuilder.scala7
2 files changed, 29 insertions, 5 deletions
diff --git a/src/main/scala/org/perl8/test/tap/Consumer.scala b/src/main/scala/org/perl8/test/tap/Consumer.scala
index 7a0f7aa..2c542f1 100644
--- a/src/main/scala/org/perl8/test/tap/Consumer.scala
+++ b/src/main/scala/org/perl8/test/tap/Consumer.scala
@@ -135,7 +135,32 @@ case class TestResult (
val subtest: Option[TAPResult]
)
-class TAPResult (val plan: Plan, val results: Seq[TestResult])
+class TAPResult (val plan: Plan, val results: Seq[TestResult]) {
+ val correctPlan = plan match {
+ case NumericPlan(n) => results.length == n
+ case SkipAll(_) => results.length == 0
+ }
+
+ val fails = results.count { r =>
+ !r.passed && !r.directive.isDefined
+ }
+
+ val testsPassed = fails == 0
+
+ val success =
+ correctPlan && testsPassed
+
+ val exitCode =
+ if (success) {
+ 0
+ }
+ else if (!correctPlan) {
+ 255
+ }
+ else {
+ fails
+ }
+}
case class ParseException (
val message: String
diff --git a/src/main/scala/org/perl8/test/tap/TestBuilder.scala b/src/main/scala/org/perl8/test/tap/TestBuilder.scala
index 203080c..b1d8579 100644
--- a/src/main/scala/org/perl8/test/tap/TestBuilder.scala
+++ b/src/main/scala/org/perl8/test/tap/TestBuilder.scala
@@ -51,13 +51,13 @@ class TestBuilder (
throw new BailOutException(message.getOrElse(""))
}
- def doneTesting () {
+ def doneTesting (): Boolean = {
plan match {
case None => outLine(Producer.plan(state.currentTest - 1))
case _ => ()
}
- if (!isPassing) {
+ if (!state.isPassing) {
if (!state.matchesPlan) {
val planCount = (plan match {
case Some(p) => p.plan
@@ -80,10 +80,9 @@ class TestBuilder (
diag("Looks like you failed " + fails + " of " + total + ".")
}
}
- }
- def isPassing: Boolean =
state.isPassing
+ }
def failedTests: Int =
state.failCount