=pro #15166 do not redefine executeTests

This commit is contained in:
Martynas Mickevicius 2014-05-12 15:36:49 +02:00
parent e43e48329c
commit 07ca8d5a8d
2 changed files with 43 additions and 28 deletions

View file

@ -1,5 +1,6 @@
package akka package akka
import akka.TestExtras.Filter
import akka.TestExtras.Filter.Keys._ import akka.TestExtras.Filter.Keys._
import com.typesafe.sbt.{SbtScalariform, SbtMultiJvm} import com.typesafe.sbt.{SbtScalariform, SbtMultiJvm}
import sbt._ import sbt._
@ -8,9 +9,7 @@ import sbt.Keys._
import com.typesafe.sbt.SbtScalariform.ScalariformKeys import com.typesafe.sbt.SbtScalariform.ScalariformKeys
object MultiNode { object MultiNode {
def executeMultiJvmTests = Def.setting { def executeMultiJvmTests = Filter.containsOrNotExcludesTag("long-running")
onlyTestTags.value.contains("long-running") || !excludeTestTags.value.contains("long-running")
}
val multiNodeEnabled = sys.props.get("akka.test.multi-node").getOrElse("false").toBoolean val multiNodeEnabled = sys.props.get("akka.test.multi-node").getOrElse("false").toBoolean
@ -46,27 +45,33 @@ object MultiNode {
ScalariformKeys.preferences in MultiJvm := Formatting.formattingPreferences) ++ ScalariformKeys.preferences in MultiJvm := Formatting.formattingPreferences) ++
Option(System.getProperty("akka.test.multi-node.hostsFileName")).map(x => Seq(multiNodeHostsFileName in MultiJvm := x)).getOrElse(Seq.empty) ++ Option(System.getProperty("akka.test.multi-node.hostsFileName")).map(x => Seq(multiNodeHostsFileName in MultiJvm := x)).getOrElse(Seq.empty) ++
Option(System.getProperty("akka.test.multi-node.java")).map(x => Seq(multiNodeJavaName in MultiJvm := x)).getOrElse(Seq.empty) ++ Option(System.getProperty("akka.test.multi-node.java")).map(x => Seq(multiNodeJavaName in MultiJvm := x)).getOrElse(Seq.empty) ++
Option(System.getProperty("akka.test.multi-node.targetDirName")).map(x => Seq(multiNodeTargetDirName in MultiJvm := x)).getOrElse(Seq.empty) ++ { Option(System.getProperty("akka.test.multi-node.targetDirName")).map(x => Seq(multiNodeTargetDirName in MultiJvm := x)).getOrElse(Seq.empty) ++
Seq( ((executeMultiJvmTests, multiNodeEnabled) match {
executeTests in Test := { case (true, true) =>
if (executeMultiJvmTests.value) { executeTests in Test <<= (executeTests in Test, multiNodeExecuteTests in MultiJvm) map {
val testResults = (executeTests in Test).value case (testResults, multiNodeResults) =>
val multiNodeResults = multiNodeEnabled match { val overall =
case true => (multiNodeExecuteTests in MultiJvm).value if (testResults.overall.id < multiNodeResults.overall.id)
case false => (executeTests in MultiJvm).value multiNodeResults.overall
} else
testResults.overall
val overall = Tests.Output(overall,
if (testResults.overall.id < multiNodeResults.overall.id) testResults.events ++ multiNodeResults.events,
multiNodeResults.overall testResults.summaries ++ multiNodeResults.summaries)
else
testResults.overall
Tests.Output(overall,
testResults.events ++ multiNodeResults.events,
testResults.summaries ++ multiNodeResults.summaries)
} }
else (executeTests in Test).value case (true, false) =>
} executeTests in Test <<= (executeTests in Test, executeTests in MultiJvm) map {
) case (testResults, multiNodeResults) =>
} val overall =
if (testResults.overall.id < multiNodeResults.overall.id)
multiNodeResults.overall
else
testResults.overall
Tests.Output(overall,
testResults.events ++ multiNodeResults.events,
testResults.summaries ++ multiNodeResults.summaries)
}
case (false, _) => Seq.empty
})
} }

View file

@ -226,14 +226,20 @@ object TestExtras {
import Keys._ import Keys._
private[Filter] object Params {
val testNamesExclude = systemPropertyAsSeq("akka.test.names.exclude").toSet
val testTagsExlcude = systemPropertyAsSeq("akka.test.tags.exclude").toSet
val testTagsOnly = systemPropertyAsSeq("akka.test.tags.only").toSet
}
def settings = { def settings = {
Seq( Seq(
excludeTestNames := systemPropertyAsSeq("akka.test.names.exclude").toSet, excludeTestNames := Params.testNamesExclude,
excludeTestTags := { excludeTestTags := {
if (onlyTestTags.value.isEmpty) systemPropertyAsSeq("akka.test.tags.exclude").toSet if (onlyTestTags.value.isEmpty) Params.testTagsExlcude
else Set.empty else Set.empty
}, },
onlyTestTags := systemPropertyAsSeq("akka.test.tags.only").toSet, onlyTestTags := Params.testTagsOnly,
// add filters for tests excluded by name // add filters for tests excluded by name
testOptions in Test <++= excludeTestNames map { _.toSeq.map(exclude => Tests.Filter(test => !test.contains(exclude))) }, testOptions in Test <++= excludeTestNames map { _.toSeq.map(exclude => Tests.Filter(test => !test.contains(exclude))) },
@ -250,6 +256,10 @@ object TestExtras {
) )
} }
def containsOrNotExcludesTag(tag: String) = {
Params.testTagsOnly.contains(tag) || !Params.testTagsExlcude(tag)
}
def systemPropertyAsSeq(name: String): Seq[String] = { def systemPropertyAsSeq(name: String): Seq[String] = {
val prop = sys.props.get(name).getOrElse("") val prop = sys.props.get(name).getOrElse("")
if (prop.isEmpty) Seq.empty else prop.split(",").toSeq if (prop.isEmpty) Seq.empty else prop.split(",").toSeq