=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
import akka.TestExtras.Filter
import akka.TestExtras.Filter.Keys._
import com.typesafe.sbt.{SbtScalariform, SbtMultiJvm}
import sbt._
@ -8,9 +9,7 @@ import sbt.Keys._
import com.typesafe.sbt.SbtScalariform.ScalariformKeys
object MultiNode {
def executeMultiJvmTests = Def.setting {
onlyTestTags.value.contains("long-running") || !excludeTestTags.value.contains("long-running")
}
def executeMultiJvmTests = Filter.containsOrNotExcludesTag("long-running")
val multiNodeEnabled = sys.props.get("akka.test.multi-node").getOrElse("false").toBoolean
@ -46,16 +45,11 @@ object MultiNode {
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.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) ++ {
Seq(
executeTests in Test := {
if (executeMultiJvmTests.value) {
val testResults = (executeTests in Test).value
val multiNodeResults = multiNodeEnabled match {
case true => (multiNodeExecuteTests in MultiJvm).value
case false => (executeTests in MultiJvm).value
}
Option(System.getProperty("akka.test.multi-node.targetDirName")).map(x => Seq(multiNodeTargetDirName in MultiJvm := x)).getOrElse(Seq.empty) ++
((executeMultiJvmTests, multiNodeEnabled) match {
case (true, true) =>
executeTests in Test <<= (executeTests in Test, multiNodeExecuteTests in MultiJvm) map {
case (testResults, multiNodeResults) =>
val overall =
if (testResults.overall.id < multiNodeResults.overall.id)
multiNodeResults.overall
@ -65,8 +59,19 @@ object MultiNode {
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._
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 = {
Seq(
excludeTestNames := systemPropertyAsSeq("akka.test.names.exclude").toSet,
excludeTestNames := Params.testNamesExclude,
excludeTestTags := {
if (onlyTestTags.value.isEmpty) systemPropertyAsSeq("akka.test.tags.exclude").toSet
if (onlyTestTags.value.isEmpty) Params.testTagsExlcude
else Set.empty
},
onlyTestTags := systemPropertyAsSeq("akka.test.tags.only").toSet,
onlyTestTags := Params.testTagsOnly,
// add filters for tests excluded by name
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] = {
val prop = sys.props.get(name).getOrElse("")
if (prop.isEmpty) Seq.empty else prop.split(",").toSeq