summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/partest/scala/tools/partest/nest/DirectRunner.scala7
-rw-r--r--src/partest/scala/tools/partest/nest/Worker.scala26
-rw-r--r--src/scalacheck/org/scalacheck/Test.scala4
3 files changed, 20 insertions, 17 deletions
diff --git a/src/partest/scala/tools/partest/nest/DirectRunner.scala b/src/partest/scala/tools/partest/nest/DirectRunner.scala
index f774320f4e..6875b3794e 100644
--- a/src/partest/scala/tools/partest/nest/DirectRunner.scala
+++ b/src/partest/scala/tools/partest/nest/DirectRunner.scala
@@ -12,6 +12,7 @@ import java.io.{File, PrintStream, FileOutputStream, BufferedReader,
InputStreamReader, StringWriter, PrintWriter}
import java.util.StringTokenizer
import scala.util.Properties.{ setProp }
+import scala.tools.nsc.util.ScalaClassLoader
import scala.tools.nsc.io.Directory
import scala.actors.Actor._
@@ -35,9 +36,13 @@ trait DirectRunner {
val len = kindFiles.length
val (testsEach, lastFrag) = (len/numActors, len%numActors)
val last = numActors-1
+ val consFM = new ConsoleFileManager
+ import consFM.{ latestCompFile, latestLibFile, latestPartestFile }
+ val scalacheckURL = PathSettings.scalaCheck.toURL
+ val scalaCheckParentClassLoader = ScalaClassLoader.fromURLs(List(scalacheckURL, latestCompFile.toURI.toURL, latestLibFile.toURI.toURL, latestPartestFile.toURI.toURL))
val workers = for (i <- List.range(0, numActors)) yield {
val toTest = kindFiles.slice(i*testsEach, (i+1)*testsEach)
- val worker = new Worker(fileManager)
+ val worker = new Worker(fileManager, scalaCheckParentClassLoader)
worker.start()
if (i == last)
worker ! RunTests(kind, (kindFiles splitAt (last*testsEach))._2)
diff --git a/src/partest/scala/tools/partest/nest/Worker.scala b/src/partest/scala/tools/partest/nest/Worker.scala
index 57ab056cd6..1a6e2bd30e 100644
--- a/src/partest/scala/tools/partest/nest/Worker.scala
+++ b/src/partest/scala/tools/partest/nest/Worker.scala
@@ -16,7 +16,7 @@ import scala.util.Properties.{ isWin }
import scala.tools.nsc.{ ObjectRunner, Settings, CompilerCommand, Global }
import scala.tools.nsc.io.{ AbstractFile, PlainFile, Path, Directory, File => SFile }
import scala.tools.nsc.reporters.ConsoleReporter
-import scala.tools.nsc.util.{ ClassPath, FakePos }
+import scala.tools.nsc.util.{ ClassPath, FakePos, ScalaClassLoader }
import ClassPath.{ join, split }
import scala.actors.{ Actor, Exit, TIMEOUT }
@@ -54,7 +54,7 @@ class ScalaCheckFileManager(val origmanager: FileManager) extends FileManager {
var LATEST_LIB: String = origmanager.LATEST_LIB
}
-class Worker(val fileManager: FileManager) extends Actor {
+class Worker(val fileManager: FileManager, scalaCheckParentClassLoader: ScalaClassLoader) extends Actor {
import fileManager._
val scalaCheckFileManager = new ScalaCheckFileManager(fileManager)
@@ -462,29 +462,27 @@ class Worker(val fileManager: FileManager) extends Actor {
def processSingleFile(file: File): LogContext = kind match {
case "scalacheck" =>
runTestCommon(file, kind, expectFailure = false)((logFile, outDir) => {
- val consFM = new ConsoleFileManager
- import consFM.{ latestCompFile, latestLibFile, latestPartestFile }
-
NestUI.verbose("compilation of "+file+" succeeded\n")
- val scalacheckURL = PathSettings.scalaCheck.toURL
val outURL = outDir.getCanonicalFile.toURI.toURL
- val classpath: List[URL] =
- List(outURL, scalacheckURL, latestCompFile.toURI.toURL, latestLibFile.toURI.toURL, latestPartestFile.toURI.toURL).distinct
-
- NestUI.debug("scalacheck urls")
- classpath foreach (x => NestUI.debug(x.toString))
val logWriter = new PrintStream(new FileOutputStream(logFile))
withOutputRedirected(logWriter) {
- ObjectRunner.run(classpath, "Test", Nil)
+ // this classloader is test specific
+ // its parent contains library classes and others
+ val classloader = ScalaClassLoader.fromURLs(List(outURL), scalaCheckParentClassLoader)
+ classloader.run("Test", Nil)
}
NestUI.verbose(SFile(logFile).slurp())
// obviously this must be improved upon
- succeeded =
- SFile(logFile).lines.filter(_.trim != "") filter (_ contains "+") forall (_ contains "OK")
+ succeeded = {
+ val lines = SFile(logFile).lines.filter(_.trim != "").toBuffer
+ val failures = lines filter (_ startsWith "!")
+ val passedok = lines filter (_ startsWith "+") forall (_ contains "OK")
+ failures.isEmpty && passedok
+ }
})
case "pos" =>
diff --git a/src/scalacheck/org/scalacheck/Test.scala b/src/scalacheck/org/scalacheck/Test.scala
index 98d4d37163..3261862062 100644
--- a/src/scalacheck/org/scalacheck/Test.scala
+++ b/src/scalacheck/org/scalacheck/Test.scala
@@ -156,8 +156,8 @@ object Test {
* the test results. */
def check(prms: Params, p: Prop): Result = {
import prms._
- //import actors.Futures.future
- import scala.concurrent.ops.future
+ import actors.Futures.future
+ //import scala.concurrent.ops.future
assertParams(prms)
if(workers > 1)