@@ -27,29 +27,8 @@ class Framework extends sbt.testing.Framework {
27
27
/** Represents one run of a suite of tests.
28
28
*/
29
29
case class Runner (args : Array [String ], remoteArgs : Array [String ], testClassLoader : ClassLoader ) extends sbt.testing.Runner {
30
- /** Returns an array of tasks that when executed will run tests and suites determined by the
31
- * passed <code>TaskDef</code>s.
32
- *
33
- * <p>
34
- * Each returned task, when executed, will run tests and suites determined by the
35
- * test class name, fingerprints, "explicitly specified" field, and selectors of one of the passed <code>TaskDef</code>s.
36
- * </p>
37
- *
38
- * <p>
39
- * This <code>tasks</code> method may be called with <code>TaskDef</code>s containing the same value for <code>testClassName</code> but
40
- * different fingerprints. For example, if both a class and its companion object were test classes, the <code>tasks</code> method could be
41
- * passed an array containing <code>TaskDef</code>s with the same name but with a different value for <code>fingerprint.isModule</code>.
42
- * </p>
43
- *
44
- * <p>
45
- * A test framework may "reject" a requested task by returning no <code>Task</code> for that <code>TaskDef</code>.
46
- * </p>
47
- *
48
- * @param taskDefs the <code>TaskDef</code>s for requested tasks
49
- * @return an array of <code>Task</code>s
50
- * @throws IllegalStateException if invoked after <code>done</code> has been invoked.
51
- */
52
- def tasks (taskDefs : Array [TaskDef ]): Array [sbt.testing.Task ] = taskDefs map (SbtPartestTask (_): sbt.testing.Task )
30
+
31
+ def tasks (taskDefs : Array [TaskDef ]): Array [sbt.testing.Task ] = taskDefs map (SbtPartestTask (_, args): sbt.testing.Task )
53
32
54
33
/** Indicates the client is done with this <code>Runner</code> instance.
55
34
*
@@ -59,20 +38,18 @@ case class Runner(args: Array[String], remoteArgs: Array[String], testClassLoade
59
38
}
60
39
61
40
/** Run partest in this VM. Assumes we're running in a forked VM!
62
- *
63
- * TODO: make configurable
64
41
*/
65
- case class SbtPartestTask (taskDef : TaskDef ) extends Task {
42
+ case class SbtPartestTask (taskDef : TaskDef , args : Array [ String ] ) extends Task {
66
43
/** Executes this task, possibly returning to the client new tasks to execute. */
67
44
def execute (eventHandler : EventHandler , loggers : Array [Logger ]): Array [Task ] = {
68
45
val forkedCp = scala.util.Properties .javaClassPath
69
46
val classLoader = new URLClassLoader (forkedCp.split(java.io.File .pathSeparator).map(new File (_).toURI.toURL))
70
- val runner = SBTRunner (Framework .fingerprint, eventHandler, loggers, " files" , classLoader, null , null , Array .empty[String ])
47
+ val runner = SBTRunner (Framework .fingerprint, eventHandler, loggers, " files" , classLoader, null , null , Array .empty[String ], args )
71
48
72
49
if (Runtime .getRuntime().maxMemory() / (1024 * 1024 ) < 800 )
73
50
loggers foreach (_.warn(s """ Low heap size detected (~ ${Runtime .getRuntime().maxMemory() / (1024 * 1024 )}M). Please add the following to your build.sbt: javaOptions in Test += "-Xmx1G" """ ))
74
51
75
- try runner execute Array ( " scalacheck " , " instrumented " , " pos " , " neg " , " run" , " jvm " , " res " , " scalap " , " specialized " , " presentation " )
52
+ try runner run
76
53
catch {
77
54
case ex : ClassNotFoundException =>
78
55
loggers foreach { l => l.error(" Please make sure partest is running in a forked VM by including the following line in build.sbt:\n fork in Test := true" ) }
@@ -82,13 +59,13 @@ case class SbtPartestTask(taskDef: TaskDef) extends Task {
82
59
Array ()
83
60
}
84
61
85
- type SBTRunner = { def execute ( kinds : Array [ String ] ): String }
62
+ type SBTRunner = { def run ( ): Unit }
86
63
87
64
// use reflection to instantiate scala.tools.partest.nest.SBTRunner,
88
65
// casting to the structural type SBTRunner above so that method calls on the result will be invoked reflectively as well
89
- private def SBTRunner (partestFingerprint : Fingerprint , eventHandler : EventHandler , loggers : Array [Logger ], srcDir : String , testClassLoader : URLClassLoader , javaCmd : File , javacCmd : File , scalacArgs : Array [String ]): SBTRunner = {
66
+ private def SBTRunner (partestFingerprint : Fingerprint , eventHandler : EventHandler , loggers : Array [Logger ], srcDir : String , testClassLoader : URLClassLoader , javaCmd : File , javacCmd : File , scalacArgs : Array [String ], args : Array [ String ] ): SBTRunner = {
90
67
val runnerClass = Class .forName(" scala.tools.partest.nest.SBTRunner" )
91
- runnerClass.getConstructors()(0 ).newInstance(partestFingerprint, eventHandler, loggers, srcDir, testClassLoader, javaCmd, javacCmd, scalacArgs).asInstanceOf [SBTRunner ]
68
+ runnerClass.getConstructors()(0 ).newInstance(partestFingerprint, eventHandler, loggers, srcDir, testClassLoader, javaCmd, javacCmd, scalacArgs, args ).asInstanceOf [SBTRunner ]
92
69
}
93
70
94
71
/** A possibly zero-length array of string tags associated with this task. */
0 commit comments