Skip to content

Commit

Permalink
[3.11] pythongh-90095: Ignore empty lines and comments in .pdbrc (p…
Browse files Browse the repository at this point in the history
…ythonGH-116834) (python#116855)

pythongh-90095: Ignore empty lines and comments in `.pdbrc` (pythonGH-116834)
(cherry picked from commit a50cf6c)

Co-authored-by: Tian Gao <gaogaotiantian@hotmail.com>
  • Loading branch information
miss-islington and gaogaotiantian committed Mar 15, 2024
1 parent d83b4c5 commit eaefa0b
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 2 deletions.
3 changes: 2 additions & 1 deletion Doc/library/pdb.rst
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,8 @@ is to use implicit string concatenation ``';'';'`` or ``";"";"``.

If a file :file:`.pdbrc` exists in the user's home directory or in the current
directory, it is read with ``'utf-8'`` encoding and executed as if it had been
typed at the debugger prompt. This is particularly useful for aliases. If both
typed at the debugger prompt, with the exception that empty lines and lines
starting with ``#`` are ignored. This is particularly useful for aliases. If both
files exist, the one in the home directory is read first and aliases defined there
can be overridden by the local file.

Expand Down
5 changes: 4 additions & 1 deletion Lib/pdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,10 @@ def setup(self, f, tb):
self.curframe_locals = self.curframe.f_locals

if self.rcLines:
self.cmdqueue = self.rcLines
self.cmdqueue = [
line for line in self.rcLines
if line.strip() and not line.strip().startswith("#")
]
self.rcLines = []

# Override Bdb methods
Expand Down
19 changes: 19 additions & 0 deletions Lib/test/test_pdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -2061,8 +2061,27 @@ def test_pdbrc_basic(self):
""")

stdout, stderr = self.run_pdb_script(script, 'q\n', pdbrc=pdbrc, remove_home=True)
self.assertNotIn("SyntaxError", stdout)
self.assertIn("a+8=9", stdout)

def test_pdbrc_empty_line(self):
"""Test that empty lines in .pdbrc are ignored."""

script = textwrap.dedent("""
a = 1
b = 2
c = 3
""")

pdbrc = textwrap.dedent("""
n
""")

stdout, stderr = self.run_pdb_script(script, 'q\n', pdbrc=pdbrc, remove_home=True)
self.assertIn("b = 2", stdout)
self.assertNotIn("c = 3", stdout)

def test_pdbrc_alias(self):
script = textwrap.dedent("""
class A:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Ignore empty lines and comments in ``.pdbrc``

0 comments on commit eaefa0b

Please sign in to comment.