aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous/tests/backends/python
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-14 21:26:14 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-14 21:40:53 +0000
commit5e64358224731d9b167fd155c481166d36b1fddd (patch)
tree10dbef6834fb15a1ab49111f87cdf72122a64b88 /src/test/java/org/zwobble/couscous/tests/backends/python
parentfeca7c0185041c27d7ee2057b5458b02b0b352bf (diff)
Add initial method runner for C#
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/backends/python')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerEvalTests.java23
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java21
2 files changed, 7 insertions, 37 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerEvalTests.java b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerEvalTests.java
index 61f5c38..e4ff1cb 100644
--- a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerEvalTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerEvalTests.java
@@ -1,32 +1,15 @@
package org.zwobble.couscous.tests.backends.python;
-import java.util.List;
import org.zwobble.couscous.ast.ClassNode;
import org.zwobble.couscous.ast.ExpressionNode;
-import org.zwobble.couscous.ast.MethodNode;
-import org.zwobble.couscous.ast.ReturnNode;
import org.zwobble.couscous.tests.BackendEvalTests;
import org.zwobble.couscous.values.PrimitiveValue;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import static java.util.Arrays.asList;
-import static org.zwobble.couscous.util.ExtraLists.list;
+
+import java.util.List;
public class PythonCompilerEvalTests extends BackendEvalTests {
@Override
protected PrimitiveValue evalExpression(List<ClassNode> classes, ExpressionNode expression) {
- ClassNode programNode = ClassNode.builder("Program")
- .method(MethodNode.staticMethod("run")
- .statement(ReturnNode.returns(expression))
- .build())
- .build();
- PythonMethodRunner runner = new PythonMethodRunner();
- return runner.runMethod(
- ImmutableList.copyOf(Iterables.concat(
- classes,
- list(programNode))),
- programNode.getName(),
- "run",
- list());
+ return new PythonMethodRunner().evalExpression(classes, expression);
}
} \ No newline at end of file
diff --git a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java
index 572d0b9..14fcf80 100644
--- a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java
+++ b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java
@@ -1,8 +1,6 @@
package org.zwobble.couscous.tests.backends.python;
-import com.google.common.base.Charsets;
import com.google.common.base.Joiner;
-import com.google.common.io.CharStreams;
import org.hamcrest.Matchers;
import org.zwobble.couscous.ast.ClassNode;
import org.zwobble.couscous.ast.MethodSignature;
@@ -11,11 +9,10 @@ import org.zwobble.couscous.backends.python.PythonBackend;
import org.zwobble.couscous.backends.python.PythonCodeGenerator;
import org.zwobble.couscous.backends.python.PythonSerializer;
import org.zwobble.couscous.tests.MethodRunner;
+import org.zwobble.couscous.tests.backends.Processes;
import org.zwobble.couscous.values.PrimitiveValue;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
@@ -24,6 +21,7 @@ import static java.lang.Integer.parseInt;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.zwobble.couscous.tests.util.ExtraFiles.deleteRecursively;
import static org.zwobble.couscous.util.ExtraLists.eagerMap;
+import static org.zwobble.couscous.util.ExtraLists.list;
import static org.zwobble.couscous.values.PrimitiveValues.UNIT;
import static org.zwobble.couscous.values.PrimitiveValues.value;
@@ -58,15 +56,8 @@ public class PythonMethodRunner implements MethodRunner {
String program = "from couscous." + className.getQualifiedName() + " import " + className.getSimpleName() + ";" +
"value = " + className.getSimpleName() + "." + pythonMethodName + "(" + argumentsString + ");" +
"print(type(value)); print(value)";
- Process process = new ProcessBuilder("python3.4", "-c", program).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 readPrimitive(output);
- }
+ String output = Processes.run(list("python3.4", "-c", program), directoryPath);
+ return readPrimitive(output);
}
private static final String PACKAGE_PREFIX = "couscous.";
@@ -92,8 +83,4 @@ public class PythonMethodRunner implements MethodRunner {
throw new RuntimeException("Unhandled type: " + type);
}
}
-
- private static String readString(final InputStream stream) throws IOException {
- return CharStreams.toString(new InputStreamReader(stream, Charsets.UTF_8));
- }
} \ No newline at end of file