diff options
-rw-r--r-- | yaksh/bash_code_evaluator.py | 6 | ||||
-rw-r--r-- | yaksh/bash_stdio_evaluator.py | 5 | ||||
-rw-r--r-- | yaksh/code_evaluator.py | 138 | ||||
-rw-r--r-- | yaksh/code_server.py | 5 | ||||
-rw-r--r-- | yaksh/cpp_code_evaluator.py | 9 | ||||
-rw-r--r-- | yaksh/cpp_stdio_evaluator.py | 5 | ||||
-rw-r--r-- | yaksh/evaluator_tests/test_bash_evaluation.py | 52 | ||||
-rw-r--r-- | yaksh/evaluator_tests/test_c_cpp_evaluation.py | 116 | ||||
-rw-r--r-- | yaksh/evaluator_tests/test_java_evaluation.py | 86 | ||||
-rw-r--r-- | yaksh/evaluator_tests/test_python_evaluation.py | 88 | ||||
-rw-r--r-- | yaksh/evaluator_tests/test_scilab_evaluation.py | 28 | ||||
-rw-r--r-- | yaksh/java_code_evaluator.py | 14 | ||||
-rw-r--r-- | yaksh/java_stdio_evaluator.py | 5 | ||||
-rw-r--r-- | yaksh/models.py | 28 | ||||
-rw-r--r-- | yaksh/python_assertion_evaluator.py | 11 | ||||
-rw-r--r-- | yaksh/python_stdio_evaluator.py | 9 |
16 files changed, 12 insertions, 593 deletions
diff --git a/yaksh/bash_code_evaluator.py b/yaksh/bash_code_evaluator.py index 03ec16a..43d7be7 100644 --- a/yaksh/bash_code_evaluator.py +++ b/yaksh/bash_code_evaluator.py @@ -27,12 +27,6 @@ class BashCodeEvaluator(BaseEvaluator): self.test_case = test_case_data.get('test_case') self.weight = test_case_data.get('weight') - # def setup(self): - # super(BashCodeEvaluator, self).setup() - # self.files = [] - # self.submit_code_path = self.create_submit_code_file('submit.sh') - # self._set_file_as_executable(self.submit_code_path) - def teardown(self): # Delete the created file. os.remove(self.submit_code_path) diff --git a/yaksh/bash_stdio_evaluator.py b/yaksh/bash_stdio_evaluator.py index 3344c57..38b48e6 100644 --- a/yaksh/bash_stdio_evaluator.py +++ b/yaksh/bash_stdio_evaluator.py @@ -24,11 +24,6 @@ class BashStdioEvaluator(StdIOEvaluator): self.expected_output = test_case_data.get('expected_output') self.weight = test_case_data.get('weight') - # def setup(self): - # super(BashStdioEvaluator, self).setup() - # self.files = [] - # self.submit_code_path = self.create_submit_code_file('Test.sh') - def teardown(self): os.remove(self.submit_code_path) if self.files: diff --git a/yaksh/code_evaluator.py b/yaksh/code_evaluator.py index 52720df..ae61752 100644 --- a/yaksh/code_evaluator.py +++ b/yaksh/code_evaluator.py @@ -113,28 +113,24 @@ class CodeEvaluator(object): if self.in_dir: if not os.path.exists(self.in_dir): os.makedirs(self.in_dir) - # self._change_dir(self.in_dir) def get_evaluator_objects(self, kwargs): - metadata = kwargs.get('metadata') # metadata contains user_answer, language, partial_grading, file_paths + metadata = kwargs.get('metadata') test_case_data = kwargs.get('test_case_data') test_case_instances = [] for test_case in test_case_data: - test_case_instance = create_evaluator_instance(metadata, test_case) #language, test_case + test_case_instance = create_evaluator_instance(metadata, test_case) test_case_instances.append(test_case_instance) return test_case_instances - def safe_evaluate(self, test_case_instances): #user_answer, partial_grading, test_case_data, file_paths=None + def safe_evaluate(self, test_case_instances): """ Handles code evaluation along with compilation, signal handling and Exception handling """ - # metadata = kwargs.get('metadata') # metadata contains user_answer, language, partial_grading, file_paths - # test_case_data = kwargs.get('test_case_data') - # Add a new signal handler for the execution of this code. prev_handler = create_signal_handler() success = False @@ -146,17 +142,9 @@ class CodeEvaluator(object): try: # Run evaluator selection registry here for idx, test_case_instance in enumerate(test_case_instances): - # test_case_instance = create_evaluator_instance(metadata, test_case) #language, test_case - # self.setup() test_case_success = False - test_case_instance.compile_code() #user_answer, file_paths, test_case - test_case_success, err, test_case_weight = test_case_instance.check_code() #**kwargs - test_case_instance.teardown() - # self.teardown() - # user_answer, - # file_paths, - # partial_grading, - # **test_case + test_case_instance.compile_code() + test_case_success, err, test_case_weight = test_case_instance.check_code() if test_case_success: weight += test_case_weight @@ -165,6 +153,9 @@ class CodeEvaluator(object): success = all(test_case_success_status) + for test_case_instance in test_case_instances: + test_case_instance.teardown() + except TimeoutException: error = self.timeout_msg except OSError: @@ -182,119 +173,6 @@ class CodeEvaluator(object): return success, error, weight - # def safe_evaluate(self, user_answer, partial_grading, test_case_data, file_paths=None): - # """ - # Handles code evaluation along with compilation, signal handling - # and Exception handling - # """ - - # # Add a new signal handler for the execution of this code. - # prev_handler = create_signal_handler() - # success = False - # test_case_success_status = [False] * len(test_case_data) - # error = "" - # weight = 0.0 - - # # Do whatever testing needed. - # try: - # for idx, test_case in enumerate(test_case_data): - # test_case_success = False - # self.compile_code(user_answer, file_paths, **test_case) - # test_case_success, err, test_case_weight = self.check_code(user_answer, - # file_paths, - # partial_grading, - # **test_case - # ) - # if test_case_success: - # weight += test_case_weight - - # error += err + "\n" - # test_case_success_status[idx] = test_case_success - - # success = all(test_case_success_status) - - # except TimeoutException: - # error = self.timeout_msg - # except OSError: - # msg = traceback.format_exc(limit=0) - # error = "Error: {0}".format(msg) - # except Exception as e: - # print "HELLOOOOO", e - # exc_type, exc_value, exc_tb = sys.exc_info() - # tb_list = traceback.format_exception(exc_type, exc_value, exc_tb) - # if len(tb_list) > 2: - # del tb_list[1:3] - # error = "Error: {0}".format("".join(tb_list)) - # finally: - # # Set back any original signal handler. - # set_original_signal_handler(prev_handler) - - # return success, error, weight - - def teardown(self): # Cancel the signal delete_signal_handler() - # self._change_dir(dirname(MY_DIR)) - - # def check_code(self): - # raise NotImplementedError("check_code method not implemented") - - # def compile_code(self, user_answer, file_paths, **kwargs): - # pass - - # def create_submit_code_file(self, file_name): - # """ Set the file path for code (`answer`)""" - # submit_path = abspath(file_name) - # if not exists(submit_path): - # submit_f = open(submit_path, 'w') - # submit_f.close() - - # return submit_path - - # def write_to_submit_code_file(self, file_path, user_answer): - # """ Write the code (`answer`) to a file""" - # submit_f = open(file_path, 'w') - # submit_f.write(user_answer.lstrip()) - # submit_f.close() - - # def _set_file_as_executable(self, fname): - # os.chmod(fname, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR - # | stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP - # | stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH) - - # def _set_test_code_file_path(self, ref_path=None, test_case_path=None): - # if ref_path and not ref_path.startswith('/'): - # ref_path = join(MY_DIR, ref_path) - - # if test_case_path and not test_case_path.startswith('/'): - # test_case_path = join(MY_DIR, test_case_path) - - # return ref_path, test_case_path - - # def _run_command(self, cmd_args, *args, **kw): - # """Run a command in a subprocess while blocking, the process is killed - # if it takes more than 2 seconds to run. Return the Popen object, the - # stdout and stderr. - # """ - # try: - # proc = subprocess.Popen(cmd_args, *args, **kw) - # stdout, stderr = proc.communicate() - # except TimeoutException: - # # Runaway code, so kill it. - # proc.kill() - # # Re-raise exception. - # raise - # return proc, stdout.decode('utf-8'), stderr.decode('utf-8') - - # def _change_dir(self, in_dir): - # if in_dir is not None and isdir(in_dir): - # os.chdir(in_dir) - - # def _remove_null_substitute_char(self, string): - # """Returns a string without any null and substitute characters""" - # stripped = "" - # for c in string: - # if ord(c) is not 26 and ord(c) is not 0: - # stripped = stripped + c - # return ''.join(stripped) diff --git a/yaksh/code_server.py b/yaksh/code_server.py index 3c1a3e3..815eb55 100644 --- a/yaksh/code_server.py +++ b/yaksh/code_server.py @@ -85,11 +85,6 @@ class CodeServer(object): """Calls relevant EvaluateCode class based on language to check the answer code """ - # code_evaluator = create_evaluator_instance(language, - # test_case_type, - # json_data, - # in_dir - # ) data = self.unpack_json_to_python_obj(json_data) code_eval_instance = CodeEvaluator(in_dir) result = code_eval_instance.evaluate(data) #language, test_case_type, diff --git a/yaksh/cpp_code_evaluator.py b/yaksh/cpp_code_evaluator.py index c6f5a7e..f97f274 100644 --- a/yaksh/cpp_code_evaluator.py +++ b/yaksh/cpp_code_evaluator.py @@ -30,15 +30,6 @@ class CppCodeEvaluator(BaseEvaluator): self.test_case = test_case_data.get('test_case') self.weight = test_case_data.get('weight') - # def setup(self): - # super(CppCodeEvaluator, self).setup() - # self.files = [] - # self.submit_code_path = self.create_submit_code_file('submit.c') - # self.compiled_user_answer = None - # self.compiled_test_code = None - # self.user_output_path = "" - # self.ref_output_path = "" - def teardown(self): # Delete the created file. os.remove(self.submit_code_path) diff --git a/yaksh/cpp_stdio_evaluator.py b/yaksh/cpp_stdio_evaluator.py index a57afbe..76c132d 100644 --- a/yaksh/cpp_stdio_evaluator.py +++ b/yaksh/cpp_stdio_evaluator.py @@ -25,11 +25,6 @@ class CppStdioEvaluator(StdIOEvaluator): self.expected_output = test_case_data.get('expected_output') self.weight = test_case_data.get('weight') - # def setup(self): - # super(CppStdioEvaluator, self).setup() - # self.files = [] - # self.submit_code_path = self.create_submit_code_file('main.c') - def teardown(self): os.remove(self.submit_code_path) if self.files: diff --git a/yaksh/evaluator_tests/test_bash_evaluation.py b/yaksh/evaluator_tests/test_bash_evaluation.py index 8888ee6..142d7f0 100644 --- a/yaksh/evaluator_tests/test_bash_evaluation.py +++ b/yaksh/evaluator_tests/test_bash_evaluation.py @@ -34,13 +34,6 @@ class BashAssertionEvaluationTestCases(unittest.TestCase): user_answer = ("#!/bin/bash\n[[ $# -eq 2 ]]" " && echo $(( $1 + $2 )) && exit $(( $1 + $2 ))" ) - # get_class = BashCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -60,13 +53,6 @@ class BashAssertionEvaluationTestCases(unittest.TestCase): def test_error(self): user_answer = ("#!/bin/bash\n[[ $# -eq 2 ]] " "&& echo $(( $1 - $2 )) && exit $(( $1 - $2 ))") - # get_class = BashCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -86,13 +72,6 @@ class BashAssertionEvaluationTestCases(unittest.TestCase): def test_infinite_loop(self): user_answer = ("#!/bin/bash\nwhile [ 1 ] ;" " do echo "" > /dev/null ; done") - # get_class = BashCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -118,13 +97,6 @@ class BashAssertionEvaluationTestCases(unittest.TestCase): } ] user_answer = ("#!/bin/bash\ncat $1") - # get_class = BashCodeEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -162,12 +134,6 @@ class BashStdioEvaluationTestCases(unittest.TestCase): 'test_case_type': 'stdiobasedtestcase', 'weight': 0.0 }] - # get_class = BashStdioEvaluator() - # kwargs = {"user_answer": user_answer, - # "partial_grading": True, - # "test_case_data": test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -198,12 +164,6 @@ class BashStdioEvaluationTestCases(unittest.TestCase): 'test_case_type': 'stdiobasedtestcase', 'weight': 0.0 }] - # get_class = BashStdioEvaluator() - # kwargs = {"user_answer": user_answer, - # "partial_grading": True, - # "test_case_data": test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -232,12 +192,6 @@ class BashStdioEvaluationTestCases(unittest.TestCase): 'test_case_type': 'stdiobasedtestcase', 'weight': 0.0 }] - # get_class = BashStdioEvaluator() - # kwargs = {"user_answer": user_answer, - # "partial_grading": True, - # "test_case_data": test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -265,12 +219,6 @@ class BashStdioEvaluationTestCases(unittest.TestCase): 'test_case_type': 'stdiobasedtestcase', 'weight': 0.0 }] - # get_class = BashStdioEvaluator() - # kwargs = {"user_answer": user_answer, - # "partial_grading": True, - # "test_case_data": test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, diff --git a/yaksh/evaluator_tests/test_c_cpp_evaluation.py b/yaksh/evaluator_tests/test_c_cpp_evaluation.py index 9080e88..4dd6a2f 100644 --- a/yaksh/evaluator_tests/test_c_cpp_evaluation.py +++ b/yaksh/evaluator_tests/test_c_cpp_evaluation.py @@ -34,12 +34,6 @@ class CAssertionEvaluationTestCases(unittest.TestCase): def test_correct_answer(self): user_answer = "int add(int a, int b)\n{return a+b;}" - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -58,12 +52,6 @@ class CAssertionEvaluationTestCases(unittest.TestCase): def test_incorrect_answer(self): user_answer = "int add(int a, int b)\n{return a-b;}" - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -84,12 +72,6 @@ class CAssertionEvaluationTestCases(unittest.TestCase): def test_compilation_error(self): user_answer = "int add(int a, int b)\n{return a+b}" - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -108,13 +90,6 @@ class CAssertionEvaluationTestCases(unittest.TestCase): def test_infinite_loop(self): user_answer = "int add(int a, int b)\n{while(1>0){}}" - # get_class = CppCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -149,13 +124,6 @@ class CAssertionEvaluationTestCases(unittest.TestCase): return buff[0]; } """) - # get_class = CppCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -193,12 +161,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): scanf("%d%d",&a,&b); printf("%d",a+b); }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -230,12 +192,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): for(i=0;i<3;i++){ printf("%d",a[i]);} }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -265,12 +221,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): scanf("%s",a); printf("%s",a); }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -294,12 +244,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): int a=10; printf("%d",a); }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -325,12 +269,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): int a=10; printf("%d",a) }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -354,12 +292,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): while(0==0){ printf("abc");} }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -388,12 +320,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): int a=5,b=6; printf("%d",a+b); }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -419,12 +345,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): cin>>a>>b; cout<<a+b; }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -457,12 +377,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): for(i=0;i<3;i++){ cout<<a[i];} }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -493,12 +407,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): cin>>a; cout<<a; }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -523,12 +431,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): int a=10; cout<<a; }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -555,12 +457,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): int a=10; cout<<a }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -585,12 +481,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): while(0==0){ cout<<"abc";} }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -620,12 +510,6 @@ class CppStdioEvaluationTestCases(unittest.TestCase): int a=5,b=6; cout<<a+b; }""") - # get_class = CppStdioEvaluator() - # kwargs = {'user_answer': user_answer, - # 'partial_grading': False, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, diff --git a/yaksh/evaluator_tests/test_java_evaluation.py b/yaksh/evaluator_tests/test_java_evaluation.py index a66b6d6..246a3e5 100644 --- a/yaksh/evaluator_tests/test_java_evaluation.py +++ b/yaksh/evaluator_tests/test_java_evaluation.py @@ -36,14 +36,6 @@ class JavaAssertionEvaluationTestCases(unittest.TestCase): def test_correct_answer(self): user_answer = "class Test {\n\tint square_num(int a) {\n\treturn a*a;\n\t}\n}" - - # get_class = JavaCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -62,13 +54,6 @@ class JavaAssertionEvaluationTestCases(unittest.TestCase): def test_incorrect_answer(self): user_answer = "class Test {\n\tint square_num(int a) {\n\treturn a;\n\t}\n}" - # get_class = JavaCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -90,14 +75,6 @@ class JavaAssertionEvaluationTestCases(unittest.TestCase): def test_error(self): user_answer = "class Test {\n\tint square_num(int a) {\n\treturn a*a" - # get_class = JavaCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) - kwargs = { 'metadata': { 'user_answer': user_answer, @@ -116,13 +93,6 @@ class JavaAssertionEvaluationTestCases(unittest.TestCase): def test_infinite_loop(self): user_answer = "class Test {\n\tint square_num(int a) {\n\t\twhile(0==0){\n\t\t}\n\t}\n}" - # get_class = JavaCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -165,13 +135,6 @@ class JavaAssertionEvaluationTestCases(unittest.TestCase): br.close(); }}} """) - # get_class = JavaCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -220,12 +183,6 @@ class JavaStdioEvaluationTestCases(unittest.TestCase): int b = s.nextInt(); System.out.print(a+b); }}""") - # get_class = JavaStdioEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -258,12 +215,6 @@ class JavaStdioEvaluationTestCases(unittest.TestCase): a[i] = s.nextInt(); System.out.print(a[i]);} }}""") - # get_class = JavaStdioEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -290,12 +241,6 @@ class JavaStdioEvaluationTestCases(unittest.TestCase): int b = s.nextInt(); System.out.print(a); }}""") - # get_class = JavaStdioEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -320,12 +265,6 @@ class JavaStdioEvaluationTestCases(unittest.TestCase): { System.out.print("a"); }""") - # get_class = JavaStdioEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -351,12 +290,6 @@ class JavaStdioEvaluationTestCases(unittest.TestCase): { System.out.print("a");} }}""") - # get_class = JavaStdioEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -386,12 +319,6 @@ class JavaStdioEvaluationTestCases(unittest.TestCase): int b = 6; System.out.print(a+b); }}""") - # get_class = JavaStdioEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -423,12 +350,6 @@ class JavaStdioEvaluationTestCases(unittest.TestCase): String b = s.nextLine(); System.out.print(a+b); }}""") - # get_class = JavaStdioEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -470,13 +391,6 @@ class JavaStdioEvaluationTestCases(unittest.TestCase): br.close(); }}} """) - # get_class = JavaStdioEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, diff --git a/yaksh/evaluator_tests/test_python_evaluation.py b/yaksh/evaluator_tests/test_python_evaluation.py index fb762f9..29336d6 100644 --- a/yaksh/evaluator_tests/test_python_evaluation.py +++ b/yaksh/evaluator_tests/test_python_evaluation.py @@ -33,11 +33,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): def test_correct_answer(self): # Given user_answer = "def add(a,b):\n\treturn a + b" - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False, - # } kwargs = { 'metadata': { 'user_answer': user_answer, @@ -70,7 +65,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): } # When - # evaluator = PythonAssertionEvaluator() evaluator = CodeEvaluator(self.in_dir) result = evaluator.evaluate(kwargs) @@ -93,11 +87,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): {"test_case_type": "standardtestcase", "test_case": 'assert(add(-1,-2)==-3)', 'weight': 1.0}, {"test_case_type": "standardtestcase", "test_case": 'assert(add(1,2)==3)', 'weight': 2.0} ] - # kwargs = {'user_answer': user_answer, - # 'test_case_data': test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': True - # } kwargs = { 'metadata': { 'user_answer': user_answer, @@ -125,12 +114,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): def test_infinite_loop(self): # Given user_answer = "def add(a, b):\n\twhile True:\n\t\tpass" - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False - # } - kwargs = { 'metadata': { 'user_answer': user_answer, @@ -163,11 +146,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): "SyntaxError", "invalid syntax" ] - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False - # } kwargs = { 'metadata': { 'user_answer': user_answer, @@ -202,12 +180,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): "IndentationError", "indented block" ] - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False - - # } kwargs = { 'metadata': { 'user_answer': user_answer, @@ -239,11 +211,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): "defined" ] - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False - # } kwargs = { 'metadata': { 'user_answer': user_answer, @@ -276,11 +243,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): "maximum recursion depth exceeded" ] - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False - # } kwargs = { 'metadata': { 'user_answer': user_answer, @@ -313,11 +275,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): "argument" ] - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False - # } kwargs = { 'metadata': { 'user_answer': user_answer, @@ -353,11 +310,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): "base" ] - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False - # } kwargs = { 'metadata': { 'user_answer': user_answer, @@ -389,11 +341,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): return f.read()[0] """) - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False - # } kwargs = { 'metadata': { 'user_answer': user_answer, @@ -431,11 +378,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): "invalid syntax" ] - # kwargs = {'user_answer': user_answer, - # 'test_case_data': test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False - # } kwargs = { 'metadata': { 'user_answer': user_answer, @@ -477,11 +419,6 @@ class PythonAssertionEvaluationTestCases(unittest.TestCase): "NameError", "name 'S' is not defined" ] - # kwargs = {'user_answer': user_answer, - # 'test_case_data': test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False - # } kwargs = { 'metadata': { 'user_answer': user_answer, @@ -524,10 +461,6 @@ class PythonStdIOEvaluationTestCases(unittest.TestCase): print(a+b) """ ) - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'partial_grading': False - # } kwargs = {'metadata': { 'user_answer': user_answer, 'file_paths': self.file_paths, @@ -562,10 +495,6 @@ class PythonStdIOEvaluationTestCases(unittest.TestCase): """ ) - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'partial_grading': False - # } kwargs = {'metadata': { 'user_answer': user_answer, 'file_paths': self.file_paths, @@ -598,10 +527,6 @@ class PythonStdIOEvaluationTestCases(unittest.TestCase): """ ) - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'partial_grading': False - # } kwargs = {'metadata': { 'user_answer': user_answer, 'file_paths': self.file_paths, @@ -632,10 +557,6 @@ class PythonStdIOEvaluationTestCases(unittest.TestCase): print(a-b) """ ) - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'partial_grading': False - # } kwargs = {'metadata': { 'user_answer': user_answer, 'file_paths': self.file_paths, @@ -668,11 +589,6 @@ class PythonStdIOEvaluationTestCases(unittest.TestCase): print(a[0]) """ ) - # kwargs = {'user_answer': user_answer, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths, - # 'partial_grading': False - # } kwargs = {'metadata': { 'user_answer': user_answer, 'file_paths': self.file_paths, @@ -701,10 +617,6 @@ class PythonStdIOEvaluationTestCases(unittest.TestCase): "You probably have an infinite loop in" " your code.").format(SERVER_TIMEOUT) user_answer = "while True:\n\tpass" - # kwargs = {'user_answer': user_answer, - # 'test_case_data': test_case_data, - # 'partial_grading': False - # } kwargs = {'metadata': { 'user_answer': user_answer, diff --git a/yaksh/evaluator_tests/test_scilab_evaluation.py b/yaksh/evaluator_tests/test_scilab_evaluation.py index de7368f..e879cda 100644 --- a/yaksh/evaluator_tests/test_scilab_evaluation.py +++ b/yaksh/evaluator_tests/test_scilab_evaluation.py @@ -30,13 +30,6 @@ class ScilabEvaluationTestCases(unittest.TestCase): def test_correct_answer(self): user_answer = ("funcprot(0)\nfunction[c]=add(a,b)" "\n\tc=a+b;\nendfunction") - # get_class = ScilabCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -56,13 +49,6 @@ class ScilabEvaluationTestCases(unittest.TestCase): def test_error(self): user_answer = ("funcprot(0)\nfunction[c]=add(a,b)" "\n\tc=a+b;\ndis(\tendfunction") - # get_class = ScilabCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -83,13 +69,6 @@ class ScilabEvaluationTestCases(unittest.TestCase): def test_incorrect_answer(self): user_answer = ("funcprot(0)\nfunction[c]=add(a,b)" "\n\tc=a-b;\nendfunction") - # get_class = ScilabCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, @@ -112,13 +91,6 @@ class ScilabEvaluationTestCases(unittest.TestCase): code_evaluator.SERVER_TIMEOUT = 4 user_answer = ("funcprot(0)\nfunction[c]=add(a,b)" "\n\tc=a;\nwhile(1==1)\nend\nendfunction") - # get_class = ScilabCodeEvaluator(self.in_dir) - # kwargs = {'user_answer': user_answer, - # 'partial_grading': True, - # 'test_case_data': self.test_case_data, - # 'file_paths': self.file_paths - # } - # result = get_class.evaluate(**kwargs) kwargs = { 'metadata': { 'user_answer': user_answer, diff --git a/yaksh/java_code_evaluator.py b/yaksh/java_code_evaluator.py index f2ca53b..f94321e 100644 --- a/yaksh/java_code_evaluator.py +++ b/yaksh/java_code_evaluator.py @@ -16,7 +16,6 @@ class JavaCodeEvaluator(BaseEvaluator): """Tests the Java code obtained from Code Server""" def __init__(self, metadata, test_case_data): self.files = [] - # self.submit_code_path = self.create_submit_code_file('Test.java') self.compiled_user_answer = None self.compiled_test_code = None self.user_output_path = "" @@ -31,15 +30,6 @@ class JavaCodeEvaluator(BaseEvaluator): self.test_case = test_case_data.get('test_case') self.weight = test_case_data.get('weight') - # def setup(self): - # super(JavaCodeEvaluator, self).setup() - # self.files = [] - # self.submit_code_path = self.create_submit_code_file('Test.java') - # self.compiled_user_answer = None - # self.compiled_test_code = None - # self.user_output_path = "" - # self.ref_output_path = "" - def teardown(self): # Delete the created file. os.remove(self.submit_code_path) @@ -62,7 +52,7 @@ class JavaCodeEvaluator(BaseEvaluator): output_path = "{0}{1}.class".format(directory, file_name) return output_path - def compile_code(self): # , user_answer, file_paths, test_case, weight + def compile_code(self): if self.compiled_user_answer and self.compiled_test_code: return None else: @@ -113,7 +103,7 @@ class JavaCodeEvaluator(BaseEvaluator): return self.compiled_user_answer, self.compiled_test_code - def check_code(self): # user_answer, file_paths, partial_grading, test_case, weight + def check_code(self): """ Function validates student code using instructor code as reference.The first argument ref_code_path, is the path to instructor code, it is assumed to have executable permission. diff --git a/yaksh/java_stdio_evaluator.py b/yaksh/java_stdio_evaluator.py index 78bc20e..a3b528d 100644 --- a/yaksh/java_stdio_evaluator.py +++ b/yaksh/java_stdio_evaluator.py @@ -24,11 +24,6 @@ class JavaStdioEvaluator(StdIOEvaluator): self.expected_output = test_case_data.get('expected_output') self.weight = test_case_data.get('weight') - # def setup(self): - # super(JavaStdioEvaluator, self).setup() - # self.files = [] - # self.submit_code_path = self.create_submit_code_file('Test.java') - def teardown(self): os.remove(self.submit_code_path) if self.files: diff --git a/yaksh/models.py b/yaksh/models.py index 272ec75..9ba85ba 100644 --- a/yaksh/models.py +++ b/yaksh/models.py @@ -309,7 +309,6 @@ class Question(models.Model): for test_case in test_cases: test_case_type = test_case.pop('test_case_type') model_class = get_model_class(test_case_type) - # TestCase.objects.get_or_create(question=que, type=) new_test_case, obj_create_status = model_class.objects.get_or_create(question=que, **test_case) new_test_case.type = test_case_type new_test_case.save() @@ -317,21 +316,6 @@ class Question(models.Model): delete_files(files_list, file_path) def get_test_cases(self, **kwargs): - # test_case_ctype = ContentType.objects.get(app_label="yaksh", - # model=self.test_case_type - # ) - # test_cases = test_case_ctype.get_all_objects_for_this_type( - # question=self, - # **kwargs - # ) - # tc_list = [] - # for tc in self.testcase_set.filter(**kwargs): - # tc_type = str(tc.type) - # obj = getattr(tc, tc_type) - # tc_list.append(obj) - - # return tc_list - tc_list = [] for tc in self.testcase_set.all(): test_case_type = tc.type @@ -347,18 +331,6 @@ class Question(models.Model): return tc_list def get_test_case(self, **kwargs): - # test_case_ctype = ContentType.objects.get(app_label="yaksh", - # model=self.test_case_type - # ) - # test_case = test_case_ctype.get_object_for_this_type( - # question=self, - # **kwargs - # ) - # tc = self.testcase_set.get(**kwargs) - # tc_type = str(tc.type) - # test_case = getattr(tc, tc_type) - - # return test_case for tc in self.testcase_set.all(): test_case_type = tc.type test_case_ctype = ContentType.objects.get(app_label="yaksh", diff --git a/yaksh/python_assertion_evaluator.py b/yaksh/python_assertion_evaluator.py index 003e001..8e4f0b3 100644 --- a/yaksh/python_assertion_evaluator.py +++ b/yaksh/python_assertion_evaluator.py @@ -28,17 +28,6 @@ class PythonAssertionEvaluator(BaseEvaluator): self.test_case = test_case_data.get('test_case') self.weight = test_case_data.get('weight') - # def __del__(self): - # # Delete the created file. - # if self.files: - # delete_files(self.files) - - # def setup(self): - # super(PythonAssertionEvaluator, self).setup() - # self.exec_scope = None - # self.files = [] - - def teardown(self): # Delete the created file. if self.files: diff --git a/yaksh/python_stdio_evaluator.py b/yaksh/python_stdio_evaluator.py index 991fd63..0f24a27 100644 --- a/yaksh/python_stdio_evaluator.py +++ b/yaksh/python_stdio_evaluator.py @@ -30,11 +30,6 @@ def redirect_stdout(): class PythonStdioEvaluator(BaseEvaluator): """Tests the Python code obtained from Code Server""" - - # def setup(self): - # super(PythonStdioEvaluator, self).setup() - # self.files = [] - def __init__(self, metadata, test_case_data): self.files = [] @@ -53,7 +48,7 @@ class PythonStdioEvaluator(BaseEvaluator): if self.files: delete_files(self.files) - def compile_code(self): # user_answer, file_paths, expected_input, expected_output, weight): + def compile_code(self): if self.file_paths: self.files = copy_files(self.file_paths) submitted = compile(self.user_answer, '<string>', mode='exec') @@ -68,7 +63,7 @@ class PythonStdioEvaluator(BaseEvaluator): self.output_value = output_buffer.getvalue().rstrip("\n") return self.output_value - def check_code(self): # user_answer, file_paths, partial_grading, expected_input, expected_output, weight): + def check_code(self): success = False test_case_weight = 0.0 |