summaryrefslogtreecommitdiff
path: root/yaksh/python_stdio_evaluator.py
diff options
context:
space:
mode:
Diffstat (limited to 'yaksh/python_stdio_evaluator.py')
-rw-r--r--yaksh/python_stdio_evaluator.py26
1 files changed, 11 insertions, 15 deletions
diff --git a/yaksh/python_stdio_evaluator.py b/yaksh/python_stdio_evaluator.py
index 003337d..aeec744 100644
--- a/yaksh/python_stdio_evaluator.py
+++ b/yaksh/python_stdio_evaluator.py
@@ -10,11 +10,10 @@ from ast import literal_eval
from code_evaluator import CodeEvaluator
from StringIO import StringIO
-
+from textwrap import dedent
@contextmanager
def redirect_stdout():
new_target = StringIO()
-
old_target, sys.stdout = sys.stdout, new_target # replace sys.stdout
try:
yield new_target # run some code with the replaced stdout
@@ -32,7 +31,6 @@ class PythonStdioEvaluator(CodeEvaluator):
input_buffer.write(expected_input)
input_buffer.seek(0)
sys.stdin = input_buffer
-
with redirect_stdout() as output_buffer:
exec_scope = {}
exec submitted in exec_scope
@@ -43,21 +41,19 @@ class PythonStdioEvaluator(CodeEvaluator):
success = False
tb = None
- if expected_output in user_answer:
- success = False
- err = ("Incorrect Answer: Please avoid "
- "printing the expected output directly"
- )
- elif self.output_value == expected_output:
-
+ if self.output_value == expected_output:
success = True
err = "Correct Answer"
-
else:
success = False
- err = """Incorrect Answer:\nExpected output - {0}
- and your output - {1}"""\
- .format(expected_output, self.output_value)
-
+ err = dedent("""
+ Incorrect Answer:
+ Given input - {0},
+ Expected output - {1} and your output - {2}
+ """
+ .format(expected_input,
+ expected_output, self.output_value
+ )
+ )
del tb
return success, err