From 01675281e8e40dcb65c92d7c9fecbe4a94d50bfa Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 1 Mar 2013 11:50:34 -0600 Subject: SkipAll shouldn't run tests at all, and should be a success --- src/main/scala/org/perl8/test/TestMore.scala | 5 ++++- src/main/scala/org/perl8/test/tap/Consumer.scala | 11 +++++++--- .../scala/org/perl8/test/tap/TestBuilder.scala | 24 +++++++++++++++------- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/main/scala/org/perl8/test/TestMore.scala b/src/main/scala/org/perl8/test/TestMore.scala index 8d1724d..608a522 100644 --- a/src/main/scala/org/perl8/test/TestMore.scala +++ b/src/main/scala/org/perl8/test/TestMore.scala @@ -9,7 +9,10 @@ class TestMore (plan: Plan = NoPlan) extends Test with DelayedInit { testBody = { terminalInUse => todo = None builder = new TestBuilder(plan, terminalInUse) - body + plan match { + case SkipAll(_) => () + case _ => body + } } } diff --git a/src/main/scala/org/perl8/test/tap/Consumer.scala b/src/main/scala/org/perl8/test/tap/Consumer.scala index a92a8f8..5e03058 100644 --- a/src/main/scala/org/perl8/test/tap/Consumer.scala +++ b/src/main/scala/org/perl8/test/tap/Consumer.scala @@ -122,11 +122,16 @@ object Consumer { val testsPassed = fails == 0 - val success = - results.length > 0 && fails == 0 && matchesPlan + val success = plan match { + case SkipAll(_) => true + case _ => results.length > 0 && fails == 0 && matchesPlan + } val exitCode = - if (!matchesPlan || results.length == 0) { + if (success) { + 0 + } + else if (!matchesPlan || results.length == 0) { 255 } else { diff --git a/src/main/scala/org/perl8/test/tap/TestBuilder.scala b/src/main/scala/org/perl8/test/tap/TestBuilder.scala index 4092351..f0b4125 100644 --- a/src/main/scala/org/perl8/test/tap/TestBuilder.scala +++ b/src/main/scala/org/perl8/test/tap/TestBuilder.scala @@ -70,10 +70,17 @@ class TestBuilder private ( def doneTesting: Boolean = { plan match { - case NoPlan => outLine(Producer.plan(state.currentTest)) - case _ => () + case NumericPlan(_) => printErrors + case SkipAll(_) => () + case NoPlan => { + outLine(Producer.plan(state.currentTest)) + printErrors + } } + state.isPassing + } + private def printErrors { if (!state.matchesPlan) { val planCount = (plan match { case NoPlan => state.currentTest @@ -95,12 +102,13 @@ class TestBuilder private ( state.currentTest + (if (state.matchesPlan) "" else " run") diag("Looks like you failed " + fails + " of " + total + ".") } - - state.isPassing } def exitCode: Int = - if (!state.matchesPlan || state.currentTest == 0) { + if (state.isPassing) { + 0 + } + else if (!state.matchesPlan || state.currentTest == 0) { 255 } else { @@ -144,7 +152,9 @@ class TestBuilder private ( case _ => true } - def isPassing: Boolean = - currentTest > 0 && failCount == 0 && matchesPlan + def isPassing: Boolean = plan match { + case SkipAll(_) => true + case _ => currentTest > 0 && failCount == 0 && matchesPlan + } } } -- cgit v1.2.3