aboutsummaryrefslogtreecommitdiff
path: root/test/test/CompilerTest.scala
diff options
context:
space:
mode:
authorvsalvis <salvisbergvera@gmail.com>2015-05-13 14:41:21 +0200
committervsalvis <salvisbergvera@gmail.com>2015-05-22 11:12:44 +0200
commit12f7dcba50671361f3de04d3a23b049f74a79280 (patch)
tree38d5cafc1e9b3b6e8374ce7e14f2a944c00a396f /test/test/CompilerTest.scala
parent9fff1ac663f80a0477a2464216c608dc2ecd81b0 (diff)
downloaddotty-12f7dcba50671361f3de04d3a23b049f74a79280.tar.gz
dotty-12f7dcba50671361f3de04d3a23b049f74a79280.tar.bz2
dotty-12f7dcba50671361f3de04d3a23b049f74a79280.zip
Added partest-only sbt target and less verbose file generation
Diffstat (limited to 'test/test/CompilerTest.scala')
-rw-r--r--test/test/CompilerTest.scala56
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/"