From 35c1793ee11ff394738d3f57968b972be3066c9d Mon Sep 17 00:00:00 2001 From: Felix Mulder Date: Thu, 22 Dec 2016 16:55:45 +0100 Subject: Add test programs to generate docs --- doc-tool/test/GenDocs.scala | 59 +++++++++++++++++++++++++++++++++++ doc-tool/test/WhitelistedStdLib.scala | 19 +++++++++-- 2 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 doc-tool/test/GenDocs.scala (limited to 'doc-tool') diff --git a/doc-tool/test/GenDocs.scala b/doc-tool/test/GenDocs.scala new file mode 100644 index 000000000..770904016 --- /dev/null +++ b/doc-tool/test/GenDocs.scala @@ -0,0 +1,59 @@ +package dotty.tools +package dottydoc + +object Files { + type JFile = java.io.File + + implicit class ToUrl(val f: JFile) extends AnyVal { + def getUrl = f.toURI.toURL + } +} + +trait LocalResources extends api.scala.Dottydoc { + import Files._ + + val template = new JFile( + sys.env.get("DOC_TEMPLATE").getOrElse("../../dottydoc-client/resources/template.html") + ) + val resources = new JFile( + sys.env.get("DOC_RESOURCES").getOrElse("../../dottydoc-client/resources/") + ).listFiles + + assert(template.exists, "please specify a template.html file using DOC_TEMPLATE env var") + assert(resources.forall(_.exists), "please specify a resource dir using DOC_RESOURCES env var") + + def index(files: Array[String]) = createIndex( + "-language:Scala2" +: "-classpath" +: "../library/target/scala-2.11/dotty-library_2.11-0.1-SNAPSHOT.jar:../interfaces/target/dotty-interfaces-0.1-SNAPSHOT.jar" +: files + ) +} + +object GenCollections extends LocalResources { + import Files._ + + val collections = TestWhitelistedCollections.files + + override def main(args: Array[String]): Unit = buildDocs( + "../local/docs", + template.getUrl, + resources.map(_.getUrl).toList, + index(collections.toArray) + ) +} + +object GenDottyDocs extends LocalResources { + import Files._ + + def getFiles(file: JFile): Array[JFile] = + if (file.isDirectory) file.listFiles.flatMap(getFiles) + else if (file.getAbsolutePath.endsWith(".scala")) Array(file) + else Array() + + val dottyFiles = new JFile("../compiler/src/dotty").listFiles.flatMap(getFiles).map(_.getAbsolutePath) + + override def main(args: Array[String]): Unit = buildDocs( + "../local/docs", + template.getUrl, + resources.map(_.getUrl).toList, + index(dottyFiles) + ) +} diff --git a/doc-tool/test/WhitelistedStdLib.scala b/doc-tool/test/WhitelistedStdLib.scala index 90df859e0..634070e8e 100644 --- a/doc-tool/test/WhitelistedStdLib.scala +++ b/doc-tool/test/WhitelistedStdLib.scala @@ -9,7 +9,7 @@ class WhitelistedStdLib extends DottyTest { StdLibSources.whitelisted.filterNot(_.endsWith("package.scala")) @Test def arrayHasDocumentation = - checkFiles(files) { packages => + checkFiles(TestWhitelistedCollections.files) { packages => val array = packages("scala") .children.find(_.path.mkString(".") == "scala.Array") @@ -19,7 +19,7 @@ class WhitelistedStdLib extends DottyTest { } @Test def traitImmutableHasDocumentation = - checkFiles(files) { packages => + checkFiles(TestWhitelistedCollections.files) { packages => val imm = packages("scala") .children.find(_.path.mkString(".") == "scala.Immutable") @@ -33,3 +33,18 @@ class WhitelistedStdLib extends DottyTest { "Imm did not have a comment with length > 0") } } + +object TestWhitelistedCollections { + val files: List[String] = { + val whitelist = "./test/dotc/scala-collections.whitelist" + + scala.io.Source.fromFile(whitelist, "UTF8") + .getLines() + .map(_.trim) // allow identation + .filter(!_.startsWith("#")) // allow comment lines prefixed by # + .map(_.takeWhile(_ != '#').trim) // allow comments in the end of line + .filter(_.nonEmpty) + .filterNot(_.endsWith("package.scala")) + .toList + } +} -- cgit v1.2.3