diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2017-11-18 09:14:05 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2017-11-18 09:14:05 -0800 |
commit | 7060d7cad085c0d3a2332cfb4ad746e6567f09d6 (patch) | |
tree | 8f944f02f095e0f738b2019d26d28eed2c057454 /core/src/test/scala/mill/JavaCompileJarTests.scala | |
parent | a86dfbb4bec2cce4227fa508b987827f5f3aa2fc (diff) | |
download | mill-7060d7cad085c0d3a2332cfb4ad746e6567f09d6.tar.gz mill-7060d7cad085c0d3a2332cfb4ad746e6567f09d6.tar.bz2 mill-7060d7cad085c0d3a2332cfb4ad746e6567f09d6.zip |
First pass at managing failures in the evaluation graph now works. Tweaked the `JavaCompileJarTests` to make use of it, but still need to write a proper unit test suite
Diffstat (limited to 'core/src/test/scala/mill/JavaCompileJarTests.scala')
-rw-r--r-- | core/src/test/scala/mill/JavaCompileJarTests.scala | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/core/src/test/scala/mill/JavaCompileJarTests.scala b/core/src/test/scala/mill/JavaCompileJarTests.scala index 77add85a..9390d98e 100644 --- a/core/src/test/scala/mill/JavaCompileJarTests.scala +++ b/core/src/test/scala/mill/JavaCompileJarTests.scala @@ -5,7 +5,7 @@ import ammonite.ops._ import ImplicitWd._ import mill.define.{Target, Task} import mill.discover.Discovered -import mill.eval.Evaluator +import mill.eval.{Evaluator, Result} import mill.modules.Jvm.jarUp import mill.util.OSet import utest._ @@ -49,16 +49,22 @@ object JavaCompileJarTests extends TestSuite{ import Build._ val mapping = Discovered.mapping(Build) - def eval[T](t: Task[T]): (T, Int) = { + def eval[T](t: Task[T]): Either[Result.Failing, (T, Int)] = { val evaluator = new Evaluator(workspacePath, mapping) val evaluated = evaluator.evaluate(OSet(t)) - Tuple2( - evaluated.values(0).asInstanceOf[T], - evaluated.evaluated.collect{ - case t: Target[_] if mapping.contains(t) => t - case t: mill.define.Command[_] => t - }.size - ) + + if (evaluated.failing.keyCount == 0){ + Right(Tuple2( + evaluated.rawValues(0).asInstanceOf[Result.Success[T]].value, + evaluated.evaluated.collect{ + case t: Target[_] if mapping.contains(t) => t + case t: mill.define.Command[_] => t + }.size + )) + }else{ + Left(evaluated.failing.lookupKey(evaluated.failing.keys().next).items.head) + } + } def check(targets: OSet[Task[_]], expected: OSet[Task[_]]) = { val evaluator = new Evaluator(workspacePath, mapping) @@ -134,16 +140,15 @@ object JavaCompileJarTests extends TestSuite{ for(i <- 0 until 3){ // Build.run is not cached, so every time we eval it it has to // re-evaluate - val (runOutput, evalCount) = eval(Build.run("test.Foo")) + val Right((runOutput, evalCount)) = eval(Build.run("test.Foo")) assert( runOutput.out.string == (31337 + 271828) + "\n", evalCount == 1 ) } - val ex = intercept[ammonite.ops.ShelloutException]{ - eval(Build.run("test.BarFour")) - } + val Left(Result.Exception(ex)) = eval(Build.run("test.BarFour")) + assert(ex.getMessage.contains("Could not find or load main class")) append( @@ -156,12 +161,12 @@ object JavaCompileJarTests extends TestSuite{ } """ ) - val (runOutput2, evalCount2) = eval(Build.run("test.BarFour")) + val Right((runOutput2, evalCount2)) = eval(Build.run("test.BarFour")) assert( runOutput2.out.string == "New Cls!\n", evalCount2 == 3 ) - val (runOutput3, evalCount3) = eval(Build.run("test.BarFour")) + val Right((runOutput3, evalCount3)) = eval(Build.run("test.BarFour")) assert( runOutput3.out.string == "New Cls!\n", evalCount3 == 1 |