summaryrefslogtreecommitdiff
path: root/src/partest
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-09-16 18:49:29 +0000
committerPaul Phillips <paulp@improving.org>2009-09-16 18:49:29 +0000
commit7c589dcde6cfff6010f2837bdd1d33459dec5f58 (patch)
treef116df4cc4b43ce19e724f35eb66dd3825a99756 /src/partest
parentd46bbd29eeff109485dd912c4c5acd95014276e2 (diff)
downloadscala-7c589dcde6cfff6010f2837bdd1d33459dec5f58.tar.gz
scala-7c589dcde6cfff6010f2837bdd1d33459dec5f58.tar.bz2
scala-7c589dcde6cfff6010f2837bdd1d33459dec5f58.zip
The first working scalacheck test! Now Arbitrar...
The first working scalacheck test! Now Arbitrary is working for us instead of our nemesis Capt. Entropy.
Diffstat (limited to 'src/partest')
-rw-r--r--src/partest/scala/tools/partest/nest/Worker.scala48
1 files changed, 27 insertions, 21 deletions
diff --git a/src/partest/scala/tools/partest/nest/Worker.scala b/src/partest/scala/tools/partest/nest/Worker.scala
index 0473955ed9..e48be3da7b 100644
--- a/src/partest/scala/tools/partest/nest/Worker.scala
+++ b/src/partest/scala/tools/partest/nest/Worker.scala
@@ -13,6 +13,7 @@ import java.net.{URLClassLoader, URL}
import java.util.{Timer, TimerTask}
import scala.tools.nsc.{ObjectRunner, GenericRunnerCommand}
+import scala.tools.nsc.io
import scala.actors.{Actor, Exit, TIMEOUT}
import scala.actors.Actor._
@@ -462,32 +463,37 @@ class Worker(val fileManager: FileManager) extends Actor {
succeeded = false
}
if (succeeded) {
+ val consFM = new ConsoleFileManager
+ import consFM.{latestCompFile, latestLibFile, latestActFile,
+ latestPartestFile}
+
NestUI.verbose("compilation of "+file+" succeeded\n")
val libs = new File(fileManager.LIB_DIR)
- val urls = List((new File(libs, "ScalaCheck.jar")).toURL,
- (new File(libs, "ScalaCheckHelper.jar")).toURL)
+ val scalacheckURL = new File(libs, "ScalaCheck.jar") toURL
val outURL = outDir.getCanonicalFile.toURL
- val urlArr = (outURL :: urls).toArray
- NestUI.verbose("loading classes from:")
- urlArr foreach {url => NestUI.verbose(url.toString)}
- val loader = new java.net.URLClassLoader(urlArr, fileManager.getClass.getClassLoader)
+ val classpath: List[URL] =
+ List(outURL, scalacheckURL, latestCompFile.toURL, latestLibFile.toURL,
+ latestActFile.toURL, latestPartestFile.toURL).removeDuplicates
- (try {
- Some(Class.forName("ScalaCheckHelper", true, loader))
- } catch {
- case se: SecurityException => None
- case cnfe: ClassNotFoundException => None
- }) match {
- case None =>
- NestUI.verbose("cannot find ScalaCheckHelper class")
- succeeded = false
- case Some(clazz) =>
- val method = clazz.getMethod("passed", Array(classOf[File], classOf[Array[URL]]): _*)
- val res = method.invoke(null, Array(logFile, urlArr): _*).asInstanceOf[String]
- NestUI.verbose("ScalaCheck result: "+res)
- succeeded = res.equals("ok")
- }
+ // XXX this is a big cut-and-paste mess, but the revamp is coming
+ val logOut = new FileOutputStream(logFile)
+ val logWriter = new PrintStream(logOut)
+ val oldStdOut = System.out
+ val oldStdErr = System.err
+ System.setOut(logWriter)
+ System.setErr(logWriter)
+
+ ObjectRunner.run(classpath, "Test", Nil)
+
+ logWriter.flush()
+ logWriter.close()
+ System.setOut(oldStdOut)
+ System.setErr(oldStdErr)
+
+ NestUI.verbose(io.File(logFile).slurp())
+ // obviously this must be improved upon
+ succeeded = io.File(logFile).lines() forall (_ contains " OK")
}
})