From 8664a766406d6acf0d6a1688948153c407ea27f2 Mon Sep 17 00:00:00 2001 From: ankitjavalkar Date: Fri, 24 Apr 2015 14:25:26 +0530 Subject: Code Review: Code refactoring - Rename files - Create function for @classmethod call - Fix current, add new testcases - Fix views to fetch solution/ref_code_path fields in question post save - Fix errors --- testapp/exam/evaluate_cpp_code.py | 48 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 testapp/exam/evaluate_cpp_code.py (limited to 'testapp/exam/evaluate_cpp_code.py') diff --git a/testapp/exam/evaluate_cpp_code.py b/testapp/exam/evaluate_cpp_code.py new file mode 100644 index 0000000..ed744d1 --- /dev/null +++ b/testapp/exam/evaluate_cpp_code.py @@ -0,0 +1,48 @@ +#!/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_code import EvaluateCCode +from evaluate_code import EvaluateCode +from language_registry import registry + + +class EvaluateCppCode(EvaluateCCode, EvaluateCode): + """Tests the C code obtained from Code Server""" + ## Public Protocol ########## + 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 + + +registry.register('cpp', EvaluateCppCode) \ No newline at end of file -- cgit