From 5e64358224731d9b167fd155c481166d36b1fddd Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 14 Jan 2016 21:26:14 +0000 Subject: Add initial method runner for C# --- .../zwobble/couscous/tests/backends/Processes.java | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/test/java/org/zwobble/couscous/tests/backends/Processes.java (limited to 'src/test/java/org/zwobble/couscous/tests/backends/Processes.java') diff --git a/src/test/java/org/zwobble/couscous/tests/backends/Processes.java b/src/test/java/org/zwobble/couscous/tests/backends/Processes.java new file mode 100644 index 0000000..63e9b35 --- /dev/null +++ b/src/test/java/org/zwobble/couscous/tests/backends/Processes.java @@ -0,0 +1,31 @@ +package org.zwobble.couscous.tests.backends; + +import com.google.common.base.Charsets; +import com.google.common.io.CharStreams; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.file.Path; +import java.util.List; + +public class Processes { + public static String run(List arguments, Path directoryPath) throws IOException, InterruptedException { + Process process = new ProcessBuilder(arguments.toArray(new String[arguments.size()])) + .directory(directoryPath.toFile()) + .start(); + + int exitCode = process.waitFor(); + String output = readString(process.getInputStream()).trim(); + String stderrOutput = readString(process.getErrorStream()); + if (exitCode != 0) { + throw new RuntimeException("stderr was: " + stderrOutput); + } else { + return output; + } + } + + private static String readString(final InputStream stream) throws IOException { + return CharStreams.toString(new InputStreamReader(stream, Charsets.UTF_8)); + } +} -- cgit v1.2.3