All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala.tools.partest.nest.SBTRunner.scala Maven / Gradle / Ivy

The newest version!
/*                     __                                               *\
**     ________ ___   / /  ___     Scala Parallel Testing               **
**    / __/ __// _ | / /  / _ |    (c) 2007-2013, LAMP/EPFL             **
**  __\ \/ /__/ __ |/ /__/ __ |    http://scala-lang.org/               **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
\*                                                                      */

package scala.tools.partest
package nest

import sbt.testing.EventHandler
import sbt.testing.Logger
import sbt.testing.Event
import sbt.testing.Fingerprint
import sbt.testing.Selector
import sbt.testing.Status
import sbt.testing.OptionalThrowable
import sbt.testing.SuiteSelector
import sbt.testing.TestSelector
import java.net.URLClassLoader

// called reflectively from scala-partest-test-interface
class SBTRunner(partestFingerprint: Fingerprint, eventHandler: EventHandler, loggers: Array[Logger],
    srcDir: String, testClassLoader: URLClassLoader, javaCmd: File, javacCmd: File, scalacArgs: Array[String])
    extends AntRunner(srcDir, testClassLoader, javaCmd, javacCmd, scalacArgs) {
  override def error(msg: String): Nothing = sys.error(msg)
  def echo(msg: String): Unit = loggers foreach { l => l.info(msg) }
  def log(msg: String): Unit = loggers foreach { l => l.debug(msg) }
  def onFinishKind(kind: String, passed: Array[TestState], failed: Array[TestState]): Unit =
    eventHandler.handle(new Event {
      def fullyQualifiedName: String = kind
      def fingerprint: Fingerprint = partestFingerprint
      def selector: Selector = new SuiteSelector
      def status: Status = if (failed.isEmpty) Status.Success else Status.Failure
      def throwable: OptionalThrowable = new OptionalThrowable
      def duration: Long = -1
    })

  override def onFinishTest(testFile: File, result: TestState): TestState = {
    eventHandler.handle(new Event {
      def fullyQualifiedName: String = testFile.testIdent
      def fingerprint: Fingerprint = partestFingerprint
      def selector: Selector = new TestSelector(testFile.testIdent)
      def status: Status = if (result.isOk) Status.Success else Status.Failure
      def throwable: OptionalThrowable = new OptionalThrowable
      def duration: Long = -1
    })
    result
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy