diff options
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.java | 23 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java | 21 |
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 |
