diff options
author | Jesse Luehrs <doy@tozt.net> | 2013-02-23 16:09:06 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2013-02-23 16:15:11 -0600 |
commit | 073d5a06c07c85c0d1794c4a15d564e8463b31fc (patch) | |
tree | dfb53af9f24d8cec55f41ea7024de1060be07c36 /src/main/scala/org/perl8/test/tap | |
parent | 18854928e8697f733d2758d274151999bcc4a238 (diff) | |
download | scala-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.scala | 27 | ||||
-rw-r--r-- | src/main/scala/org/perl8/test/tap/TestBuilder.scala | 7 |
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 |