summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--yaksh/grader.py5
-rw-r--r--yaksh/tests/test_code_server.py19
2 files changed, 23 insertions, 1 deletions
diff --git a/yaksh/grader.py b/yaksh/grader.py
index 38cce8d..eede4d6 100644
--- a/yaksh/grader.py
+++ b/yaksh/grader.py
@@ -131,7 +131,10 @@ class Grader(object):
# 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_instances)
+ if len(test_case_instances) != 0:
+ test_case_success_status = [False] * len(test_case_instances)
+ else:
+ test_case_success_status = [False]
error = []
weight = 0.0
diff --git a/yaksh/tests/test_code_server.py b/yaksh/tests/test_code_server.py
index 1309624..a647481 100644
--- a/yaksh/tests/test_code_server.py
+++ b/yaksh/tests/test_code_server.py
@@ -106,6 +106,25 @@ class TestCodeServer(unittest.TestCase):
self.assertFalse(data['success'])
self.assertTrue('AssertionError' in data['error'][0]['exception'])
+ def test_question_with_no_testcases(self):
+ # Given
+ testdata = {
+ 'metadata': {
+ 'user_answer': 'def f(): return 1',
+ 'language': 'python',
+ 'partial_grading': False
+ },
+ 'test_case_data': []
+ }
+
+ # When
+ submit(self.url, '0', json.dumps(testdata), '')
+ result = get_result(self.url, '0', block=True)
+
+ # Then
+ data = json.loads(result.get('result'))
+ self.assertFalse(data['success'])
+
def test_multiple_simultaneous_hits(self):
# Given
results = Queue()