diff options
author | Paul Phillips <paulp@improving.org> | 2009-09-16 18:49:29 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2009-09-16 18:49:29 +0000 |
commit | 7c589dcde6cfff6010f2837bdd1d33459dec5f58 (patch) | |
tree | f116df4cc4b43ce19e724f35eb66dd3825a99756 /src | |
parent | d46bbd29eeff109485dd912c4c5acd95014276e2 (diff) | |
download | scala-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')
-rw-r--r-- | src/library/scala/util/ClassLoader.scala | 2 | ||||
-rw-r--r-- | src/partest/scala/tools/partest/nest/Worker.scala | 48 |
2 files changed, 28 insertions, 22 deletions
diff --git a/src/library/scala/util/ClassLoader.scala b/src/library/scala/util/ClassLoader.scala index 5663b5b74f..6458b0900c 100644 --- a/src/library/scala/util/ClassLoader.scala +++ b/src/library/scala/util/ClassLoader.scala @@ -55,7 +55,7 @@ trait ScalaClassLoader extends JavaClassLoader } } -class URLClassLoader(urls: List[URL], parent: JavaClassLoader) +class URLClassLoader(urls: Seq[URL], parent: JavaClassLoader) extends java.net.URLClassLoader(urls.toArray, parent) with ScalaClassLoader { 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") } }) |