]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-90095: Ignore empty lines and comments in `.pdbrc` (GH-116834) (#116854)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 15 Mar 2024 09:52:00 +0000 (10:52 +0100)
committerGitHub <noreply@github.com>
Fri, 15 Mar 2024 09:52:00 +0000 (09:52 +0000)
gh-90095: Ignore empty lines and comments in `.pdbrc` (GH-116834)
(cherry picked from commit a50cf6c3d76b34e2ee9f92a248f1b0df24e407f6)

Co-authored-by: Tian Gao <gaogaotiantian@hotmail.com>
Doc/library/pdb.rst
Lib/pdb.py
Lib/test/test_pdb.py
Misc/NEWS.d/next/Library/2024-03-14-20-59-28.gh-issue-90095.7UaJ1U.rst [new file with mode: 0644]

index d9cb9a4ecb1b3caf93856ed28cf55f6736c9dd80..b8f15aaa5a9a09bf08bb30fecb79f69fec87be1d 100644 (file)
@@ -284,7 +284,8 @@ There are three preset *convenience variables*:
 
 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.
 
index b76a68315257134e297b6d10918884ab8b1fab59..225c9f253ef310dddb6565118abefcb9596b1272 100755 (executable)
@@ -301,7 +301,10 @@ class Pdb(bdb.Bdb, cmd.Cmd):
         self.set_convenience_variable(self.curframe, '_frame', self.curframe)
 
         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
index db30412f55a345ad0824ca2f409484ea74e04213..5bdc5f22d0b798a971b7d80ef22ecea755c5fc1f 100644 (file)
@@ -2212,8 +2212,27 @@ def bœr():
         """)
 
         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:
diff --git a/Misc/NEWS.d/next/Library/2024-03-14-20-59-28.gh-issue-90095.7UaJ1U.rst b/Misc/NEWS.d/next/Library/2024-03-14-20-59-28.gh-issue-90095.7UaJ1U.rst
new file mode 100644 (file)
index 0000000..b7024c7
--- /dev/null
@@ -0,0 +1 @@
+Ignore empty lines and comments in ``.pdbrc``