diff options
author | ankitjavalkar | 2015-04-20 21:42:02 +0530 |
---|---|---|
committer | ankitjavalkar | 2015-04-26 19:46:01 +0530 |
commit | 3ffdba6e587422a0f2955879d12e0b2aeac342e1 (patch) | |
tree | 7ea9136dc4694b1d534dc2df7f1b0353ed4ee075 /testapp/exam/evaluate_cpp.py | |
parent | cbeffec80d30fe2a9048644f5b0345f797479c92 (diff) | |
download | online_test-3ffdba6e587422a0f2955879d12e0b2aeac342e1.tar.gz online_test-3ffdba6e587422a0f2955879d12e0b2aeac342e1.tar.bz2 online_test-3ffdba6e587422a0f2955879d12e0b2aeac342e1.zip |
Code review - code refactoring as per suggestion
- Add subclasses for different languages
- Create seperate modules for different languages
- Dynamic selection of subclasses based on language used
- Add testcases
Diffstat (limited to 'testapp/exam/evaluate_cpp.py')
-rw-r--r-- | testapp/exam/evaluate_cpp.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/testapp/exam/evaluate_cpp.py b/testapp/exam/evaluate_cpp.py new file mode 100644 index 0000000..1723d3b --- /dev/null +++ b/testapp/exam/evaluate_cpp.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python +import traceback +import pwd +import os +from os.path import join, isfile +import subprocess +import importlib + +# local imports +from evaluate_c import EvaluateC +from code_server import TestCode + + +class EvaluateCpp(EvaluateC, TestCode): + """Tests the C code obtained from Code Server""" + def evaluate_code(self): + submit_path = self._create_submit_code_file('submitstd.cpp') + get_ref_path = self.ref_code_path + ref_path, test_case_path = self._set_test_code_file_path(get_ref_path) + success = False + + # Set file paths + c_user_output_path = os.getcwd() + '/output', + c_ref_output_path = os.getcwd() + '/executable', + + # Set command variables + compile_command = 'g++ {0} -c -o {1}'.format(submit_path, + c_user_output_path), + compile_main = 'g++ {0} {1} -o {2}'.format(ref_path, + c_user_output_path, + c_ref_output_path), + run_command_args = c_ref_output_path + remove_user_output = c_user_output_path + remove_ref_output = c_ref_output_path + + success, err = self.check_code(ref_path, submit_path, compile_command, + compile_main, run_command_args, + remove_user_output, remove_ref_output) + + # Delete the created file. + os.remove(submit_path) + + return success, err |