summaryrefslogtreecommitdiff
path: root/test/disabled/run/script-positions.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-05-23 19:00:04 +0000
committerPaul Phillips <paulp@improving.org>2010-05-23 19:00:04 +0000
commita33ef273d057c043d4129927f27230f54051ac88 (patch)
tree326ba9c231c5c3edf216c0dd563a9516a0b1183c /test/disabled/run/script-positions.scala
parent418b041eb4e8064b746e55373a9d66e689e86842 (diff)
downloadscala-a33ef273d057c043d4129927f27230f54051ac88.tar.gz
scala-a33ef273d057c043d4129927f27230f54051ac88.tar.bz2
scala-a33ef273d057c043d4129927f27230f54051ac88.zip
I figured it'd be a miracle if I got the script...
I figured it'd be a miracle if I got the script test past our fickle robot overseers. Disabled, no review.
Diffstat (limited to 'test/disabled/run/script-positions.scala')
-rw-r--r--test/disabled/run/script-positions.scala86
1 files changed, 86 insertions, 0 deletions
diff --git a/test/disabled/run/script-positions.scala b/test/disabled/run/script-positions.scala
new file mode 100644
index 0000000000..6982ed8440
--- /dev/null
+++ b/test/disabled/run/script-positions.scala
@@ -0,0 +1,86 @@
+import scala.tools.nsc._
+import util.stringFromStream
+
+// Testing "scripts" without the platform delights which accompany actual scripts.
+object Scripts {
+
+ val test1 =
+"""#!/bin/sh
+ exec scala $0 $@
+!#
+
+println("statement 1")
+println("statement 2".thisisborked)
+println("statement 3")
+"""
+
+ val output1 =
+"""thisisborked.scala:6: error: value thisisborked is not a member of java.lang.String
+println("statement 2".thisisborked)
+ ^
+one error found"""
+ val test2 =
+"""#!scala
+// foo
+// bar
+!#
+
+val x = "line 6"
+val y = "line 7"
+val z "line 8""""
+
+ val output2 =
+"""bob.scala:8: error: '=' expected but string literal found.
+val z "line 8"
+ ^
+bob.scala:8: error: illegal start of simple expression
+val z "line 8"
+ ^
+two errors found"""
+}
+
+object Test {
+ import Scripts._
+
+ def settings = new GenericRunnerSettings(println _)
+ settings.nocompdaemon.value = true
+
+ def runScript(code: String): String =
+ stringFromStream(stream =>
+ Console.withOut(stream) {
+ Console.withErr(stream) {
+ ScriptRunner.runCommand(settings, code, Nil)
+ }
+ }
+ )
+
+ val tests: List[(String, String)] = List(
+ test1 -> output1,
+ test2 -> output2
+ )
+ // def lines(s: String) = s split """\r\n|\r|\n""" toList
+ def lines(s: String) = s split "\\n" toList
+
+ // strip the random temp filename from error msgs
+ def stripFilename(s: String) = (s indexOf ".scala:") match {
+ case -1 => s
+ case idx => s drop (idx + 7)
+ }
+ def toLines(text: String) = lines(text) map stripFilename
+
+ def main(args: Array[String]): Unit = {
+ for ((code, expected) <- tests) {
+ val out = toLines(runScript(code))
+ val exp = toLines(expected)
+ val nomatch = out zip exp filter { case (x, y) => x != y }
+ val success = out.size == exp.size && nomatch.isEmpty
+
+ assert(
+ success,
+ "Output doesn't match expected:\n" +
+ "Expected:\n" + expected +
+ "Actual:\n" + out.mkString("\n")
+ )
+ }
+ }
+}