bpo-37961: Fix regression in tracemalloc.Traceback.__repr__ (GH-23805)
Regression in 8d59eb1b66
.
This commit is contained in:
parent
66d3b589c4
commit
051b981867
|
@ -85,6 +85,25 @@ def traceback_filename(filename):
|
||||||
return traceback_lineno(filename, 0)
|
return traceback_lineno(filename, 0)
|
||||||
|
|
||||||
|
|
||||||
|
class TestTraceback(unittest.TestCase):
|
||||||
|
def test_repr(self):
|
||||||
|
def get_repr(*args) -> str:
|
||||||
|
return repr(tracemalloc.Traceback(*args))
|
||||||
|
|
||||||
|
self.assertEqual(get_repr(()), "<Traceback ()>")
|
||||||
|
self.assertEqual(get_repr((), 0), "<Traceback () total_nframe=0>")
|
||||||
|
|
||||||
|
frames = (("f1", 1), ("f2", 2))
|
||||||
|
exp_repr_frames = (
|
||||||
|
"(<Frame filename='f2' lineno=2>,"
|
||||||
|
" <Frame filename='f1' lineno=1>)"
|
||||||
|
)
|
||||||
|
self.assertEqual(get_repr(frames),
|
||||||
|
f"<Traceback {exp_repr_frames}>")
|
||||||
|
self.assertEqual(get_repr(frames, 2),
|
||||||
|
f"<Traceback {exp_repr_frames} total_nframe=2>")
|
||||||
|
|
||||||
|
|
||||||
class TestTracemallocEnabled(unittest.TestCase):
|
class TestTracemallocEnabled(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
if tracemalloc.is_tracing():
|
if tracemalloc.is_tracing():
|
||||||
|
@ -1065,6 +1084,7 @@ class TestCAPI(unittest.TestCase):
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
support.run_unittest(
|
support.run_unittest(
|
||||||
|
TestTraceback,
|
||||||
TestTracemallocEnabled,
|
TestTracemallocEnabled,
|
||||||
TestSnapshot,
|
TestSnapshot,
|
||||||
TestFilters,
|
TestFilters,
|
||||||
|
|
|
@ -226,7 +226,7 @@ class Traceback(Sequence):
|
||||||
return str(self[0])
|
return str(self[0])
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
s = "<Traceback %r" % tuple(self)
|
s = f"<Traceback {tuple(self)}"
|
||||||
if self._total_nframe is None:
|
if self._total_nframe is None:
|
||||||
s += ">"
|
s += ">"
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Fix crash in :func:`tracemalloc.Traceback.__repr__` (regressed in Python 3.9).
|
Loading…
Reference in New Issue