diff options
-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 |