diff options
-rwxr-xr-x | project/build/Partest.scala | 56 | ||||
-rw-r--r-- | src/partest/scala/tools/partest/nest/PathSettings.scala | 15 | ||||
-rw-r--r-- | src/partest/scala/tools/partest/nest/SBTRunner.scala | 12 | ||||
-rw-r--r-- | src/partest/scala/tools/partest/nest/Worker.scala | 2 |
4 files changed, 48 insertions, 37 deletions
diff --git a/project/build/Partest.scala b/project/build/Partest.scala index 5a6cdc2506..009064c005 100755 --- a/project/build/Partest.scala +++ b/project/build/Partest.scala @@ -29,24 +29,23 @@ class TestConfiguration(val library:Path, val classpath:Iterable[Path], val test trait PartestRunner{ self: BasicLayer with Packer => - import Partest.{runTest} + import Partest.runTest import TestSetType._ - - lazy val testRoot = projectRoot / "test" + lazy val testRoot = projectRoot / "test" lazy val testFiles = testRoot / "files" ## - lazy val testLibs = testFiles / "lib" + lazy val testLibs = testFiles / "lib" - lazy val posFilesTest = TestSet(Std,"pos", "Compiling files that are expected to build", testFiles / "pos" * ("*.scala" || DirectoryFilter)) - lazy val negFilesTest = TestSet(Std,"neg", "Compiling files that are expected to fail", testFiles / "neg" * ("*.scala" || DirectoryFilter)) - lazy val runFilesTest = TestSet(Std,"run", "Compiling and running files", testFiles / "run" ** ("*.scala" )) - lazy val jvmFilesTest = TestSet(Std,"jvm", "Compiling and running files", testFiles / "jvm" *("*.scala" || DirectoryFilter)) - lazy val resFilesTest = TestSet(Std,"res", "Running resident compiler scenarii", testFiles / "res" * ("*.res")) + lazy val posFilesTest = TestSet(Std,"pos", "Compiling files that are expected to build", testFiles / "pos" * ("*.scala" || DirectoryFilter)) + lazy val negFilesTest = TestSet(Std,"neg", "Compiling files that are expected to fail", testFiles / "neg" * ("*.scala" || DirectoryFilter)) + lazy val runFilesTest = TestSet(Std,"run", "Compiling and running files", testFiles / "run" ** ("*.scala" )) + lazy val jvmFilesTest = TestSet(Std,"jvm", "Compiling and running files", testFiles / "jvm" *("*.scala" || DirectoryFilter)) + lazy val resFilesTest = TestSet(Std,"res", "Running resident compiler scenarii", testFiles / "res" * ("*.res")) lazy val buildmanagerFilesTest = TestSet(Std,"buildmanager", "Running Build Manager scenarii", testFiles / "buildmanager" * DirectoryFilter) - lazy val scalacheckFilesTest = TestSet(Std,"scalacheck", "Running scalacheck tests", testFiles / "scalacheck" ** ("*.scala")) - lazy val scriptFilesTest = TestSet(Std,"script", "Running script files", testFiles / "script" * ("*.scala")) - lazy val shootoutFilesTest = TestSet(Std,"shootout", "Running shootout tests", testFiles / "shootout" * ("*.scala")) - lazy val scalapFilesTest = TestSet(Std,"scalap", "Running scalap tests", testFiles / "scalap" ** ("*.scala")) + lazy val scalacheckFilesTest = TestSet(Std,"scalacheck", "Running scalacheck tests", testFiles / "scalacheck" ** ("*.scala")) + lazy val scriptFilesTest = TestSet(Std,"script", "Running script files", testFiles / "script" * ("*.scala")) + lazy val shootoutFilesTest = TestSet(Std,"shootout", "Running shootout tests", testFiles / "shootout" * ("*.scala")) + lazy val scalapFilesTest = TestSet(Std,"scalap", "Running scalap tests", testFiles / "scalap" ** ("*.scala")) lazy val negContinuationTest = TestSet(Continuations,"neg", "Compiling continuations files that are expected to fail", testFiles / "continuations-neg" * ("*.scala" || DirectoryFilter)) lazy val runContinuationTest = TestSet(Continuations,"run", "Compiling and running continuations files", testFiles / "continuations-run" ** ("*.scala" )) @@ -63,7 +62,7 @@ trait PartestRunner{ private lazy val partestCompletionList = filesTestMap.keys.toList:::partestOptions:::filesTestMap.values.toList.flatMap{_.files.map(_.toString.substring(testFiles.asFile.toString.length+1))} - private def runPartest(tests:List[TestSet],scalacOpts:Option[String], failedOnly:Boolean) = { + private def runPartest(tests:List[TestSet],scalacOpts:Option[String], failedOnly:Boolean) = { val config = new TestConfiguration( outputLibraryJar, @@ -74,14 +73,23 @@ trait PartestRunner{ ) val javaHome = Path.fromFile(new File(System.getProperty("java.home"))) - val java = javaHome / "bin" / "java" - val javac = javaHome/"bin"/"javac" + val java = Some(javaHome / "bin" / "java" asFile) + val javac = Some(javaHome / "bin" / "javac" asFile) + val timeout = Some("2400000") + val loader = info.launcher.topLoader + val isDebug = info.logger atLevel Level.Debug + log.debug("Ready to run tests") - if (tests.isEmpty){ + + if (tests.isEmpty) { log.debug("Empty test list") None - }else - runTest(info.launcher.topLoader,config,Some(java.asFile),Some(javac.asFile),scalacOpts,Some("2400000"), true,true,failedOnly,true,false,log) + } + else runTest( + loader, config, java, javac, + scalacOpts, timeout, true, true, + failedOnly, true, isDebug, log + ) } lazy val externalPartest = task {args => task { @@ -107,7 +115,7 @@ trait PartestRunner{ - def resolveSets(l:List[String],rem:List[String],acc:List[TestSet]):(List[String],List[TestSet]) = { + def resolveSets(l:List[String],rem:List[String],acc:List[TestSet]): (List[String], List[TestSet]) = { def searchSet(arg:String):Option[TestSet] = { filesTestMap.get(arg) } @@ -202,7 +210,7 @@ object Partest { setMethod.invoke(fileManager, Array(value).asInstanceOf[Array[Object]]: _*) } - System.setProperty("partest.srcdir",config.testRoot.absolutePath) + // System.setProperty("partest.srcdir", "files") setFileManagerBooleanProperty("showDiff", showDiff) setFileManagerBooleanProperty("showLog", showLog) @@ -213,10 +221,8 @@ object Partest { setFileManagerStringProperty("JAVAC_CMD", "javac") setFileManagerStringProperty("CLASSPATH",(config.classpath.map(_.absolutePath).mkString(File.pathSeparator))) setFileManagerStringProperty("LATEST_LIB", config.library.absolutePath) - scalacOpts match { - case None => setFileManagerStringProperty("SCALAC_OPTS","") - case Some(options) => setFileManagerStringProperty("SCALAC_OPTS",options) - } + setFileManagerStringProperty("SCALAC_OPTS", scalacOpts getOrElse "") + if (!timeout.isEmpty) setFileManagerStringProperty("timeout", timeout.get) diff --git a/src/partest/scala/tools/partest/nest/PathSettings.scala b/src/partest/scala/tools/partest/nest/PathSettings.scala index fd8eb4cdfa..5ae1ed05ce 100644 --- a/src/partest/scala/tools/partest/nest/PathSettings.scala +++ b/src/partest/scala/tools/partest/nest/PathSettings.scala @@ -32,17 +32,22 @@ object PathSettings { lazy val srcLibDir = Directory(srcDir / "lib") // Directory <root>/build - lazy val buildDir = Directory("build") + lazy val buildDir: Directory = { + val bases = testRoot :: testRoot.parents + // In the classic "ant" build, the relevant subdirectory is called build, + // but in the postmodern "sbt" build, it is called target. Look for both. + val dirs = Path.onlyDirs(bases flatMap (x => List(x / "build", x / "target"))) + + dirs.headOption getOrElse error("Neither 'build' nor 'target' dir found under test root " + testRoot + ".") + } // Directory <root>/build/pack/lib lazy val buildPackLibDir = Directory(buildDir / "pack" / "lib") - lazy val scalaCheck = { - (buildPackLibDir.files find (_.name startsWith "scalacheck")) orElse - (srcLibDir.files find (_.name startsWith "scalacheck")) getOrElse { + lazy val scalaCheck: File = + buildPackLibDir.files ++ srcLibDir.files find (_.name startsWith "scalacheck") getOrElse { error("No scalacheck jar found in '%s' or '%s'".format(buildPackLibDir, srcLibDir)) } - } } class PathSettings() { diff --git a/src/partest/scala/tools/partest/nest/SBTRunner.scala b/src/partest/scala/tools/partest/nest/SBTRunner.scala index 6a908af1bf..299296b01d 100644 --- a/src/partest/scala/tools/partest/nest/SBTRunner.scala +++ b/src/partest/scala/tools/partest/nest/SBTRunner.scala @@ -8,12 +8,12 @@ import scala.tools.nsc.io.{ Directory } class SBTRunner extends DirectRunner { val fileManager = new FileManager { - var JAVACMD: String = "java" - var JAVAC_CMD: String = "javac" - var CLASSPATH: String = _ - var LATEST_LIB: String = _ - val testRootPath: String = "test" - val testRootDir: Directory = Directory(testRootPath) + var JAVACMD: String = "java" + var JAVAC_CMD: String = "javac" + var CLASSPATH: String = _ + var LATEST_LIB: String = _ + val testRootPath: String = PathSettings.testRoot.path + val testRootDir: Directory = PathSettings.testRoot } def reflectiveRunTestsForFiles(kindFiles: Array[File], kind: String):java.util.HashMap[String,Int] = { diff --git a/src/partest/scala/tools/partest/nest/Worker.scala b/src/partest/scala/tools/partest/nest/Worker.scala index 623a7a9674..c719dc9709 100644 --- a/src/partest/scala/tools/partest/nest/Worker.scala +++ b/src/partest/scala/tools/partest/nest/Worker.scala @@ -50,7 +50,7 @@ class ScalaCheckFileManager(val origmanager: FileManager) extends FileManager { var JAVACMD: String = origmanager.JAVACMD var JAVAC_CMD: String = origmanager.JAVAC_CMD - var CLASSPATH: String = origmanager.CLASSPATH + java.io.File.pathSeparator + PathSettings.scalaCheck + var CLASSPATH: String = join(origmanager.CLASSPATH, PathSettings.scalaCheck.path) var LATEST_LIB: String = origmanager.LATEST_LIB } |