diff options
author | vsalvis <salvisbergvera@gmail.com> | 2015-05-13 14:41:21 +0200 |
---|---|---|
committer | vsalvis <salvisbergvera@gmail.com> | 2015-05-22 11:12:44 +0200 |
commit | 12f7dcba50671361f3de04d3a23b049f74a79280 (patch) | |
tree | 38d5cafc1e9b3b6e8374ce7e14f2a944c00a396f /test | |
parent | 9fff1ac663f80a0477a2464216c608dc2ecd81b0 (diff) | |
download | dotty-12f7dcba50671361f3de04d3a23b049f74a79280.tar.gz dotty-12f7dcba50671361f3de04d3a23b049f74a79280.tar.bz2 dotty-12f7dcba50671361f3de04d3a23b049f74a79280.zip |
Added partest-only sbt target and less verbose file generation
Diffstat (limited to 'test')
-rw-r--r-- | test/test/CompilerTest.scala | 56 |
1 files changed, 33 insertions, 23 deletions
diff --git a/test/test/CompilerTest.scala b/test/test/CompilerTest.scala index a712cb4a0..36a1b9d34 100644 --- a/test/test/CompilerTest.scala +++ b/test/test/CompilerTest.scala @@ -61,14 +61,13 @@ abstract class CompilerTest extends DottyTest { new JFile("." + JFile.separator + "tests" + JFile.separator + "locks" + JFile.separator + s"partest-$pid.lock").exists } - // Delete generated files from previous run - if (generatePartestFiles) - CompilerTest.init + // Delete generated files from previous run and create new log + val logFile = if (!generatePartestFiles) None else Some(CompilerTest.init) /** Always run with JUnit. */ def compileLine(cmdLine: String, xerrors: Int = 0)(implicit defaultOptions: List[String]): Unit = { if (generatePartestFiles) - NestUI.echoWarning("WARNING: compileLine will always run with JUnit, no partest files generated.") + log("WARNING: compileLine will always run with JUnit, no partest files generated.") compileArgs(cmdLine.split("\n"), xerrors) } @@ -87,11 +86,11 @@ abstract class CompilerTest extends DottyTest { (implicit defaultOptions: List[String]): Unit = { if (!generatePartestFiles || !partestableFile(prefix, fileName, extension, args ++ defaultOptions, xerrors)) { if (runTest) - NestUI.echoWarning(s"WARNING: run tests can only be run by partest, JUnit just verifies compilation: $prefix$fileName$extension") + log(s"WARNING: run tests can only be run by partest, JUnit just verifies compilation: $prefix$fileName$extension") compileArgs((s"$prefix$fileName$extension" :: args).toArray, xerrors) } else { val kind = testKind(prefix, xerrors, runTest) - println(s"generating partest files for test file: $prefix$fileName$extension of kind $kind") + log(s"generating partest files for test file: $prefix$fileName$extension of kind $kind") val sourceFile = new JFile(prefix + fileName + extension) if (sourceFile.exists) { @@ -102,8 +101,7 @@ abstract class CompilerTest extends DottyTest { } } } - - def runFile(prefix: String, fileName: String, args: List[String] = Nil, xerrors: Int = 0, + def runFile(prefix: String, fileName: String, args: List[String] = Nil, xerrors: Int = 0, extension: String = ".scala")(implicit defaultOptions: List[String]): Unit = compileFile(prefix, fileName, args, xerrors, extension, true) @@ -113,7 +111,7 @@ abstract class CompilerTest extends DottyTest { (implicit defaultOptions: List[String]): Unit = { if (!generatePartestFiles || !partestableDir(prefix, dirName, args ++ defaultOptions, xerrors)) { if (runTest) - NestUI.echoWarning(s"WARNING: run tests can only be run by partest, JUnit just verifies compilation: $prefix$dirName") + log(s"WARNING: run tests can only be run by partest, JUnit just verifies compilation: $prefix$dirName") val dir = Directory(prefix + dirName) val (files, normArgs) = args match { case "-deep" :: args1 => (dir.deepFiles, args1) @@ -127,21 +125,18 @@ abstract class CompilerTest extends DottyTest { case _ => (new JFile(prefix + dirName), args ++ defaultOptions, "shallow") } val kind = testKind(prefix, xerrors, runTest) - println(s"generating partest files for test directory ($deep): $prefix$dirName of kind $kind") + log(s"generating partest files for test directory ($deep): $prefix$dirName of kind $kind") if (sourceDir.exists) { val firstDest = Directory(DPConfig.testRoot + JFile.separator + kind + JFile.separator + dirName) computeDestAndCopyFiles(sourceDir, firstDest, kind, flags, xerrors.toString) - if (deep == "deep") { - sourceDir.listFiles.foreach(_.delete) - sourceDir.delete - } + if (deep == "deep") + deleteDir(sourceDir) } else { throw new java.io.FileNotFoundException(s"Unable to locate test dir $prefix$dirName") } } } - def runDir(prefix: String, dirName: String, args: List[String] = Nil, xerrors: Int = 0) (implicit defaultOptions: List[String]): Unit = compileDir(prefix, dirName, args, xerrors, true) @@ -153,11 +148,11 @@ abstract class CompilerTest extends DottyTest { val dir = Directory(path) val fileNames = dir.files.toArray.map(_.jfile.getName).filter(name => (name endsWith ".scala") || (name endsWith ".java")) for (name <- fileNames) { - if (verbose) println(s"testing $path$name") + if (verbose) log(s"testing $path$name") compileFile(path, name, args, 0, "", runTest) } for (subdir <- dir.dirs) { - if (verbose) println(s"testing $subdir") + if (verbose) log(s"testing $subdir") compileDir(path, subdir.jfile.getName, args, 0, runTest) } } @@ -177,6 +172,7 @@ abstract class CompilerTest extends DottyTest { recCopyFiles(jfile, destDir / jfile.getName) }) compileDir(DPConfig.testRoot + JFile.separator, testName, args, xerrors) + deleteDir(destDir.jfile) } } @@ -197,7 +193,7 @@ abstract class CompilerTest extends DottyTest { if (runTest) "run" else if (xerrors > 0) "neg" else if (prefixDir.endsWith("run" + JFile.separator)) { - NestUI.echoWarning("WARNING: test is being run as pos test despite being in a run directory. " + + log("WARNING: test is being run as pos test despite being in a run directory. " + "Use runFile/runDir instead of compileFile/compileDir to do a run test") "pos" } else "pos" @@ -246,7 +242,7 @@ abstract class CompilerTest extends DottyTest { if (kind == "run") FileManager.copyFile(check.jfile, dest.changeExtension("check").jfile) else - NestUI.echoWarning(s"WARNING: ignoring $check for test kind $kind") + log(s"WARNING: ignoring $check for test kind $kind") }) } @@ -259,7 +255,7 @@ abstract class CompilerTest extends DottyTest { dest.parent.jfile.mkdirs FileManager.copyFile(sourceFile.jfile, dest.jfile) } else { - NestUI.echoWarning(s"WARNING: ignoring $sf") + log(s"WARNING: ignoring $sf") } }, { sdir => dest.jfile.mkdirs @@ -330,14 +326,28 @@ abstract class CompilerTest extends DottyTest { destDir.jfile } + /** Recursively deletes directories (and files). */ + private def deleteDir(dir: JFile): Unit = { + val children = dir.listFiles + if (children != null) + children.foreach(deleteDir(_)) + dir.delete + } + + /** Write either to console (JUnit) or log file (partest). */ + private def log(msg: String) = logFile.map(_.appendAll(msg + "\n")).getOrElse(println(msg)) } object CompilerTest extends App { - /** Delete generated partest sources from a previous run. */ - lazy val init = { + /** Deletes generated partest sources from a previous run, recreates + * directory and returns the freshly created log file. */ + lazy val init: SFile = { scala.reflect.io.Directory(DPConfig.testRoot).deleteRecursively - new java.io.File(DPConfig.testRoot).mkdirs + new JFile(DPConfig.testRoot).mkdirs + val log = (Path(DPConfig.testRoot) / Path("gen.log")).createFile(true) + println(s"CompilerTest is generating tests for partest, log: $log") + log } // val dotcDir = "/Users/odersky/workspace/dotty/src/dotty/" |