From 52977fda897c1f5c13403a168aef3e7c74c6a04b Mon Sep 17 00:00:00 2001 From: Stefan Zeiger Date: Mon, 6 Jun 2016 17:45:33 +0200 Subject: [PATCH] Parse `-Dpartest.scalac_opts` in SBT runner This is required to pass the `-optimise` flag down to partest in PR validation builds. --- .../scala/scala/tools/partest/nest/Runner.scala | 7 ++++--- .../scala/tools/partest/nest/SBTRunner.scala | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/scala/scala/tools/partest/nest/Runner.scala b/src/main/scala/scala/tools/partest/nest/Runner.scala index d83a931..44b4c61 100644 --- a/src/main/scala/scala/tools/partest/nest/Runner.scala +++ b/src/main/scala/scala/tools/partest/nest/Runner.scala @@ -253,7 +253,7 @@ class Runner(val testFile: File, val suiteRunner: SuiteRunner) { // use lines in block so labeled? Default to sorry, Charlie. def retainOn(expr: String) = { val f = expr.trim - val allArgs = suiteRunner.scalacExtraArgs ++ PartestDefaults.scalacOpts.split(' ') + val allArgs = suiteRunner.scalacExtraArgs ++ suiteRunner.scalacOpts.split(' ') def flagWasSet(f: String) = allArgs contains f val (invert, token) = if (f startsWith "!") (true, f drop 1) else (false, f) @@ -756,7 +756,8 @@ class SuiteRunner( val javaCmdPath: String = PartestDefaults.javaCmd, val javacCmdPath: String = PartestDefaults.javacCmd, val scalacExtraArgs: Seq[String] = Seq.empty, - val javaOpts: String = PartestDefaults.javaOpts) { + val javaOpts: String = PartestDefaults.javaOpts, + val scalacOpts: String = PartestDefaults.scalacOpts) { import PartestDefaults.{ numThreads, waitTime } @@ -774,7 +775,7 @@ class SuiteRunner( s"""|Partest version: ${Properties.versionNumberString} |Compiler under test: ${relativize(fileManager.compilerUnderTest.getAbsolutePath)} |Scala version is: $versionMsg - |Scalac options are: ${(scalacExtraArgs ++ PartestDefaults.scalacOpts.split(' ')).mkString(" ")} + |Scalac options are: ${(scalacExtraArgs ++ scalacOpts.split(' ')).mkString(" ")} |Compilation Path: ${relativize(joinPaths(fileManager.testClassPath))} |Java binaries in: $vmBin |Java runtime is: $vmName diff --git a/src/main/scala/scala/tools/partest/nest/SBTRunner.scala b/src/main/scala/scala/tools/partest/nest/SBTRunner.scala index 7ce0110..a79dfcc 100644 --- a/src/main/scala/scala/tools/partest/nest/SBTRunner.scala +++ b/src/main/scala/scala/tools/partest/nest/SBTRunner.scala @@ -21,8 +21,19 @@ class SBTRunner(partestFingerprint: Fingerprint, eventHandler: EventHandler, log printSummary = false partestCmd = "partest" + val defs = { + val Def = "-D([^=]*)=(.*)".r + args.collect { case Def(k, v) => (k, v) } + } + val javaOpts = { - val l = args.filter(_.startsWith("-Dpartest.java_opts=")).map(_.substring(20)) + val l = defs.collect { case ("partest.java_opts", v) => v } + if(l.isEmpty) PartestDefaults.javaOpts + else l.mkString(" ") + } + + val scalacOpts = { + val l = defs.collect { case ("partest.scalac_opts", v) => v } if(l.isEmpty) PartestDefaults.javaOpts else l.mkString(" ") } @@ -35,7 +46,8 @@ class SBTRunner(partestFingerprint: Fingerprint, eventHandler: EventHandler, log javaCmdPath = Option(javaCmd).map(_.getAbsolutePath) getOrElse PartestDefaults.javaCmd, javacCmdPath = Option(javacCmd).map(_.getAbsolutePath) getOrElse PartestDefaults.javacCmd, scalacExtraArgs = scalacArgs, - javaOpts = javaOpts) { + javaOpts = javaOpts, + scalacOpts = scalacOpts) { override def onFinishTest(testFile: File, result: TestState): TestState = { eventHandler.handle(new Event {