aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--stage2/Lib.scala20
-rw-r--r--test/test.scala2
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)
}
{