summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2013-07-25 11:48:30 -0700
committerSom Snytt <som.snytt@gmail.com>2013-08-08 11:40:02 -0700
commit3dd0dd480e7464e316f283fdd84b62314e47db68 (patch)
treedbe244d4807cd5adc7227f8b1997d1dbedc076da
parent4c62f7db6f3913eedd92d85daf8f631149cc97b2 (diff)
downloadscala-3dd0dd480e7464e316f283fdd84b62314e47db68.tar.gz
scala-3dd0dd480e7464e316f283fdd84b62314e47db68.tar.bz2
scala-3dd0dd480e7464e316f283fdd84b62314e47db68.zip
Par-Test split checks work again
Check files split into conditional blocks with partest flags have been broken since the new diff regime. For some reason, no one noticed. The clever scheme to "filter the diff" instead of just filtering the check file is abandoned as futile and unnecessary. Fix java6 checkfile for ifdiff fix.
-rw-r--r--src/partest/scala/tools/partest/nest/Runner.scala68
-rw-r--r--test/files/run/repl-javap-app.check9
-rw-r--r--test/files/run/stream_length.check1
-rw-r--r--test/files/run/tailcalls.check3
4 files changed, 36 insertions, 45 deletions
diff --git a/src/partest/scala/tools/partest/nest/Runner.scala b/src/partest/scala/tools/partest/nest/Runner.scala
index d7d87bdcf5..d9a6234949 100644
--- a/src/partest/scala/tools/partest/nest/Runner.scala
+++ b/src/partest/scala/tools/partest/nest/Runner.scala
@@ -270,60 +270,54 @@ class Runner(val testFile: File, fileManager: FileManager, val testRunParams: Te
false
}
- /** Filter the diff for conditional blocks.
+ /** Filter the check file for conditional blocks.
* The check file can contain lines of the form:
* `#partest java7`
* where the line contains a conventional flag name.
- * In the diff output, these lines have the form:
- * `> #partest java7`
- * Blocks which don't apply are filtered out,
- * and what remains is the desired diff.
- * Line edit commands such as `0a1,6` don't count
- * as diff, so return a nonempty diff only if
- * material diff output was seen.
- * Filtering the diff output (instead of every check
- * file) means that we only post-process a test that
- * might be failing, in the normal case.
+ * If the flag tests true, succeeding lines are retained
+ * (removed on false) until the next #partest flag.
+ * A missing flag evaluates the same as true.
*/
- def diffilter(d: String) = {
+ def filteredCheck: Seq[String] = {
import scala.util.Properties.{javaVersion, isAvian}
- val prefix = "#partest"
- val margin = "> "
- val leader = margin + prefix
// use lines in block so labeled? Default to sorry, Charlie.
- def retainOn(f: String) = {
+ def retainOn(expr: String) = {
+ val f = expr.trim
+ def flagWasSet(f: String) = fileManager.SCALAC_OPTS contains f
val (invert, token) =
if (f startsWith "!") (true, f drop 1) else (false, f)
- val cond = token match {
+ val cond = token.trim match {
case "java7" => javaVersion startsWith "1.7"
case "java6" => javaVersion startsWith "1.6"
case "avian" => isAvian
case "true" => true
- case _ => false
+ case "-optimise" | "-optimize"
+ => flagWasSet("-optimise") || flagWasSet("-optimize")
+ case flag if flag startsWith "-"
+ => flagWasSet(flag)
+ case rest => rest.isEmpty
}
if (invert) !cond else cond
}
- if (d contains prefix) {
- val sb = new StringBuilder
- var retain = true // use the current line
- var material = false // saw a line of diff
- for (line <- d.lines)
- if (line startsWith leader) {
- val rest = (line stripPrefix leader).trim
- retain = retainOn(rest)
- } else if (retain) {
- if (line startsWith margin) material = true
- sb ++= line
- sb ++= EOL
- }
- if (material) sb.toString else ""
- } else d
+ val prefix = "#partest"
+ val b = new ListBuffer[String]()
+ var on = true
+ for (line <- file2String(checkFile).lines) {
+ if (line startsWith prefix) {
+ on = retainOn(line stripPrefix prefix)
+ } else if (on) {
+ b += line
+ }
+ }
+ b.toList
}
- def currentDiff = (
- if (checkFile.canRead) diffilter(compareFiles(logFile, checkFile))
- else compareContents(augmentString(file2String(logFile)).lines.toList, Nil)
- )
+ def currentDiff = {
+ val logged = augmentString(file2String(logFile)).lines.toList
+ val (other, othername) =
+ if (checkFile.canRead) (filteredCheck, checkFile.getName) else (Nil, "empty")
+ compareContents(logged, other, logFile.getName, othername)
+ }
val gitRunner = List("/usr/local/bin/git", "/usr/bin/git") map (f => new java.io.File(f)) find (_.canRead)
val gitDiffOptions = "--ignore-space-at-eol --no-index " + propOrEmpty("partest.git_diff_options")
diff --git a/test/files/run/repl-javap-app.check b/test/files/run/repl-javap-app.check
index db1f09b977..490860585c 100644
--- a/test/files/run/repl-javap-app.check
+++ b/test/files/run/repl-javap-app.check
@@ -6,14 +6,13 @@ scala> :javap -app MyApp$
public final void delayedEndpoint$MyApp$1();
Code:
Stack=2, Locals=1, Args_size=1
- 0: getstatic #61; //Field scala/Console$.MODULE$:Lscala/Console$;
- 3: ldc #63; //String Hello, delayed world.
- 5: invokevirtual #67; //Method scala/Console$.println:(Ljava/lang/Object;)V
- 8: return
+ 0: getstatic #61; //Field scala/Console$.MODULE$:Lscala/Console$;
+ 3: ldc #63; //String Hello, delayed world.
+ 5: invokevirtual #67; //Method scala/Console$.println:(Ljava/lang/Object;)V
+ 8: return
LocalVariableTable:
Start Length Slot Name Signature
0 9 0 this LMyApp$;
-}
scala>
#partest !java6
diff --git a/test/files/run/stream_length.check b/test/files/run/stream_length.check
index d1068f3247..e4350aa741 100644
--- a/test/files/run/stream_length.check
+++ b/test/files/run/stream_length.check
@@ -1,6 +1,5 @@
#partest !avian
Length: 970299
-
#partest avian
!!!TEST SKIPPED!!!
See SI-7600 for further information.
diff --git a/test/files/run/tailcalls.check b/test/files/run/tailcalls.check
index 10384ac46e..ab54d528ab 100644
--- a/test/files/run/tailcalls.check
+++ b/test/files/run/tailcalls.check
@@ -52,7 +52,6 @@ test TailCall.b2 was successful
test FancyTailCalls.tcTryLocal was successful
test FancyTailCalls.differentInstance was successful
test PolyObject.tramp was successful
-
#partest avian
test Object .f was successful
test Final .f was successful
@@ -106,4 +105,4 @@ test TailCall.b1 was successful
test TailCall.b2 was successful
test FancyTailCalls.tcTryLocal was successful
test FancyTailCalls.differentInstance was successful
-test PolyObject.tramp was successful \ No newline at end of file
+test PolyObject.tramp was successful