Skip to content
This repository was archived by the owner on Sep 8, 2022. It is now read-only.

Commit 7c4659e

Browse files
committed
Pass javaOpts into SuiteRunner and allow setting them from SBTRunner
Previously there was no way to set the Java options from sbt. While the Scala build script sets `javaOptions` this only affects the JVM which runs the partest launcher, not the actual tests. This commit improves the handling of `javaOpts` in partest and allows setting it from SBTRunner. You can pass a special ‘-Dpartest.java_opts=…’ argument to it which is handled directly in SBTRunner. partest usage from ant and from the command line does not change.
1 parent 7034b2c commit 7c4659e

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

src/main/scala/scala/tools/partest/nest/AntRunner.scala

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@ abstract class AntRunner(srcDir: String, testClassLoader: URLClassLoader, javaCm
1919
failed = false,
2020
javaCmdPath = Option(javaCmd).map(_.getAbsolutePath) getOrElse PartestDefaults.javaCmd,
2121
javacCmdPath = Option(javacCmd).map(_.getAbsolutePath) getOrElse PartestDefaults.javacCmd,
22-
scalacExtraArgs = scalacArgs) {
23-
24-
for (jOpts <- javaOpts) System.setProperty("partest.java_opts", jOpts mkString " ")
22+
scalacExtraArgs = scalacArgs,
23+
javaOpts = javaOpts.map(_.mkString(" ")).getOrElse(PartestDefaults.javaOpts)) {
2524

2625
def error(msg: String): Nothing = sys.error(msg)
2726
def echo(msg: String): Unit

src/main/scala/scala/tools/partest/nest/Runner.scala

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ class Runner(val testFile: File, val suiteRunner: SuiteRunner) {
146146

147147
val testFullPath = testFile.getAbsolutePath
148148

149-
// Note! As this currently functions, PartestDefaults.javaOpts must precede argString
149+
// Note! As this currently functions, suiteRunner.javaOpts must precede argString
150150
// because when an option is repeated to java only the last one wins.
151151
// That means until now all the .javaopts files were being ignored because
152152
// they all attempt to change options which are also defined in
@@ -174,7 +174,7 @@ class Runner(val testFile: File, val suiteRunner: SuiteRunner) {
174174
val classpath = joinPaths(extraClasspath ++ testClassPath)
175175

176176
javaCmdPath +: (
177-
(PartestDefaults.javaOpts.split(' ') ++ extraJavaOptions ++ argString.split(' ')).map(_.trim).filter(_ != "").toList ++ Seq(
177+
(suiteRunner.javaOpts.split(' ') ++ extraJavaOptions ++ argString.split(' ')).map(_.trim).filter(_ != "").toList ++ Seq(
178178
"-classpath",
179179
join(outDir.toString, classpath)
180180
) ++ propertyOptions ++ Seq(
@@ -516,7 +516,7 @@ class Runner(val testFile: File, val suiteRunner: SuiteRunner) {
516516
if (NestUI._verbose) List("-verbose", "-noinput")
517517
else List("-noinput")
518518
val cmd = javaCmdPath +: (
519-
PartestDefaults.javaOpts.split(' ').map(_.trim).filter(_ != "") ++ Seq(
519+
suiteRunner.javaOpts.split(' ').map(_.trim).filter(_ != "") ++ Seq(
520520
"-classpath",
521521
antLauncher.path,
522522
"org.apache.tools.ant.launch.Launcher"
@@ -753,7 +753,8 @@ class SuiteRunner(
753753
val failed: Boolean,
754754
val javaCmdPath: String = PartestDefaults.javaCmd,
755755
val javacCmdPath: String = PartestDefaults.javacCmd,
756-
val scalacExtraArgs: Seq[String] = Seq.empty) {
756+
val scalacExtraArgs: Seq[String] = Seq.empty,
757+
val javaOpts: String = PartestDefaults.javaOpts) {
757758

758759
import PartestDefaults.{ numThreads, waitTime }
759760

@@ -775,7 +776,7 @@ class SuiteRunner(
775776
|Compilation Path: ${relativize(joinPaths(fileManager.testClassPath))}
776777
|Java binaries in: $vmBin
777778
|Java runtime is: $vmName
778-
|Java options are: ${PartestDefaults.javaOpts}
779+
|Java options are: $javaOpts
779780
|baseDir: $baseDir
780781
|sourceDir: ${PathSettings.srcDir}
781782
""".stripMargin

src/main/scala/scala/tools/partest/nest/SBTRunner.scala

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,26 @@ import TestState._
2424
// called reflectively from scala-partest-test-interface
2525
class SBTRunner(partestFingerprint: Fingerprint, eventHandler: EventHandler, loggers: Array[Logger],
2626
srcDir: String, testClassLoader: URLClassLoader, javaCmd: File, javacCmd: File, scalacArgs: Array[String], args: Array[String])
27-
extends AbstractRunner(args.mkString(" ")) {
27+
extends AbstractRunner(args.filter(a => !a.startsWith("-D")).mkString(" ")) {
2828

2929
// no summary, SBT will do that for us
3030
summarizing = true
3131

32+
val javaOpts = {
33+
val l = args.filter(_.startsWith("-Dpartest.java_opts=")).map(_.substring(20))
34+
if(l.isEmpty) PartestDefaults.javaOpts
35+
else l.mkString(" ")
36+
}
37+
3238
override val suiteRunner = new SuiteRunner(
3339
testSourcePath = Option(srcDir) getOrElse PartestDefaults.sourcePath,
3440
new FileManager(testClassLoader = testClassLoader),
3541
updateCheck = optUpdateCheck,
3642
failed = optFailed,
3743
javaCmdPath = Option(javaCmd).map(_.getAbsolutePath) getOrElse PartestDefaults.javaCmd,
3844
javacCmdPath = Option(javacCmd).map(_.getAbsolutePath) getOrElse PartestDefaults.javacCmd,
39-
scalacExtraArgs = scalacArgs) {
45+
scalacExtraArgs = scalacArgs,
46+
javaOpts = javaOpts) {
4047

4148
override def onFinishTest(testFile: File, result: TestState): TestState = {
4249
eventHandler.handle(new Event {

0 commit comments

Comments
 (0)