diff options
Diffstat (limited to 'test/scalacheck/scala/tools/nsc/scaladoc/IndexScriptTest.scala')
-rw-r--r-- | test/scalacheck/scala/tools/nsc/scaladoc/IndexScriptTest.scala | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/test/scalacheck/scala/tools/nsc/scaladoc/IndexScriptTest.scala b/test/scalacheck/scala/tools/nsc/scaladoc/IndexScriptTest.scala new file mode 100644 index 0000000000..fb4dc55c98 --- /dev/null +++ b/test/scalacheck/scala/tools/nsc/scaladoc/IndexScriptTest.scala @@ -0,0 +1,57 @@ +package scala.tools.nsc.scaladoc + +import org.scalacheck._ +import org.scalacheck.Prop._ + +import scala.tools.nsc.doc +import scala.tools.nsc.doc.html.page.IndexScript +import java.net.{URLClassLoader, URLDecoder} + +object IndexScriptTest extends Properties("IndexScript") { + + def getClasspath = { + // these things can be tricky + // this test previously relied on the assumption that the current thread's classloader is an url classloader and contains all the classpaths + // does partest actually guarantee this? to quote Leonard Nimoy: The answer, of course, is no. + // this test _will_ fail again some time in the future. + // Footnote: java.lang.ClassCastException: org.apache.tools.ant.loader.AntClassLoader5 cannot be cast to java.net.URLClassLoader + val loader = Thread.currentThread.getContextClassLoader.asInstanceOf[URLClassLoader] + val paths = loader.getURLs.map(u => URLDecoder.decode(u.getPath)) + paths mkString java.io.File.pathSeparator + } + + val docFactory = { + val settings = new doc.Settings({Console.err.println(_)}) + settings.scaladocQuietRun = true + settings.nowarn.value = true + settings.classpath.value = getClasspath + val reporter = new scala.tools.nsc.reporters.ConsoleReporter(settings) + new doc.DocFactory(reporter, settings) + } + + val indexModelFactory = doc.model.IndexModelFactory + + def createIndexScript(path: String) = + docFactory.makeUniverse(Left(List(path))) match { + case Some(universe) => + Some(new IndexScript(universe)) + case _ => + None + } + + property("allPackages") = { + createIndexScript("src/scaladoc/scala/tools/nsc/doc/html/page/IndexScript.scala") match { + case Some(index) => + index.allPackages.map(_.toString) == List( + "scala", + "scala.tools", + "scala.tools.nsc", + "scala.tools.nsc.doc", + "scala.tools.nsc.doc.html", + "scala.tools.nsc.doc.html.page" + ) + case None => + false + } + } +} |