summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTian Gao <gaogaotiantian@hotmail.com>2024-05-04 10:26:40 (GMT)
committerGitHub <noreply@github.com>2024-05-04 10:26:40 (GMT)
commit00da0afa0d98ce1fae67f7258c7f3db2b81a07e7 (patch)
treec45fae309e3ba5c4ef905a92fed5358ff496d7d3
parent85af78996117dbe8ad45716633a3d6c39ff7bab2 (diff)
downloadcpython-00da0afa0d98ce1fae67f7258c7f3db2b81a07e7.zip
cpython-00da0afa0d98ce1fae67f7258c7f3db2b81a07e7.tar.gz
cpython-00da0afa0d98ce1fae67f7258c7f3db2b81a07e7.tar.bz2
gh-113081: Print colorized exception just like built-in traceback in pdb (#113082)
-rwxr-xr-xLib/pdb.py3
-rw-r--r--Lib/test/test_pdb.py4
-rw-r--r--Misc/NEWS.d/next/Library/2023-12-14-02-51-38.gh-issue-113081.S-9Qyn.rst1
3 files changed, 6 insertions, 2 deletions
diff --git a/Lib/pdb.py b/Lib/pdb.py
index bb669a0..e645086 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -84,6 +84,7 @@ import inspect
import tokenize
import traceback
import linecache
+import _colorize
from contextlib import contextmanager
from rlcompleter import Completer
@@ -2347,7 +2348,7 @@ def main():
print("The program exited via sys.exit(). Exit status:", end=' ')
print(e)
except BaseException as e:
- traceback.print_exc()
+ traceback.print_exception(e, colorize=_colorize.can_colorize())
print("Uncaught exception. Entering post mortem debugging")
print("Running 'cont' or 'step' will restart the program")
pdb.interaction(None, e)
diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
index a3d2dda..c9ea527 100644
--- a/Lib/test/test_pdb.py
+++ b/Lib/test/test_pdb.py
@@ -15,7 +15,7 @@ import zipapp
from contextlib import ExitStack, redirect_stdout
from io import StringIO
from test import support
-from test.support import os_helper
+from test.support import force_not_colorized, os_helper
from test.support.import_helper import import_module
from test.support.pty_helper import run_pty, FakeInput
from unittest.mock import patch
@@ -2919,6 +2919,7 @@ def bœr():
self.assertNotIn(b'Error', stdout,
"Got an error running test script under PDB")
+ @force_not_colorized
def test_issue16180(self):
# A syntax error in the debuggee.
script = "def f: pass\n"
@@ -2932,6 +2933,7 @@ def bœr():
'Fail to handle a syntax error in the debuggee.'
.format(expected, stderr))
+ @force_not_colorized
def test_issue84583(self):
# A syntax error from ast.literal_eval should not make pdb exit.
script = "import ast; ast.literal_eval('')\n"
diff --git a/Misc/NEWS.d/next/Library/2023-12-14-02-51-38.gh-issue-113081.S-9Qyn.rst b/Misc/NEWS.d/next/Library/2023-12-14-02-51-38.gh-issue-113081.S-9Qyn.rst
new file mode 100644
index 0000000..e6b2d01
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-12-14-02-51-38.gh-issue-113081.S-9Qyn.rst
@@ -0,0 +1 @@
+Print colorized exception just like built-in traceback in :mod:`pdb`