summaryrefslogtreecommitdiff
path: root/scalaplugin
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-11-11 19:13:51 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2017-11-11 19:13:51 -0800
commit21325c4dd9e52d6ae6f6b1a8ce606962922100b1 (patch)
treed38f9de27b9d5acfb5f867369cc8a0fc0fa0fdea /scalaplugin
parentf1b6f08958a3fc57d9c99c4eb49fe19261fc5643 (diff)
downloadmill-21325c4dd9e52d6ae6f6b1a8ce606962922100b1.tar.gz
mill-21325c4dd9e52d6ae6f6b1a8ce606962922100b1.tar.bz2
mill-21325c4dd9e52d6ae6f6b1a8ce606962922100b1.zip
First set of unit tests running through Mill
Diffstat (limited to 'scalaplugin')
-rw-r--r--scalaplugin/src/main/scala/mill/scalaplugin/Subproject.scala3
-rw-r--r--scalaplugin/src/main/scala/mill/scalaplugin/TestRunner.scala27
2 files changed, 14 insertions, 16 deletions
diff --git a/scalaplugin/src/main/scala/mill/scalaplugin/Subproject.scala b/scalaplugin/src/main/scala/mill/scalaplugin/Subproject.scala
index 1cf38840..0408833a 100644
--- a/scalaplugin/src/main/scala/mill/scalaplugin/Subproject.scala
+++ b/scalaplugin/src/main/scala/mill/scalaplugin/Subproject.scala
@@ -242,7 +242,4 @@ trait Subproject extends Cacher{
"-usejavacp"
)
}
- def test() = T.command{
- TestRunner.apply("mill.UTestFramework", Seq(pwd/'core/'target/"scala-2.12"/"test-classes"))
- }
}
diff --git a/scalaplugin/src/main/scala/mill/scalaplugin/TestRunner.scala b/scalaplugin/src/main/scala/mill/scalaplugin/TestRunner.scala
index fb6ff772..1fc4e32e 100644
--- a/scalaplugin/src/main/scala/mill/scalaplugin/TestRunner.scala
+++ b/scalaplugin/src/main/scala/mill/scalaplugin/TestRunner.scala
@@ -2,6 +2,7 @@ package mill.scalaplugin
import java.io.FileInputStream
import java.lang.annotation.Annotation
+import java.net.URLClassLoader
import java.util.zip.ZipInputStream
import ammonite.ops.{Path, ls, pwd}
@@ -15,39 +16,38 @@ object TestRunner {
Iterator.continually(zip.getNextEntry).takeWhile(_ != null).map(_.getName).filter(_.endsWith(".class"))
}
}
- def runTests(framework: Framework, classpath: Seq[Path]) = {
+ def runTests(cl: ClassLoader, framework: Framework, classpath: Seq[Path]) = {
val fingerprints = framework.fingerprints()
val testClasses = classpath.flatMap { base =>
listClassFiles(base).flatMap { path =>
- val cls = Class.forName(path.stripSuffix(".class").replace('/', '.'))
+ val cls = cl.loadClass(path.stripSuffix(".class").replace('/', '.'))
fingerprints.find {
case f: SubclassFingerprint =>
- Class.forName(f.superclassName()).isAssignableFrom(cls)
+ cl.loadClass(f.superclassName()).isAssignableFrom(cls)
case f: AnnotatedFingerprint =>
cls.isAnnotationPresent(
- Class.forName(f.annotationName()).asInstanceOf[Class[Annotation]]
+ cl.loadClass(f.annotationName()).asInstanceOf[Class[Annotation]]
)
}.map { f => (cls, f) }
}
}
testClasses
}
- // "mill.UTestFramework"
- // Seq(pwd/'core/'target/"scala-2.12"/"test-classes")
- def apply(frameworkName: String, testClassfilePath: Seq[Path]): Unit = {
- val framework = Class.forName(frameworkName)
+ def apply(frameworkName: String,
+ entireClasspath: Seq[Path],
+ testClassfilePath: Seq[Path]): Unit = {
+ val cl = new URLClassLoader(entireClasspath.map(_.toIO.toURI.toURL).toArray, getClass.getClassLoader)
+
+ val framework = cl.loadClass(frameworkName)
.newInstance()
.asInstanceOf[sbt.testing.Framework]
- val testClasses = runTests(framework, testClassfilePath)
-
- pprint.log(testClasses)
+ val testClasses = runTests(cl, framework, testClassfilePath)
- val runner = framework.runner(Array(), Array(), getClass.getClassLoader)
- println(runner)
+ val runner = framework.runner(Array(), Array(), cl)
val tasks = runner.tasks(
for((cls, fingerprint) <- testClasses.toArray)
@@ -79,6 +79,7 @@ object TestRunner {
val doneMsg = runner.done()
if (doneMsg.trim.nonEmpty){
println(doneMsg)
+ println(doneMsg)
}
}
}