mirror of https://github.com/sbt/sbt.git
Cleanup test framework creation
This commit is contained in:
parent
308bbc4724
commit
571df2ac79
|
|
@ -195,8 +195,7 @@ abstract class BasicScalaProject extends ScalaProject with BasicDependencyProjec
|
|||
{
|
||||
val loader = new URLClassLoader(classpath.get.map(_.asURL).toSeq.toArray, getClass.getClassLoader)
|
||||
def getTestNames(framework: TestFramework): Seq[String] =
|
||||
try { framework.create(loader).tests.map(_.superClassName) }
|
||||
catch { case e: ClassNotFoundException => log.debug("Framework implementation '" + framework.implClassName + "' not present."); Nil }
|
||||
framework.create(loader, log).toList.flatMap(_.tests.map(_.superClassName))
|
||||
frameworks.flatMap(getTestNames)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,8 +19,11 @@ object TestFrameworks
|
|||
}
|
||||
class TestFramework(val implClassName: String) extends NotNull
|
||||
{
|
||||
def create(loader: ClassLoader): Framework =
|
||||
Class.forName(implClassName, true, loader).newInstance.asInstanceOf[Framework]
|
||||
def create(loader: ClassLoader, log: Logger): Option[Framework] =
|
||||
{
|
||||
try { Some(Class.forName(implClassName, true, loader).newInstance.asInstanceOf[Framework]) }
|
||||
catch { case e: ClassNotFoundException => log.debug("Framework implementation '" + implClassName + "' not present."); None }
|
||||
}
|
||||
}
|
||||
final class TestRunner(framework: Framework, loader: ClassLoader, listeners: Seq[TestReportListener], log: Logger) extends NotNull
|
||||
{
|
||||
|
|
@ -83,7 +86,7 @@ object TestFramework
|
|||
cleanup: Iterable[() => Option[String]]): (Iterable[NamedTestTask], Iterable[NamedTestTask], Iterable[NamedTestTask]) =
|
||||
{
|
||||
val loader = createTestLoader(classpath)
|
||||
val rawFrameworks = frameworks.map(_.create(loader))
|
||||
val rawFrameworks = frameworks.flatMap(_.create(loader, log))
|
||||
val mappedTests = testMap(rawFrameworks, tests)
|
||||
if(mappedTests.isEmpty)
|
||||
(new NamedTestTask(TestStartName, None) :: Nil, Nil, new NamedTestTask(TestFinishName, { log.info("No tests to run."); None }) :: Nil )
|
||||
|
|
|
|||
Loading…
Reference in New Issue