diff options
-rw-r--r-- | core/src/main/scala/mill/main/ReplApplyHandler.scala | 28 | ||||
-rw-r--r-- | core/src/main/scala/mill/util/Logger.scala | 2 | ||||
-rw-r--r-- | scalalib/src/main/scala/mill/scalalib/Module.scala | 8 |
3 files changed, 32 insertions, 6 deletions
diff --git a/core/src/main/scala/mill/main/ReplApplyHandler.scala b/core/src/main/scala/mill/main/ReplApplyHandler.scala index 7ce00f67..d4236487 100644 --- a/core/src/main/scala/mill/main/ReplApplyHandler.scala +++ b/core/src/main/scala/mill/main/ReplApplyHandler.scala @@ -4,7 +4,7 @@ package mill.main import mill.define.Applicative.ApplyHandler import mill.define._ import mill.discover.{Discovered, Mirror} -import mill.eval.Evaluator +import mill.eval.{Evaluator, Result} import mill.util.OSet import scala.collection.mutable @@ -34,7 +34,31 @@ class ReplApplyHandler(pprinter0: pprint.PPrinter, evaluator: Evaluator[_]) exte // as the user enters more REPL commands and changes the classpath val classLoaderSig = Evaluator.classLoaderSig override def apply[V](t: Task[V]) = { - evaluator.evaluate(OSet(t)).values.head.asInstanceOf[V] + val res = evaluator.evaluate(OSet(t)) + res.values match{ + case Seq(head: V) => head + case Nil => + val msg = new mutable.StringBuilder() + msg.append(res.failing.keyCount + " targets failed\n") + for((k, vs) <- res.failing.items){ + msg.append(k match{ + case Left(t) => "Anonymous Task\n" + case Right(k) => k.segments.render + "\n" + }) + + for(v <- vs){ + v match{ + case Result.Failure(m) => msg.append(m + "\n") + case Result.Exception(t, outerStack) => + msg.append( + t.toString + t.getStackTrace.dropRight(outerStack.length).map("\n " + _).mkString + "\n" + ) + + } + } + } + throw new Exception(msg.toString) + } } val generatedEval = new EvalGenerated(evaluator) diff --git a/core/src/main/scala/mill/util/Logger.scala b/core/src/main/scala/mill/util/Logger.scala index 1cec82ff..b42cc907 100644 --- a/core/src/main/scala/mill/util/Logger.scala +++ b/core/src/main/scala/mill/util/Logger.scala @@ -89,6 +89,8 @@ case class PrintLogger(colored: Boolean, nav.clearLine(2) nav.left(9999) p.flush() + }else{ + println() } lastLineTicker = true infoStream.println(colors.info()(s)) diff --git a/scalalib/src/main/scala/mill/scalalib/Module.scala b/scalalib/src/main/scala/mill/scalalib/Module.scala index 4437c08f..125fc288 100644 --- a/scalalib/src/main/scala/mill/scalalib/Module.scala +++ b/scalalib/src/main/scala/mill/scalalib/Module.scala @@ -36,7 +36,7 @@ trait TestModule extends Module with TaskModule { jvmOptions = forkArgs(), options = Seq( testFramework(), - (runDepClasspath().map(_.path) :+ compile().classes.path).distinct.mkString(" "), + assemblyClasspath().map(_.path).distinct.mkString(" "), Seq(compile().classes.path).mkString(" "), args.mkString(" "), outputPath.toString, @@ -53,7 +53,7 @@ trait TestModule extends Module with TaskModule { def test(args: String*) = T.command{ val (doneMsg, results) = TestRunner( testFramework(), - runDepClasspath().map(_.path) :+ compile().classes.path, + assemblyClasspath().map(_.path), Seq(compile().classes.path), args ) @@ -259,7 +259,7 @@ trait Module extends mill.Module with TaskModule { outer => def run(args: String*) = T.command{ subprocess( mainClass().getOrElse(throw new RuntimeException("No mainClass provided!")), - runDepClasspath().map(_.path) :+ compile().classes.path, + assemblyClasspath().map(_.path), forkArgs(), args, workingDir = ammonite.ops.pwd) @@ -268,7 +268,7 @@ trait Module extends mill.Module with TaskModule { outer => def runMain(mainClass: String, args: String*) = T.command{ subprocess( mainClass, - runDepClasspath().map(_.path) :+ compile().classes.path, + assemblyClasspath().map(_.path), forkArgs(), args, workingDir = ammonite.ops.pwd |