diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2016-09-30 17:23:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-30 17:23:16 +0200 |
commit | 388053544829c53c95cb6f9bf24ac366e950bac0 (patch) | |
tree | cc81b18882f03b9cd5b6c891658a423efafe6302 /build.sbt | |
parent | a82c0b8b1d3f5038930c041fd48d550e25479a21 (diff) | |
parent | 61e4ed6f144e5114608bde61ab781e021f2effda (diff) | |
download | scala-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.sbt | 21 |
1 files changed, 13 insertions, 8 deletions
@@ -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 } |