From 3446af59a17bdef8730008a61eade7937b9cda56 Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Thu, 30 Mar 2017 10:47:28 -0400 Subject: scalatest plugin for 2.12 (and move most code from plugin into library) --- libraries/scalatest-runner/Runner.scala | 37 ++++++++++++++++++++++++++++ libraries/scalatest-runner/build/build.scala | 8 ++++++ 2 files changed, 45 insertions(+) create mode 100644 libraries/scalatest-runner/Runner.scala create mode 100644 libraries/scalatest-runner/build/build.scala (limited to 'libraries') diff --git a/libraries/scalatest-runner/Runner.scala b/libraries/scalatest-runner/Runner.scala new file mode 100644 index 0000000..e2eaf87 --- /dev/null +++ b/libraries/scalatest-runner/Runner.scala @@ -0,0 +1,37 @@ +package cbt.scalatest + +import org.scalatest._ + +import java.io.File + +object Runner{ + def run( classpath: Array[File], classLoader: ClassLoader ): Unit = { + val suiteNames = classpath.map( d => discoverSuites(d, classLoader) ).flatten + runSuites( suiteNames.map( loadSuite( _, classLoader ) ) ) + } + + def runSuites( suites: Seq[Suite] ) = { + def color: Boolean = true + def durations: Boolean = true + def shortstacks: Boolean = true + def fullstacks: Boolean = true + def stats: Boolean = true + def testName: String = null + def configMap: ConfigMap = ConfigMap.empty + suites.foreach{ + _.execute(testName, configMap, color, durations, shortstacks, fullstacks, stats) + } + } + + def discoverSuites( discoveryPath: File, classLoader: ClassLoader ): Seq[String] = { + classLoader + .loadClass("org.scalatest.tools.SuiteDiscoveryHelper") + .getMethod("discoverSuiteNames", classOf[List[_]], classOf[ClassLoader], classOf[Option[_]]) + .invoke(null, List(discoveryPath.toString ++ "/"), classLoader, None) + .asInstanceOf[Set[String]] + .toVector + } + def loadSuite(name: String, classLoader: ClassLoader) = { + classLoader.loadClass(name).getConstructor().newInstance().asInstanceOf[Suite] + } +} diff --git a/libraries/scalatest-runner/build/build.scala b/libraries/scalatest-runner/build/build.scala new file mode 100644 index 0000000..781e314 --- /dev/null +++ b/libraries/scalatest-runner/build/build.scala @@ -0,0 +1,8 @@ +import cbt._ + +class Build(val context: Context) extends BaseBuild{ + override def dependencies = super.dependencies ++ + Resolver( mavenCentral ).bind( + ScalaDependency("org.scalatest","scalatest", if(scalaMajorVersion == "2.12") "3.0.1" else "2.2.6") + ) +} -- cgit v1.2.3