summaryrefslogtreecommitdiff
path: root/src/partest
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2008-09-09 14:51:28 +0000
committerPhilipp Haller <hallerp@gmail.com>2008-09-09 14:51:28 +0000
commit0e766517047ce861f0064f5ebd1745d9b3e0ba2a (patch)
tree1f84006244709399db39a23ff2d732f044c5d86e /src/partest
parent6be73f6e951bbc1ddf93e10980b91f5ec3215836 (diff)
downloadscala-0e766517047ce861f0064f5ebd1745d9b3e0ba2a.tar.gz
scala-0e766517047ce861f0064f5ebd1745d9b3e0ba2a.tar.bz2
scala-0e766517047ce861f0064f5ebd1745d9b3e0ba2a.zip
Added support for ScalaCheck tests.
Diffstat (limited to 'src/partest')
-rw-r--r--src/partest/scala/tools/partest/nest/CompileManager.scala2
-rw-r--r--src/partest/scala/tools/partest/nest/ConsoleFileManager.scala2
-rw-r--r--src/partest/scala/tools/partest/nest/ConsoleRunner.scala8
-rw-r--r--src/partest/scala/tools/partest/nest/FileManager.scala1
-rw-r--r--src/partest/scala/tools/partest/nest/TestFile.scala7
-rw-r--r--src/partest/scala/tools/partest/nest/Worker.scala37
6 files changed, 56 insertions, 1 deletions
diff --git a/src/partest/scala/tools/partest/nest/CompileManager.scala b/src/partest/scala/tools/partest/nest/CompileManager.scala
index 89a6b87802..29981bcac4 100644
--- a/src/partest/scala/tools/partest/nest/CompileManager.scala
+++ b/src/partest/scala/tools/partest/nest/CompileManager.scala
@@ -78,6 +78,8 @@ class DirectCompiler(val fileManager: FileManager) extends SimpleCompiler {
case "jvm" => JvmTestFile(files(0), fileManager, out.isEmpty)
case "jvm5" => Jvm5TestFile(files(0), fileManager, out.isEmpty)
case "shootout" => ShootoutTestFile(files(0), fileManager, out.isEmpty)
+ case "scalacheck" =>
+ ScalaCheckTestFile(files(0), fileManager, out.isEmpty)
}
test.defineSettings(testSettings)
out match {
diff --git a/src/partest/scala/tools/partest/nest/ConsoleFileManager.scala b/src/partest/scala/tools/partest/nest/ConsoleFileManager.scala
index 16493b8f63..224bbc5aa9 100644
--- a/src/partest/scala/tools/partest/nest/ConsoleFileManager.scala
+++ b/src/partest/scala/tools/partest/nest/ConsoleFileManager.scala
@@ -86,6 +86,8 @@ else
}
val TESTROOT = testRootFile.getAbsolutePath
+ LIB_DIR = (new File(testRootFile.getParentFile, "lib")).getCanonicalFile.getAbsolutePath
+
CLASSPATH = CLASSPATH + File.pathSeparator + {
val libs = new File(TESTROOT, "files/lib")
// add all jars in libs
diff --git a/src/partest/scala/tools/partest/nest/ConsoleRunner.scala b/src/partest/scala/tools/partest/nest/ConsoleRunner.scala
index b43f430f4a..5f89e029a4 100644
--- a/src/partest/scala/tools/partest/nest/ConsoleRunner.scala
+++ b/src/partest/scala/tools/partest/nest/ConsoleRunner.scala
@@ -25,6 +25,7 @@ class ConsoleRunner extends DirectRunner with RunnerUtils {
private var resCheck = false
private var shootoutCheck = false
private var scriptCheck = false
+ private var scalacheckCheck = false
private var runAll = false
@@ -43,6 +44,7 @@ class ConsoleRunner extends DirectRunner with RunnerUtils {
case "--res" => true
case "--shootout" => true
case "--script" => true
+ case "--scalacheck" => true
case _ => false
}
@@ -95,6 +97,7 @@ class ConsoleRunner extends DirectRunner with RunnerUtils {
case "--res" => resCheck = true
case "--shootout" => shootoutCheck = true
case "--script" => scriptCheck = true
+ case "--scalacheck" => scalacheckCheck = true
case "--verbose" => NestUI._verbose = true
case "--show-diff" => fileManager.showDiff = true
@@ -216,6 +219,7 @@ class ConsoleRunner extends DirectRunner with RunnerUtils {
else short match {
case "sho" => "shootout"
case "scr" => "script"
+ case "sca" => "scalacheck"
}
}
}
@@ -240,6 +244,7 @@ class ConsoleRunner extends DirectRunner with RunnerUtils {
resCheck = true
shootoutCheck = true
scriptCheck = true
+ scalacheckCheck = true
}
val results = List(runTestsFiles,
runTests("pos", posCheck, "Testing compiler (on files whose compilation should succeed)"),
@@ -249,7 +254,8 @@ class ConsoleRunner extends DirectRunner with RunnerUtils {
runTests("jvm5", jvm5Check, "Testing JVM backend"),
runTests("res", resCheck, "Testing resident compiler"),
runTests("shootout", shootoutCheck, "Testing shootout tests"),
- runTests("script", scriptCheck, "Testing script tests"))
+ runTests("script", scriptCheck, "Testing script tests"),
+ runTests("scalacheck", scalacheckCheck, "Testing ScalaCheck tests"))
results reduceLeft { (p: (Int, Int), q: (Int, Int)) =>
(p._1+q._1, p._2+q._2) }
}
diff --git a/src/partest/scala/tools/partest/nest/FileManager.scala b/src/partest/scala/tools/partest/nest/FileManager.scala
index a780e8050a..d58616c6c8 100644
--- a/src/partest/scala/tools/partest/nest/FileManager.scala
+++ b/src/partest/scala/tools/partest/nest/FileManager.scala
@@ -53,6 +53,7 @@ trait FileManager {
var CLASSPATH: String
var LATEST_LIB: String
+ var LIB_DIR: String = ""
var showDiff = false
var showLog = false
diff --git a/src/partest/scala/tools/partest/nest/TestFile.scala b/src/partest/scala/tools/partest/nest/TestFile.scala
index 6cc574c1b6..f577c79705 100644
--- a/src/partest/scala/tools/partest/nest/TestFile.scala
+++ b/src/partest/scala/tools/partest/nest/TestFile.scala
@@ -71,6 +71,13 @@ case class RunTestFile(override val file: File, override val fileManager: FileMa
}
}
+case class ScalaCheckTestFile(override val file: File, override val fileManager: FileManager, createOutDir: Boolean) extends TestFile("scalacheck", file, fileManager, createOutDir) {
+ override def defineSettings(settings: Settings) {
+ baseSettings(settings)
+ settings.classpath.value = fileManager.CLASSPATH
+ }
+}
+
case class JvmTestFile(override val file: File, override val fileManager: FileManager, createOutDir: Boolean) extends TestFile("jvm", file, fileManager, createOutDir) {
override def defineSettings(settings: Settings) {
baseSettings(settings)
diff --git a/src/partest/scala/tools/partest/nest/Worker.scala b/src/partest/scala/tools/partest/nest/Worker.scala
index 25c68bfa48..d0a11b0654 100644
--- a/src/partest/scala/tools/partest/nest/Worker.scala
+++ b/src/partest/scala/tools/partest/nest/Worker.scala
@@ -410,6 +410,43 @@ class Worker(val fileManager: FileManager) extends Actor {
}
kind match {
+ case "scalacheck" => for (file <- files)
+ runInContext(file, kind, (logFile: File, outDir: File) => {
+ if (file.isDirectory) {
+ compileFilesIn(file, kind, logFile, outDir)
+ } else if (!compileMgr.shouldCompile(List(file), kind, logFile)) {
+ NestUI.verbose("compilation of "+file+" failed\n")
+ succeeded = false
+ }
+ if (succeeded) {
+ 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 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)
+
+ (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")
+ }
+ }
+ })
case "pos" => for (file <- files)
runInContext(file, kind, (logFile: File, outDir: File) => {
if (file.isDirectory) {