summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrabhu Ramachandran2011-11-26 00:16:24 +0530
committerPrabhu Ramachandran2011-11-26 00:16:24 +0530
commit672163bfb8e656e5250b8349aad14b2a550b57b5 (patch)
treeb3d8357c7d2964cfb67e437affaf3eb1bbf9a889
parent9000f58786bc21b05e59ddbe96f8be607f13a00d (diff)
downloadonline_test-672163bfb8e656e5250b8349aad14b2a550b57b5.tar.gz
online_test-672163bfb8e656e5250b8349aad14b2a550b57b5.tar.bz2
online_test-672163bfb8e656e5250b8349aad14b2a550b57b5.zip
BUG: Fix bugs.
If the user_dir was deleted, the script would fail. We now create the user_dir if it isn't there. If the bash script is not properly created you get other uncaught errors which were not reported. This is fixed and tested.
-rwxr-xr-xcode_server.py5
-rw-r--r--exam/views.py15
-rw-r--r--test_server.py8
3 files changed, 20 insertions, 8 deletions
diff --git a/code_server.py b/code_server.py
index 4d1663d..1276c76 100755
--- a/code_server.py
+++ b/code_server.py
@@ -166,11 +166,14 @@ class CodeServer(object):
signal.alarm(SERVER_TIMEOUT)
# Do whatever testing needed.
+ success = False
try:
success, err = self.check_bash_script(ref_path, submit_path, test_case_path)
except TimeoutException:
- success = False
err = self.timeout_msg
+ except:
+ type, value = sys.exc_info()[:2]
+ err = "Error: {0}".format(repr(value))
finally:
# Set back any original signal handler.
signal.signal(signal.SIGALRM, old_handler)
diff --git a/exam/views.py b/exam/views.py
index e8e2e73..61179de 100644
--- a/exam/views.py
+++ b/exam/views.py
@@ -42,7 +42,14 @@ def gen_key(no_of_chars):
def get_user_dir(user):
"""Return the output directory for the user."""
- return join(OUTPUT_DIR, str(user.username))
+ user_dir = join(OUTPUT_DIR, str(user.username))
+ if not exists(user_dir):
+ os.mkdir(user_dir)
+ # Make it rwx by others.
+ os.chmod(user_dir, stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH \
+ | stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR \
+ | stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP)
+ return user_dir
def index(request):
"""The start page.
@@ -133,12 +140,6 @@ def start(request):
# Make user directory.
user_dir = get_user_dir(user)
- if not exists(user_dir):
- os.mkdir(user_dir)
- # Make it rwx by others.
- os.chmod(user_dir, stat.S_IROTH | stat.S_IWOTH | stat.S_IXOTH \
- | stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR \
- | stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP)
questions = [ str(_.id) for _ in Question.objects.filter(active=True) ]
random.shuffle(questions)
diff --git a/test_server.py b/test_server.py
index 45401fd..be9f876 100644
--- a/test_server.py
+++ b/test_server.py
@@ -69,6 +69,14 @@ def test_bash():
'docs/sample.sh\ndocs/sample.args', '/tmp', language="bash")
check_result(result, 'error')
+ src = '''# Enter your code here.
+#!/bin/bash
+ while [ 1 ] ; do echo "" > /dev/null
+ '''
+ result = code_server.run_code(src,
+ 'docs/sample.sh\ndocs/sample.args', '/tmp', language="bash")
+ check_result(result, 'oserror')
+
if __name__ == '__main__':
test_python()
test_bash()