Cleanup test framework creation

This commit is contained in:
Mark Harrah 2009-10-23 09:18:00 -04:00
parent 308bbc4724
commit 571df2ac79
2 changed files with 7 additions and 5 deletions

View File

@ -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)
}
}

View File

@ -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 )