From c1b8b3de8fe123317a07e0a4454606767876cb41 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Thu, 18 Oct 2018 07:32:29 +0800 Subject: . fix docjar tests now it no longer fails with an exception docJar works again, now mill clean __.docJar && mill __.docJar goes from 413s to 47s on the mill repo --- scalalib/src/mill/scalalib/ScalaModule.scala | 31 +++++++++++----------- scalalib/src/mill/scalalib/ZincWorkerApi.scala | 2 ++ .../test/src/mill/scalalib/HelloWorldTests.scala | 2 +- .../src/mill/scalalib/worker/ZincWorkerImpl.scala | 4 ++- 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/mill/scalalib/ScalaModule.scala index 74656818..35dc67d7 100644 --- a/scalalib/src/mill/scalalib/ScalaModule.scala +++ b/scalalib/src/mill/scalalib/ScalaModule.scala @@ -173,23 +173,24 @@ trait ScalaModule extends JavaModule { outer => val javadocDir = outDir / 'javadoc mkdir(javadocDir) - val files = for{ - ref <- allSources() - if exists(ref.path) - p <- (if (ref.path.isDir) ls.rec(ref.path) else Seq(ref.path)) - if (p.isFile && ((p.ext == "scala") || (p.ext == "java"))) - } yield p.toNIO.toString + val files = allSourceFiles().map(_.path.toString) val pluginOptions = scalaDocPluginClasspath().map(pluginPathRef => s"-Xplugin:${pluginPathRef.path}") - val options = Seq("-d", javadocDir.toNIO.toString, "-usejavacp") ++ pluginOptions ++ scalaDocOptions() - - if (files.nonEmpty) subprocess( - "scala.tools.nsc.ScalaDoc", - scalaCompilerClasspath().map(_.path) ++ compileClasspath().filter(_.path.ext != "pom").map(_.path), - mainArgs = (files ++ options).toSeq - ) - - createJar(Agg(javadocDir))(outDir) + val compileCp = compileClasspath().filter(_.path.ext != "pom").map(_.path) + val options = Seq( + "-d", javadocDir.toNIO.toString, "-usejavacp", + "-classpath", compileCp.mkString(":") + ) ++ + pluginOptions ++ + scalaDocOptions() + + if (files.isEmpty) Result.Success(createJar(Agg(javadocDir))(outDir)) + else { + zincWorker.worker().docJar(files ++ options) match{ + case true => Result.Success(createJar(Agg(javadocDir))(outDir)) + case false => Result.Failure("docJar generation failed") + } + } } /** diff --git a/scalalib/src/mill/scalalib/ZincWorkerApi.scala b/scalalib/src/mill/scalalib/ZincWorkerApi.scala index ebe2f071..c05ac62f 100644 --- a/scalalib/src/mill/scalalib/ZincWorkerApi.scala +++ b/scalalib/src/mill/scalalib/ZincWorkerApi.scala @@ -79,4 +79,6 @@ trait ZincWorkerApi { def discoverMainClasses(compilationResult: CompilationResult) (implicit ctx: mill.util.Ctx): Seq[String] + + def docJar(args: Seq[String]): Boolean } diff --git a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala index ed77216d..1839e275 100644 --- a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala +++ b/scalalib/test/src/mill/scalalib/HelloWorldTests.scala @@ -384,7 +384,7 @@ object HelloWorldTests extends TestSuite { resourcePath = pwd / 'scalalib / 'test / 'resources / "hello-world" ){ eval => // scaladoc generation fails because of "-Xfatal-warnings" flag - val Left(Result.Exception(InteractiveShelloutException(), outerStack)) = eval.apply(HelloWorldWithDocVersion.core.docJar) + val Left(Result.Failure("docJar generation failed", None)) = eval.apply(HelloWorldWithDocVersion.core.docJar) } 'docJarOnlyVersion - workspaceTest( HelloWorldOnlyDocVersion, diff --git a/scalalib/worker/src/mill/scalalib/worker/ZincWorkerImpl.scala b/scalalib/worker/src/mill/scalalib/worker/ZincWorkerImpl.scala index d2be35e9..8a3a3b02 100644 --- a/scalalib/worker/src/mill/scalalib/worker/ZincWorkerImpl.scala +++ b/scalalib/worker/src/mill/scalalib/worker/ZincWorkerImpl.scala @@ -49,7 +49,9 @@ class ZincWorkerImpl(ctx0: mill.util.Ctx, @volatile var mixedCompilersCache = Option.empty[(Long, Compilers)] - + def docJar(args: Seq[String]): Boolean = { + new scala.tools.nsc.ScalaDoc().process(args.toArray) + } /** Compile the bridge if it doesn't exist yet and return the output directory. * TODO: Proper invalidation, see #389 */ -- cgit v1.2.3