Mercurial > hg > truffle
comparison truffle/com.oracle.truffle.sl.test/src/com/oracle/truffle/sl/test/SLTestRunner.java @ 22165:67f75f61c974
Certain languages (like FastR) prefer access to raw byte streams. Offering it. One always has an option to wrap Input and Output Streams into character based Readers and Writers
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Mon, 21 Sep 2015 12:36:30 +0200 |
parents | dc83cc1f94f2 |
children | 0480c4873a4a |
comparison
equal
deleted
inserted
replaced
22164:567d324c306c | 22165:67f75f61c974 |
---|---|
44 import com.oracle.truffle.api.vm.TruffleVM; | 44 import com.oracle.truffle.api.vm.TruffleVM; |
45 import com.oracle.truffle.sl.SLLanguage; | 45 import com.oracle.truffle.sl.SLLanguage; |
46 import com.oracle.truffle.sl.builtins.SLBuiltinNode; | 46 import com.oracle.truffle.sl.builtins.SLBuiltinNode; |
47 import com.oracle.truffle.sl.test.SLTestRunner.TestCase; | 47 import com.oracle.truffle.sl.test.SLTestRunner.TestCase; |
48 import java.io.BufferedReader; | 48 import java.io.BufferedReader; |
49 import java.io.ByteArrayInputStream; | |
49 import java.io.ByteArrayOutputStream; | 50 import java.io.ByteArrayOutputStream; |
50 import java.io.File; | 51 import java.io.File; |
51 import java.io.FileNotFoundException; | 52 import java.io.FileNotFoundException; |
52 import java.io.IOException; | 53 import java.io.IOException; |
53 import java.io.PrintWriter; | 54 import java.io.PrintWriter; |
227 @Override | 228 @Override |
228 protected void runChild(TestCase testCase, RunNotifier notifier) { | 229 protected void runChild(TestCase testCase, RunNotifier notifier) { |
229 notifier.fireTestStarted(testCase.name); | 230 notifier.fireTestStarted(testCase.name); |
230 | 231 |
231 ByteArrayOutputStream out = new ByteArrayOutputStream(); | 232 ByteArrayOutputStream out = new ByteArrayOutputStream(); |
232 PrintWriter printer = new PrintWriter(out); | |
233 try { | 233 try { |
234 TruffleVM vm = TruffleVM.newVM().stdIn(new BufferedReader(new StringReader(repeat(testCase.testInput, repeats)))).stdOut(printer).build(); | 234 TruffleVM vm = TruffleVM.newVM().setIn(new ByteArrayInputStream(repeat(testCase.testInput, repeats).getBytes("UTF-8"))).setOut(out).build(); |
235 | 235 |
236 String script = readAllLines(testCase.path); | 236 String script = readAllLines(testCase.path); |
237 | |
238 PrintWriter printer = new PrintWriter(out); | |
237 SLLanguage.run(vm, testCase.path, null, printer, repeats, builtins); | 239 SLLanguage.run(vm, testCase.path, null, printer, repeats, builtins); |
238 | |
239 printer.flush(); | 240 printer.flush(); |
241 | |
240 String actualOutput = new String(out.toByteArray()); | 242 String actualOutput = new String(out.toByteArray()); |
241 Assert.assertEquals(script, repeat(testCase.expectedOutput, repeats), actualOutput); | 243 Assert.assertEquals(script, repeat(testCase.expectedOutput, repeats), actualOutput); |
242 } catch (Throwable ex) { | 244 } catch (Throwable ex) { |
243 notifier.fireTestFailure(new Failure(testCase.name, new IllegalStateException("Cannot run " + testCase.sourceName, ex))); | 245 notifier.fireTestFailure(new Failure(testCase.name, new IllegalStateException("Cannot run " + testCase.sourceName, ex))); |
244 } finally { | 246 } finally { |