summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/test/src/eval/FailureTests.scala69
-rw-r--r--main/test/src/util/TestEvaluator.scala4
2 files changed, 71 insertions, 2 deletions
diff --git a/main/test/src/eval/FailureTests.scala b/main/test/src/eval/FailureTests.scala
index dcfbcb60..d1b3c750 100644
--- a/main/test/src/eval/FailureTests.scala
+++ b/main/test/src/eval/FailureTests.scala
@@ -79,6 +79,40 @@ object FailureTests extends TestSuite{
expectedRawValues = Seq(Result.Skipped)
)
}
+
+ "evaluatePair (failFast=true)"- {
+ val check = new TestEvaluator(pair, failFast = true)
+ check.fail(
+ pair.down,
+ expectedFailCount = 0,
+ expectedRawValues = Seq(Result.Success(0))
+ )
+
+ pair.up.failure = Some("lols")
+
+ check.fail(
+ pair.down,
+ expectedFailCount = 1,
+ expectedRawValues = Seq(Result.Aborted)
+ )
+
+ pair.up.failure = None
+
+ check.fail(
+ pair.down,
+ expectedFailCount = 0,
+ expectedRawValues = Seq(Result.Success(0))
+ )
+
+ pair.up.exception = Some(new IndexOutOfBoundsException())
+
+ check.fail(
+ pair.down,
+ expectedFailCount = 1,
+ expectedRawValues = Seq(Result.Aborted)
+ )
+ }
+
'evaluateBacktickIdentifiers - {
val check = new TestEvaluator(bactickIdentifiers)
import bactickIdentifiers._
@@ -112,6 +146,41 @@ object FailureTests extends TestSuite{
expectedRawValues = Seq(Result.Skipped)
)
}
+
+ "evaluateBacktickIdentifiers (failFast=true)" - {
+ val check = new TestEvaluator(bactickIdentifiers, failFast = true)
+ import bactickIdentifiers._
+ check.fail(
+ `a-down-target`,
+ expectedFailCount = 0,
+ expectedRawValues = Seq(Result.Success(0))
+ )
+
+ `up-target`.failure = Some("lols")
+
+ check.fail(
+ `a-down-target`,
+ expectedFailCount = 1,
+ expectedRawValues = Seq(Result.Aborted)
+ )
+
+ `up-target`.failure = None
+
+ check.fail(
+ `a-down-target`,
+ expectedFailCount = 0,
+ expectedRawValues = Seq(Result.Success(0))
+ )
+
+ `up-target`.exception = Some(new IndexOutOfBoundsException())
+
+ check.fail(
+ `a-down-target`,
+ expectedFailCount = 1,
+ expectedRawValues = Seq(Result.Aborted)
+ )
+ }
+
'multipleUsesOfDest - {
object build extends TestUtil.BaseModule {
// Using `T.ctx( ).dest` twice in a single task is ok
diff --git a/main/test/src/util/TestEvaluator.scala b/main/test/src/util/TestEvaluator.scala
index 81c8fe12..97be20be 100644
--- a/main/test/src/util/TestEvaluator.scala
+++ b/main/test/src/util/TestEvaluator.scala
@@ -17,7 +17,7 @@ object TestEvaluator{
}
}
-class TestEvaluator(module: TestUtil.BaseModule)
+class TestEvaluator(module: TestUtil.BaseModule, failFast: Boolean = false)
(implicit fullName: sourcecode.FullName,
tp: TestPath){
val outPath = TestUtil.getOutPath()
@@ -27,7 +27,7 @@ class TestEvaluator(module: TestUtil.BaseModule)
colored = true, disableTicker=false,
ammonite.util.Colors.Default, System.out, System.out, System.err, System.in, debugEnabled = false
)
- val evaluator = new Evaluator(Ctx.defaultHome, outPath, TestEvaluator.externalOutPath, module, logger)
+ val evaluator = new Evaluator(Ctx.defaultHome, outPath, TestEvaluator.externalOutPath, module, logger, failFast = failFast)
def apply[T](t: Task[T]): Either[Result.Failing[T], (T, Int)] = {
val evaluated = evaluator.evaluate(Agg(t))