summaryrefslogtreecommitdiff
path: root/build.sbt
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-09-30 17:23:16 +0200
committerGitHub <noreply@github.com>2016-09-30 17:23:16 +0200
commit388053544829c53c95cb6f9bf24ac366e950bac0 (patch)
treecc81b18882f03b9cd5b6c891658a423efafe6302 /build.sbt
parenta82c0b8b1d3f5038930c041fd48d550e25479a21 (diff)
parent61e4ed6f144e5114608bde61ab781e021f2effda (diff)
downloadscala-388053544829c53c95cb6f9bf24ac366e950bac0.tar.gz
scala-388053544829c53c95cb6f9bf24ac366e950bac0.tar.bz2
scala-388053544829c53c95cb6f9bf24ac366e950bac0.zip
Merge pull request #5413 from szeiger/wip/less-verbose-testAll
Make output of errors in testAll less verbose
Diffstat (limited to 'build.sbt')
-rw-r--r--build.sbt21
1 files changed, 13 insertions, 8 deletions
diff --git a/build.sbt b/build.sbt
index 30e3894754..1ffce67465 100644
--- a/build.sbt
+++ b/build.sbt
@@ -795,25 +795,30 @@ lazy val root: Project = (project in file("."))
k.scope.config.toOption.map(_.name + ":"),
k.scope.task.toOption.map(_.label + "::")
).flatten.mkString + k.key
- def logIncomplete(i: Incomplete, prefix: String): Unit = {
+ val loggedThis, loggedAny = new scala.collection.mutable.HashSet[String]
+ def findRootCauses(i: Incomplete, currentTask: String): Vector[(String, Option[Throwable])] = {
val sk = i.node match {
case Some(t: Task[_]) =>
t.info.attributes.entries.collect { case e if e.key == Keys.taskDefinitionKey => e.value.asInstanceOf[Def.ScopedKey[_]] }
.headOption.map(showScopedKey)
case _ => None
}
- val childCount = (if(i.directCause.isDefined) 1 else 0) + i.causes.length
- val skip = childCount <= 1 && sk.isEmpty
- if(!skip) log.error(s"$prefix- ${sk.getOrElse("?")}")
- i.directCause match {
- case Some(e) => log.error(s"$prefix - $e")
- case None => i.causes.foreach(i => logIncomplete(i, prefix + (if(skip) "" else " ")))
+ val task = sk.getOrElse(currentTask)
+ val dup = sk.map(s => !loggedAny.add(s)).getOrElse(false)
+ if(sk.map(s => !loggedThis.add(s)).getOrElse(false)) Vector.empty
+ else i.directCause match {
+ case Some(e) => Vector((task, if(dup) None else Some(e)))
+ case None => i.causes.toVector.flatMap(ch => findRootCauses(ch, task))
}
}
log.error(s"${failed.size} of ${results.length} test tasks failed:")
failed.foreach { case (i, d) =>
log.error(s"- $d")
- logIncomplete(i, " ")
+ loggedThis.clear
+ findRootCauses(i, "<unkown task>").foreach {
+ case (task, Some(ex)) => log.error(s" - $task failed: $ex")
+ case (task, None) => log.error(s" - ($task failed)")
+ }
}
throw new RuntimeException
}