From: saucoide <32314353+saucoide@users.noreply.github.com> Date: Sun, 21 Dec 2025 16:58:07 +0000 (+0100) Subject: gh-80744: do not read .pdbrc twice when cwd == $home (#136816) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=09044dd42b50e628b197afb2979afcbe49d4b83f;p=thirdparty%2FPython%2Fcpython.git gh-80744: do not read .pdbrc twice when cwd == $home (#136816) --- diff --git a/Lib/pdb.py b/Lib/pdb.py index 4a6bc17e91cf..eee0273fdc46 100644 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -391,17 +391,22 @@ class Pdb(bdb.Bdb, cmd.Cmd): # Read ~/.pdbrc and ./.pdbrc self.rcLines = [] if readrc: + home_rcfile = os.path.expanduser("~/.pdbrc") + local_rcfile = os.path.abspath(".pdbrc") + try: - with open(os.path.expanduser('~/.pdbrc'), encoding='utf-8') as rcFile: - self.rcLines.extend(rcFile) - except OSError: - pass - try: - with open(".pdbrc", encoding='utf-8') as rcFile: - self.rcLines.extend(rcFile) + with open(home_rcfile, encoding='utf-8') as rcfile: + self.rcLines.extend(rcfile) except OSError: pass + if local_rcfile != home_rcfile: + try: + with open(local_rcfile, encoding='utf-8') as rcfile: + self.rcLines.extend(rcfile) + except OSError: + pass + self.commands = {} # associates a command list to breakpoint numbers self.commands_defining = False # True while in the process of defining # a command list diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 4352aa6abfea..0e23cd660437 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -4093,6 +4093,23 @@ def bœr(): f.write("invalid") self.assertEqual(pdb.Pdb().rcLines[0], "invalid") + def test_readrc_current_dir(self): + with os_helper.temp_cwd() as cwd: + rc_path = os.path.join(cwd, ".pdbrc") + with open(rc_path, "w") as f: + f.write("invalid") + self.assertEqual(pdb.Pdb().rcLines[-1], "invalid") + + def test_readrc_cwd_is_home(self): + with os_helper.EnvironmentVarGuard() as env: + env.unset("HOME") + with os_helper.temp_cwd() as cwd, patch("os.path.expanduser"): + rc_path = os.path.join(cwd, ".pdbrc") + os.path.expanduser.return_value = rc_path + with open(rc_path, "w") as f: + f.write("invalid") + self.assertEqual(pdb.Pdb().rcLines, ["invalid"]) + def test_header(self): stdout = StringIO() header = 'Nobody expects... blah, blah, blah' diff --git a/Misc/NEWS.d/next/Library/2025-12-20-16-35-42.gh-issue-80744.X4pZ2N.rst b/Misc/NEWS.d/next/Library/2025-12-20-16-35-42.gh-issue-80744.X4pZ2N.rst new file mode 100644 index 000000000000..03ec9e4652b8 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-12-20-16-35-42.gh-issue-80744.X4pZ2N.rst @@ -0,0 +1 @@ +Fix issue where ``pdb`` would read a ``.pdbrc`` twice if launched from the home directory