mirror of https://github.com/sbt/sbt.git
Added code to call Runner's done() method in both InProcess and SubProcess cases.
This commit is contained in:
parent
244e65cd79
commit
f38a244d0f
|
|
@ -15,7 +15,7 @@ package sbt
|
||||||
import complete._
|
import complete._
|
||||||
import std.TaskExtra._
|
import std.TaskExtra._
|
||||||
import inc.{FileValueCache, Locate}
|
import inc.{FileValueCache, Locate}
|
||||||
import testing.{Framework, AnnotatedFingerprint, SubclassFingerprint}
|
import testing.{Framework, Runner, AnnotatedFingerprint, SubclassFingerprint}
|
||||||
|
|
||||||
import sys.error
|
import sys.error
|
||||||
import scala.xml.NodeSeq
|
import scala.xml.NodeSeq
|
||||||
|
|
@ -478,7 +478,11 @@ object Defaults extends BuildCommon
|
||||||
Tests(frameworks, loader, runners, tests, config, s.log)
|
Tests(frameworks, loader, runners, tests, config, s.log)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Tests.foldTasks(groupTasks, config.parallel)
|
val output = Tests.foldTasks(groupTasks, config.parallel)
|
||||||
|
runners foreach { case (tf, r) =>
|
||||||
|
r.done()
|
||||||
|
}
|
||||||
|
output
|
||||||
}
|
}
|
||||||
|
|
||||||
def selectedFilter(args: Seq[String]): Seq[String => Boolean] =
|
def selectedFilter(args: Seq[String]): Seq[String => Boolean] =
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
scalaVersion := "2.10.1"
|
||||||
|
|
||||||
|
libraryDependencies += "org.scalatest" %% "scalatest" % "2.0.M6-SNAP15"
|
||||||
|
|
||||||
|
testOptions in Test += Tests.Argument("-r", "custom.CustomReporter")
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
package custom
|
||||||
|
|
||||||
|
import java.io._
|
||||||
|
import org.scalatest._
|
||||||
|
import events._
|
||||||
|
|
||||||
|
class CustomReporter extends ResourcefulReporter {
|
||||||
|
|
||||||
|
private def writeFile(filePath: String, content: String) {
|
||||||
|
val file = new File(filePath)
|
||||||
|
val writer =
|
||||||
|
if (!file.exists)
|
||||||
|
new FileWriter(new File(filePath))
|
||||||
|
else
|
||||||
|
new FileWriter(new File(filePath + "-2"))
|
||||||
|
writer.write(content)
|
||||||
|
writer.flush()
|
||||||
|
writer.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
def apply(event: Event) {
|
||||||
|
event match {
|
||||||
|
case runCompleted: RunCompleted => writeFile("target/RunCompleted", "RunCompleted")
|
||||||
|
case _ =>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def dispose() {
|
||||||
|
val file = new File("target/dispose")
|
||||||
|
val filePath =
|
||||||
|
if (file.exists)
|
||||||
|
"target/dispose2"
|
||||||
|
else
|
||||||
|
"target/dispose"
|
||||||
|
writeFile(filePath, "dispose")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.test
|
||||||
|
|
||||||
|
import org.scalatest.Spec
|
||||||
|
|
||||||
|
class TestSpec extends Spec {
|
||||||
|
|
||||||
|
def `TestSpec-test-1 ` {}
|
||||||
|
|
||||||
|
def `TestSpec-test-2 ` {}
|
||||||
|
|
||||||
|
def `TestSpec-test-3 ` {}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.test
|
||||||
|
|
||||||
|
import org.scalatest.Spec
|
||||||
|
|
||||||
|
class TestSpec2 extends Spec {
|
||||||
|
|
||||||
|
def `TestSpec2-test-1 ` {}
|
||||||
|
|
||||||
|
def `TestSpec2-test-2 ` {}
|
||||||
|
|
||||||
|
def `TestSpec2-test-3 ` {}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
#Test the framework will call Runner.done once.
|
||||||
|
#Because ScalaTest's runner will report RunCompleted when the run completed, a CustomReporter is
|
||||||
|
#used to report expected ScalaTest's RunCompleted event by writing out to target/, it is then
|
||||||
|
#used to check for their existence, and if the expected event is fired > 1 (which is unexpected),
|
||||||
|
#a xxxx-2 file will be written, thus here we also check for 'absent' of such file.
|
||||||
|
#ResourcefulReporter's dispose method will be called in Runner.done also, and it should be called
|
||||||
|
#once only.
|
||||||
|
|
||||||
|
> clean
|
||||||
|
|
||||||
|
> test
|
||||||
|
|
||||||
|
$ exists target/RunCompleted
|
||||||
|
|
||||||
|
$ absent target/RunCompleted-2
|
||||||
|
|
||||||
|
$ exists target/dispose
|
||||||
|
|
||||||
|
$ absent target/dispose2
|
||||||
|
|
@ -212,6 +212,7 @@ public class ForkMain {
|
||||||
final Runner runner = framework.runner(frameworkArgs, remoteFrameworkArgs, getClass().getClassLoader());
|
final Runner runner = framework.runner(frameworkArgs, remoteFrameworkArgs, getClass().getClassLoader());
|
||||||
for (ForkTestDefinition test : filteredTests)
|
for (ForkTestDefinition test : filteredTests)
|
||||||
runTestSafe(test, runner, loggers, os);
|
runTestSafe(test, runner, loggers, os);
|
||||||
|
runner.done();
|
||||||
}
|
}
|
||||||
write(os, ForkTags.Done);
|
write(os, ForkTags.Done);
|
||||||
is.readObject();
|
is.readObject();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue