diff options
-rwxr-xr-x | Lib/pdb.py | 3 | ||||
-rw-r--r-- | Lib/test/test_pdb.py | 21 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2022-01-20-10-35-10.bpo-46434.geS-aP.rst | 2 |
4 files changed, 27 insertions, 0 deletions
@@ -1493,6 +1493,9 @@ class Pdb(bdb.Bdb, cmd.Cmd): self.error('No help for %r; please do not run Python with -OO ' 'if you need command help' % arg) return + if command.__doc__ is None: + self.error('No help for %r; __doc__ string missing' % arg) + return self.message(command.__doc__.rstrip()) do_h = do_help diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index d4c037d..6ac1a4a 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1463,6 +1463,27 @@ def bœr(): self.assertNotIn(b'SyntaxError', stdout, "Got a syntax error running test script under PDB") + def test_issue46434(self): + # Temporarily patch in an extra help command which doesn't have a + # docstring to emulate what happens in an embeddable distribution + script = """ + def do_testcmdwithnodocs(self, arg): + pass + + import pdb + pdb.Pdb.do_testcmdwithnodocs = do_testcmdwithnodocs + """ + commands = """ + continue + help testcmdwithnodocs + """ + stdout, stderr = self.run_pdb_script(script, commands) + output = (stdout or '') + (stderr or '') + self.assertNotIn('AttributeError', output, + 'Calling help on a command with no docs should be handled gracefully') + self.assertIn("*** No help for 'testcmdwithnodocs'; __doc__ string missing", output, + 'Calling help on a command with no docs should print an error') + def test_issue13183(self): script = """ from bar import bar @@ -1668,6 +1668,7 @@ Evgeny Sologubov Cody Somerville Anthony Sottile Edoardo Spadolini +Tom Sparrow Geoffrey Spear Clay Spence Stefan Sperling diff --git a/Misc/NEWS.d/next/Library/2022-01-20-10-35-10.bpo-46434.geS-aP.rst b/Misc/NEWS.d/next/Library/2022-01-20-10-35-10.bpo-46434.geS-aP.rst new file mode 100644 index 0000000..6000781 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-01-20-10-35-10.bpo-46434.geS-aP.rst @@ -0,0 +1,2 @@ +:mod:`pdb` now gracefully handles ``help`` when :attr:`__doc__` is missing, +for example when run with pregenerated optimized ``.pyc`` files. |