diff options
author | ankitjavalkar | 2017-02-13 15:21:34 +0530 |
---|---|---|
committer | ankitjavalkar | 2017-02-16 18:09:37 +0530 |
commit | 85412e8f77a268590cf8ca6f6cd6facd8fdc3c2c (patch) | |
tree | b552d367d054c7d13f928235a8ae7bdd8c8b8355 /yaksh | |
parent | 8eea8e99258f073374912985acc191295536deeb (diff) | |
download | online_test-85412e8f77a268590cf8ca6f6cd6facd8fdc3c2c.tar.gz online_test-85412e8f77a268590cf8ca6f6cd6facd8fdc3c2c.tar.bz2 online_test-85412e8f77a268590cf8ca6f6cd6facd8fdc3c2c.zip |
Merge all error handling into single code block and fix relevant test cases for Python assertion
Diffstat (limited to 'yaksh')
-rw-r--r-- | yaksh/evaluator_tests/test_python_evaluation.py | 13 | ||||
-rw-r--r-- | yaksh/python_assertion_evaluator.py | 31 |
2 files changed, 21 insertions, 23 deletions
diff --git a/yaksh/evaluator_tests/test_python_evaluation.py b/yaksh/evaluator_tests/test_python_evaluation.py index 6346941..b908ff7 100644 --- a/yaksh/evaluator_tests/test_python_evaluation.py +++ b/yaksh/evaluator_tests/test_python_evaluation.py @@ -235,7 +235,7 @@ class PythonAssertionEvaluationTestCases(EvaluatorBaseTest): # Then self.assertFalse(result.get("success")) - self.assertEqual(6, len(err)) + self.assertEqual(22, len(err)) for msg in name_error_msg: self.assert_correct_output(msg, result.get("error")) @@ -245,8 +245,7 @@ class PythonAssertionEvaluationTestCases(EvaluatorBaseTest): def add(a, b): return add(3, 3) """) - recursion_error_msg = ["Traceback", - "call", + recursion_error_msg = ["Traceback", "maximum recursion depth exceeded" ] @@ -301,7 +300,7 @@ class PythonAssertionEvaluationTestCases(EvaluatorBaseTest): # Then self.assertFalse(result.get("success")) - self.assertEqual(6, len(err)) + self.assertEqual(22, len(err)) for msg in type_error_msg: self.assert_correct_output(msg, result.get("error")) @@ -337,7 +336,7 @@ class PythonAssertionEvaluationTestCases(EvaluatorBaseTest): # Then self.assertFalse(result.get("success")) - self.assertEqual(6, len(err)) + self.assertEqual(25, len(err)) for msg in value_error_msg: self.assert_correct_output(msg, result.get("error")) @@ -404,7 +403,7 @@ class PythonAssertionEvaluationTestCases(EvaluatorBaseTest): # Then self.assertFalse(result.get("success")) - self.assertEqual(5, len(err)) + self.assertEqual(12, len(err)) for msg in syntax_error_msg: self.assert_correct_output(msg, result.get("error")) @@ -446,7 +445,7 @@ class PythonAssertionEvaluationTestCases(EvaluatorBaseTest): # Then self.assertFalse(result.get("success")) - self.assertEqual(2, len(err)) + self.assertEqual(10, len(err)) for msg in name_error_msg: self.assert_correct_output(msg, result.get("error")) diff --git a/yaksh/python_assertion_evaluator.py b/yaksh/python_assertion_evaluator.py index 9e1a6ac..77efbc1 100644 --- a/yaksh/python_assertion_evaluator.py +++ b/yaksh/python_assertion_evaluator.py @@ -71,31 +71,30 @@ class PythonAssertionEvaluator(BaseEvaluator): tb = None _tests = compile(self.test_case, '<string>', mode='exec') exec(_tests, self.exec_scope) - except AssertionError: + except TimeoutException: + raise + except Exception: type, value, tb = sys.exc_info() info = traceback.extract_tb(tb) fname, lineno, func, text = info[-1] text = str(self.test_case) - err = "Expected Test Case:\n{0}\n" \ - "Error - {1} {2} in:\n {3}\n".format( - self.test_case, - type.__name__, - str(value), - text - ) - except TimeoutException: - raise - except RecursionError: - msg = traceback.format_exc(limit=0) - err = "Error Traceback: {0}".format(msg) - except Exception: + + # Get truncated traceback err_tb_lines = traceback.format_exc().splitlines() stripped_tb_lines = [] for line in err_tb_lines: if '.py' not in line: stripped_tb_lines.append(line) - stripped_tb = '\n'.join(stripped_tb_lines) - err = "Error Traceback:\n{0}".format(stripped_tb) + stripped_tb = '\n'.join(stripped_tb_lines[-10::]) + + err = "Expected Test Case:\n{0}\n" \ + "Error Traceback- {1} {2} in:\n {3}\n{4}".format( + self.test_case, + type.__name__, + str(value), + text, + stripped_tb + ) else: success = True err = None |