aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/scala/org/perl8/test/tap/Consumer.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/org/perl8/test/tap/Consumer.scala')
-rw-r--r--src/main/scala/org/perl8/test/tap/Consumer.scala27
1 files changed, 26 insertions, 1 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