bpo-42474: test TracebackException comparison to non-equal instances (GH-23522)
Closes bpo-42474
This commit is contained in:
parent
f5a19ead4b
commit
44ca05afc8
|
@ -1123,7 +1123,7 @@ class TestTracebackException(unittest.TestCase):
|
||||||
self.assertEqual(exc_info[0], exc.exc_type)
|
self.assertEqual(exc_info[0], exc.exc_type)
|
||||||
self.assertEqual(str(exc_info[1]), str(exc))
|
self.assertEqual(str(exc_info[1]), str(exc))
|
||||||
|
|
||||||
def test_comparison(self):
|
def test_comparison_basic(self):
|
||||||
try:
|
try:
|
||||||
1/0
|
1/0
|
||||||
except Exception:
|
except Exception:
|
||||||
|
@ -1135,6 +1135,43 @@ class TestTracebackException(unittest.TestCase):
|
||||||
self.assertNotEqual(exc, object())
|
self.assertNotEqual(exc, object())
|
||||||
self.assertEqual(exc, ALWAYS_EQ)
|
self.assertEqual(exc, ALWAYS_EQ)
|
||||||
|
|
||||||
|
def test_comparison_params_variations(self):
|
||||||
|
def raise_exc():
|
||||||
|
try:
|
||||||
|
raise ValueError('bad value')
|
||||||
|
except:
|
||||||
|
raise
|
||||||
|
|
||||||
|
def raise_with_locals():
|
||||||
|
x, y = 1, 2
|
||||||
|
raise_exc()
|
||||||
|
|
||||||
|
try:
|
||||||
|
raise_with_locals()
|
||||||
|
except Exception:
|
||||||
|
exc_info = sys.exc_info()
|
||||||
|
|
||||||
|
exc = traceback.TracebackException(*exc_info)
|
||||||
|
exc1 = traceback.TracebackException(*exc_info, limit=10)
|
||||||
|
exc2 = traceback.TracebackException(*exc_info, limit=2)
|
||||||
|
|
||||||
|
self.assertEqual(exc, exc1) # limit=10 gets all frames
|
||||||
|
self.assertNotEqual(exc, exc2) # limit=2 truncates the output
|
||||||
|
|
||||||
|
# locals change the output
|
||||||
|
exc3 = traceback.TracebackException(*exc_info, capture_locals=True)
|
||||||
|
self.assertNotEqual(exc, exc3)
|
||||||
|
|
||||||
|
# there are no locals in the innermost frame
|
||||||
|
exc4 = traceback.TracebackException(*exc_info, limit=-1)
|
||||||
|
exc5 = traceback.TracebackException(*exc_info, limit=-1, capture_locals=True)
|
||||||
|
self.assertEqual(exc4, exc5)
|
||||||
|
|
||||||
|
# there are locals in the next-to-innermost frame
|
||||||
|
exc6 = traceback.TracebackException(*exc_info, limit=-2)
|
||||||
|
exc7 = traceback.TracebackException(*exc_info, limit=-2, capture_locals=True)
|
||||||
|
self.assertNotEqual(exc6, exc7)
|
||||||
|
|
||||||
def test_unhashable(self):
|
def test_unhashable(self):
|
||||||
class UnhashableException(Exception):
|
class UnhashableException(Exception):
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
|
@ -1176,7 +1213,7 @@ class TestTracebackException(unittest.TestCase):
|
||||||
f = test_frame(c, None, None)
|
f = test_frame(c, None, None)
|
||||||
tb = test_tb(f, 6, None)
|
tb = test_tb(f, 6, None)
|
||||||
exc = traceback.TracebackException(Exception, e, tb, lookup_lines=False)
|
exc = traceback.TracebackException(Exception, e, tb, lookup_lines=False)
|
||||||
self.assertEqual({}, linecache.cache)
|
self.assertEqual(linecache.cache, {})
|
||||||
linecache.updatecache('/foo.py', globals())
|
linecache.updatecache('/foo.py', globals())
|
||||||
self.assertEqual(exc.stack[0].line, "import sys")
|
self.assertEqual(exc.stack[0].line, "import sys")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue