From 599a9d83c65d56e0510e0b13aad30072a62703ab Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Mon, 27 Feb 2017 19:07:50 +0800 Subject: fix results of Seq of builds not being printed --- stage2/Lib.scala | 20 ++++++++++---------- test/test.scala | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/stage2/Lib.scala b/stage2/Lib.scala index 0c103af..854a50a 100644 --- a/stage2/Lib.scala +++ b/stage2/Lib.scala @@ -152,7 +152,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ } def callReflective[T <: AnyRef]( obj: T, code: Option[String], context: Context ): ExitCode = { - callInternal( obj, code.toSeq.flatMap(_.split("\\.").map( NameTransformer.encode )), Nil, context ) match { + callInternal( obj, code.toSeq.flatMap(_.split("\\.").map( NameTransformer.encode )), Nil, context ).map { case (obj, code, None) => val s = render(obj) if(s.nonEmpty) @@ -165,7 +165,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ if(s.nonEmpty) System.err.println(s) code getOrElse ExitCode.Failure - } + }.reduceOption(_ && _).getOrElse( ExitCode.Failure ) } private def render[T]( obj: T ): String = { @@ -179,7 +179,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ } } - private def callInternal[T <: AnyRef]( obj: T, members: Seq[String], previous: Seq[String], context: Context ): (Option[Object], Option[ExitCode], Option[String]) = { + private def callInternal[T <: AnyRef]( obj: T, members: Seq[String], previous: Seq[String], context: Context ): Seq[(Option[Object], Option[ExitCode], Option[String])] = { members.headOption.map{ taskName => logger.lib("Calling task " ++ taskName.toString) taskMethods(obj.getClass).get(taskName).map{ method => @@ -187,12 +187,12 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ result match { case code if code.getClass.getSimpleName == "ExitCode" => // FIXME: ExitCode needs to be part of the compatibility interfaces - (None, Some(ExitCode(Stage0Lib.get(code,"integer").asInstanceOf[Int])), None) - case Seq(b, bs @ _*) if (b +: bs).forall(_.isInstanceOf[BaseBuild]) => - bs.map( b => callInternal(b.asInstanceOf[BaseBuild], members.tail, previous :+ taskName, context) ).head + Seq((None, Some(ExitCode(Stage0Lib.get(code,"integer").asInstanceOf[Int])), None)) + case bs: Seq[_] if bs.size > 0 && bs.forall(_.isInstanceOf[BaseBuild]) => + bs.flatMap( b => callInternal(b.asInstanceOf[BaseBuild], members.tail, previous :+ taskName, context) ) case _ => callInternal(result, members.tail, previous :+ taskName, context) } - }.getOrElse( (None, None, None) ) + }.getOrElse( Seq( (None, None, None) ) ) }.getOrElse{ val folder = NameTransformer.decode(taskName) if( context != null && (context.workingDirectory / folder).exists ){ @@ -206,11 +206,11 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ newContext ) } else { - ( Some(obj), None, Some("\nMethod not found: " ++ (previous :+ taskName).mkString(".") ++ "\n") ) + Seq( ( Some(obj), None, Some("\nMethod not found: " ++ (previous :+ taskName).mkString(".") ++ "\n") ) ) } } }.getOrElse{ - ( + Seq(( Some( obj.getClass.getMethods.find(m => m.getName == "apply" && m.getParameterCount == 0).map( _.invoke(obj) @@ -218,7 +218,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ ), None, None - ) + )) } } diff --git a/test/test.scala b/test/test.scala index 818d9df..3305926 100644 --- a/test/test.scala +++ b/test/test.scala @@ -334,7 +334,7 @@ object Main{ { val res = runCbt("../examples/cross-build-example", Seq("cross.scalaVersion")) assert(res.exit0) - assert(res.out == "2.10.5\n2.11.7\n", res.out ++ res.err) + assert(res.out == "2.10.5\n2.11.7\n", res.out) } { -- cgit v1.2.3