Abstract over `runAll` and `runInParallel`

This is the best we can do without using structural types.
This commit is contained in:
jvican 2017-04-28 13:31:43 +02:00
parent f497e15cd8
commit e80ec0a670
No known key found for this signature in database
GPG Key ID: 42DAFA0F112E8050
1 changed files with 8 additions and 10 deletions

View File

@ -201,17 +201,15 @@ class ScriptedRunner {
runAllInParallel(scriptedTestRunners.toParArray)
}
def runAll(tests: Seq[ScriptedTests.TestRunner]): Unit = {
val errors = for (test <- tests; err <- test()) yield err
if (errors.nonEmpty)
sys.error(errors.mkString("Failed tests:\n\t", "\n\t", "\n"))
}
private def reportErrors(errors: Seq[String]): Unit =
if (errors.nonEmpty) sys.error(errors.mkString("Failed tests:\n\t", "\n\t", "\n")) else ()
def runAllInParallel(tests: ParSeq[ScriptedTests.TestRunner]): Unit = {
val executedTests = tests.flatMap(test => test.apply().toList).toList
if (executedTests.nonEmpty)
sys.error(executedTests.mkString("Failed tests:\n\t", "\n\t", "\n"))
}
def runAll(tests: Seq[ScriptedTests.TestRunner]): Unit =
reportErrors(tests.flatMap(test => test.apply().toSeq))
// We cannot reuse `runAll` because parallel collections != collections
def runAllInParallel(tests: ParSeq[ScriptedTests.TestRunner]): Unit =
reportErrors(tests.flatMap(test => test.apply().toSeq).toList)
def get(tests: Seq[String], baseDirectory: File, log: Logger): Seq[ScriptedTest] =
if (tests.isEmpty) listTests(baseDirectory, log) else parseTests(tests)