blob: 21c7986d73ad45e54631518875309907a962ae52 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package org.perl8.test.tap
import org.perl8.test.{Plan,NumericPlan,SkipAll}
sealed trait Directive {
val message: Option[String]
}
case class SkipDirective (message: Option[String]) extends Directive
case class TodoDirective (message: Option[String]) extends Directive
class TestResult (
val passed: Boolean,
val number: Int,
val description: String,
val directive: Option[Directive],
val subtest: Option[TAPResult]
)
class TAPResult (val plan: Plan, val results: Seq[TestResult]) {
val matchesPlan = plan match {
case NumericPlan(n) => results.length == n
case _ => results.length == 0
}
val fails = results.count { r =>
!r.passed && !r.directive.isDefined
}
val testsPassed = fails == 0
val success = plan match {
case SkipAll(_) => true
case _ => results.length > 0 && fails == 0 && matchesPlan
}
val exitCode =
if (success) {
0
}
else if (!matchesPlan || results.length == 0) {
255
}
else {
fails
}
}
|