aboutsummaryrefslogtreecommitdiff
path: root/libraries
diff options
context:
space:
mode:
Diffstat (limited to 'libraries')
-rw-r--r--libraries/scalatest-runner/Runner.scala37
-rw-r--r--libraries/scalatest-runner/build/build.scala8
2 files changed, 45 insertions, 0 deletions
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")
+ )
+}