From 379acc5439c3aaa7f659e6f718db8baf8cfc5fdc Mon Sep 17 00:00:00 2001 From: maheshgudi Date: Wed, 8 Jun 2016 11:24:47 +0530 Subject: added bash stdio evaluator --- yaksh/bash_stdio_evaluator.py | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 yaksh/bash_stdio_evaluator.py (limited to 'yaksh/bash_stdio_evaluator.py') diff --git a/yaksh/bash_stdio_evaluator.py b/yaksh/bash_stdio_evaluator.py new file mode 100644 index 0000000..25f35a1 --- /dev/null +++ b/yaksh/bash_stdio_evaluator.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +import subprocess +import os +from os.path import isfile + +#local imports +from code_evaluator import CodeEvaluator +from stdio_evaluator import Evaluator + + +class BashStdioEvaluator(CodeEvaluator): + """Evaluates Bash StdIO based code""" + + def setup(self): + super(BashStdioEvaluator, self).setup() + self.submit_code_path = self.create_submit_code_file('Test.sh') + + def teardown(self): + super(BashStdioEvaluator, self).teardown() + os.remove(self.submit_code_path) + + def compile_code(self, user_answer, expected_input, expected_output): + if not isfile(self.submit_code_path): + msg = "No file at %s or Incorrect path" % self.submit_code_path + return False, msg + user_code_directory = os.getcwd() + '/' + user_answer = user_answer.replace("\r", "") + self.write_to_submit_code_file(self.submit_code_path, user_answer) + + def check_code(self, user_answer, expected_input, expected_output): + success = False + expected_input = str(expected_input).replace('\r', '') + proc = subprocess.Popen(["bash ./Test.sh"], + shell=True, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE + ) + evaluator = Evaluator() + success, err = evaluator.evaluate(user_answer, proc, + expected_input, + expected_output + ) + return success, err -- cgit From 1b71abc9437d721a41f017db406f312755f5a4c4 Mon Sep 17 00:00:00 2001 From: maheshgudi Date: Thu, 28 Jul 2016 18:24:18 +0530 Subject: added expected input in traceback for python and made minor changes in bash_stio_evaluator and stdio_evaluator --- yaksh/bash_stdio_evaluator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'yaksh/bash_stdio_evaluator.py') diff --git a/yaksh/bash_stdio_evaluator.py b/yaksh/bash_stdio_evaluator.py index 25f35a1..5431e5d 100644 --- a/yaksh/bash_stdio_evaluator.py +++ b/yaksh/bash_stdio_evaluator.py @@ -30,7 +30,7 @@ class BashStdioEvaluator(CodeEvaluator): def check_code(self, user_answer, expected_input, expected_output): success = False expected_input = str(expected_input).replace('\r', '') - proc = subprocess.Popen(["bash ./Test.sh"], + proc = subprocess.Popen("bash ./Test.sh", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, -- cgit