-
-
Save jvican/499c4a6446cc55bd7bbd8c8dc67d969a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
object ScriptedRunnerImpl { | |
def run(resourceBaseDirectory: File, bufferLog: Boolean, tests: Array[String], handlersProvider: HandlersProvider): Unit = { | |
val runner = new ScriptedTests(resourceBaseDirectory, bufferLog, handlersProvider) | |
val logger = newLogger | |
val allTests = get(tests, resourceBaseDirectory, logger) flatMap { | |
case ScriptedTest(group, name) => | |
runner.scriptedTest(group, name, logger) | |
} | |
runAll(allTests) | |
} | |
def runAll(tests: Seq[() => Option[String]]): Unit = { | |
val errors = for (test <- tests; err <- test()) yield err | |
if (errors.nonEmpty) | |
sys.error(errors.mkString("Failed tests:\n\t", "\n\t", "\n")) | |
} | |
def get(tests: Seq[String], baseDirectory: File, log: ManagedLogger): Seq[ScriptedTest] = | |
if (tests.isEmpty) listTests(baseDirectory, log) else parseTests(tests) | |
def listTests(baseDirectory: File, log: ManagedLogger): Seq[ScriptedTest] = | |
(new ListTests(baseDirectory, _ => true, log)).listTests | |
def parseTests(in: Seq[String]): Seq[ScriptedTest] = | |
for (testString <- in) yield { | |
val Array(group, name) = testString.split("/").map(_.trim) | |
ScriptedTest(group, name) | |
} | |
private[sbt] val generateId: AtomicInteger = new AtomicInteger | |
private[sbt] def newLogger: ManagedLogger = | |
{ | |
val loggerName = "scripted-" + generateId.incrementAndGet | |
val x = LogExchange.logger(loggerName) | |
x | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment