diff options
Diffstat (limited to 'yaksh/python_stdio_evaluator.py')
-rw-r--r-- | yaksh/python_stdio_evaluator.py | 26 |
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 |