From 25a2d721899881ff8dde28d6975648a0bad769f5 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Fri, 4 Feb 2011 08:29:20 +0000 Subject: After discovering #3376 was fixed I gave in and... After discovering #3376 was fixed I gave in and tried to write a test. Now that the fiddling is over you can write repl tests without creating 5000 streams and settings. Look at test/files/run/bug3376.scala or jvm/interpreter.scala to see. Test case closes #3376, no review. --- test/files/jvm/interpreter.scala | 42 +++++++--------------------------------- 1 file changed, 7 insertions(+), 35 deletions(-) (limited to 'test/files/jvm/interpreter.scala') diff --git a/test/files/jvm/interpreter.scala b/test/files/jvm/interpreter.scala index 2c2756828b..70ad900305 100644 --- a/test/files/jvm/interpreter.scala +++ b/test/files/jvm/interpreter.scala @@ -2,6 +2,8 @@ import scala.tools.nsc._ import java.io.{BufferedReader, StringReader, PrintWriter, Writer, OutputStreamWriter} +import interpreter.ILoop + object Test { val testCodeString = // basics @@ -144,43 +146,13 @@ def f(e: Exp) = e match {{ // non-exhaustive warning here .text - /** A writer that skips the first line of text. The first - * line of interpreter output is skipped because it includes - * a version number. */ - class Skip1Writer(writer: Writer) extends Writer { - var seenNL = false - - def write(cbuf: Array[Char], off: Int, len: Int) { - if (seenNL) - writer.write(cbuf, off, len) - else { - val slice : Array[Char] = cbuf.slice(off, off+len) - val i = slice.indexOf('\n') - if (i >= 0) { - seenNL = true - writer.write(slice, i+1, slice.length-(i+1)) - } else { - // skip it - } - } - } - - def close() { writer.close() } - def flush() { writer.flush() } - } - - def main(args: Array[String]) { - val input = new BufferedReader(new StringReader(testCodeString)) - val output = new PrintWriter( - new Skip1Writer(new OutputStreamWriter(Console.out))) - val repl = new InterpreterLoop(input, output) - val settings = new Settings - // when running that compiler, give it a scala-library to the classpath - settings.classpath.value = System.getProperty("java.class.path") - repl.main(settings) - println() + // This drops the first line of output because the repl + // prints a version number. + (ILoop run testCodeString).lines drop 1 foreach println + val settings = new Settings + settings.classpath.value = sys.props("java.class.path") val interp = new Interpreter(settings) interp.interpret("def plusOne(x: Int) = x + 1") interp.interpret("plusOne(5)") -- cgit v1.2.3