diff options
author | Hasan Ramezani <hasan.r67@gmail.com> | 2020-11-03 22:16:05 +0100 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-11-10 13:21:50 +0100 |
commit | 4cd77f97a2d30d58841041a73d277ec4bfb7b530 (patch) | |
tree | 5a7a4c5c36358f1ca9acfb511bdf99337bb2101d /tests/view_tests | |
parent | a43e2f66d76fddd791ff0b88361faba304447ff9 (diff) | |
download | django-4cd77f97a2d30d58841041a73d277ec4bfb7b530.tar.gz |
Refs #31672 -- Made technical 500 debug page include exceptions without tracebacks.
Diffstat (limited to 'tests/view_tests')
-rw-r--r-- | tests/view_tests/tests/test_debug.py | 52 |
1 files changed, 49 insertions, 3 deletions
diff --git a/tests/view_tests/tests/test_debug.py b/tests/view_tests/tests/test_debug.py index ccb870c238..a0da6e1adc 100644 --- a/tests/view_tests/tests/test_debug.py +++ b/tests/view_tests/tests/test_debug.py @@ -494,7 +494,7 @@ class ExceptionReporterTests(SimpleTestCase): reporter = ExceptionReporter(None, exc_type, exc_value, tb) frames = reporter.get_traceback_frames() - self.assertEqual(len(frames), 1) + self.assertEqual(len(frames), 2) html = reporter.get_traceback_html() self.assertInHTML('<h1>RuntimeError</h1>', html) self.assertIn('<pre class="exception_value">Oops</pre>', html) @@ -508,6 +508,52 @@ class ExceptionReporterTests(SimpleTestCase): 'exception occurred', html, ) + self.assertInHTML('<li class="frame user">None</li>', html) + self.assertIn('Traceback (most recent call last):\n None', html) + + text = reporter.get_traceback_text() + self.assertIn('Exception Type: RuntimeError', text) + self.assertIn('Exception Value: Oops', text) + self.assertIn('Traceback (most recent call last):\n None', text) + self.assertIn( + 'During handling of the above exception (My context), another ' + 'exception occurred', + text, + ) + + def test_mid_stack_exception_without_traceback(self): + try: + try: + raise RuntimeError('Inner Oops') + except Exception as exc: + new_exc = RuntimeError('My context') + new_exc.__context__ = exc + raise RuntimeError('Oops') from new_exc + except Exception: + exc_type, exc_value, tb = sys.exc_info() + reporter = ExceptionReporter(None, exc_type, exc_value, tb) + html = reporter.get_traceback_html() + self.assertInHTML('<h1>RuntimeError</h1>', html) + self.assertIn('<pre class="exception_value">Oops</pre>', html) + self.assertIn('<th>Exception Type:</th>', html) + self.assertIn('<th>Exception Value:</th>', html) + self.assertIn('<h2>Traceback ', html) + self.assertInHTML('<li class="frame user">Traceback: None</li>', html) + self.assertIn( + 'During handling of the above exception (Inner Oops), another ' + 'exception occurred:\n Traceback: None', + html, + ) + + text = reporter.get_traceback_text() + self.assertIn('Exception Type: RuntimeError', text) + self.assertIn('Exception Value: Oops', text) + self.assertIn('Traceback (most recent call last):', text) + self.assertIn( + 'During handling of the above exception (Inner Oops), another ' + 'exception occurred:\n Traceback: None', + text, + ) def test_reporting_of_nested_exceptions(self): request = self.rf.get('/test_view/') @@ -671,7 +717,7 @@ class ExceptionReporterTests(SimpleTestCase): self.assertIn('<th>Request URL:</th>', html) self.assertNotIn('<th>Exception Type:</th>', html) self.assertNotIn('<th>Exception Value:</th>', html) - self.assertNotIn('<h2>Traceback ', html) + self.assertIn('<h2>Traceback ', html) self.assertIn('<h2>Request information</h2>', html) self.assertNotIn('<p>Request data not supplied</p>', html) @@ -684,7 +730,7 @@ class ExceptionReporterTests(SimpleTestCase): self.assertNotIn('<th>Request URL:</th>', html) self.assertNotIn('<th>Exception Type:</th>', html) self.assertNotIn('<th>Exception Value:</th>', html) - self.assertNotIn('<h2>Traceback ', html) + self.assertIn('<h2>Traceback ', html) self.assertIn('<h2>Request information</h2>', html) self.assertIn('<p>Request data not supplied</p>', html) |