summaryrefslogtreecommitdiff
path: root/yaksh
diff options
context:
space:
mode:
authormaheshgudi2016-09-26 15:58:08 +0530
committermaheshgudi2016-09-26 15:58:08 +0530
commit0845f5f67aabd311a4b0bf70d099be07d688bb80 (patch)
tree4b2cb25c698558e2380bd4b2c9fbdc1a911425f8 /yaksh
parent8e4ead8ab4caa9366e5357840e1912cbfb8cdb85 (diff)
downloadonline_test-0845f5f67aabd311a4b0bf70d099be07d688bb80.tar.gz
online_test-0845f5f67aabd311a4b0bf70d099be07d688bb80.tar.bz2
online_test-0845f5f67aabd311a4b0bf70d099be07d688bb80.zip
removed python_stdout_evaluator as python_stdio_evaluator takes care of 'stdout only' cases
Diffstat (limited to 'yaksh')
-rw-r--r--yaksh/python_stdout_evaluator.py65
1 files changed, 0 insertions, 65 deletions
diff --git a/yaksh/python_stdout_evaluator.py b/yaksh/python_stdout_evaluator.py
deleted file mode 100644
index 8f69b24..0000000
--- a/yaksh/python_stdout_evaluator.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/env python
-import sys
-import traceback
-import os
-from os.path import join
-import importlib
-from contextlib import contextmanager
-
-# local imports
-from code_evaluator import CodeEvaluator
-from file_utils import copy_files, delete_files
-
-
-@contextmanager
-def redirect_stdout():
- from StringIO import StringIO
- 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
- finally:
- sys.stdout = old_target # restore to the previous value
-
-
-class PythonStdoutEvaluator(CodeEvaluator):
- """Tests the Python code obtained from Code Server"""
-
- def teardown(self):
- super(PythonStdoutEvaluator, self).teardown()
- # Delete the created file.
- if self.files:
- delete_files(self.files)
-
- def compile_code(self, user_answer, file_paths, expected_output):
- self.files = []
- if file_paths:
- self.files = copy_files(file_paths)
- if hasattr(self, 'output_value'):
- return None
- else:
- submitted = compile(user_answer, '<string>', mode='exec')
- with redirect_stdout() as output_buffer:
- exec_scope = {}
- exec submitted in exec_scope
- self.output_value = output_buffer.getvalue()
- return self.output_value
-
- def check_code(self, user_answer, file_paths, expected_output):
- 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:
- success = True
- err = "Correct answer"
-
- else:
- success = False
- err = "Incorrect Answer"
- del tb
- return success, err