diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2017-11-11 19:13:51 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2017-11-11 19:13:51 -0800 |
commit | 21325c4dd9e52d6ae6f6b1a8ce606962922100b1 (patch) | |
tree | d38f9de27b9d5acfb5f867369cc8a0fc0fa0fdea /scalaplugin | |
parent | f1b6f08958a3fc57d9c99c4eb49fe19261fc5643 (diff) | |
download | mill-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.scala | 3 | ||||
-rw-r--r-- | scalaplugin/src/main/scala/mill/scalaplugin/TestRunner.scala | 27 |
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) } } } |