diff options
author | Timothy Hopper <tdhopper@users.noreply.github.com> | 2019-08-02 22:20:14 (GMT) |
---|---|---|
committer | Steve Dower <steve.dower@python.org> | 2019-08-02 22:20:14 (GMT) |
commit | 7ea9a85f132b32347fcbd2cbe1b553a2e9890b56 (patch) | |
tree | 5f941b1b728d2500ce4d6c5622cb3d2947cae39c | |
parent | 8fbece135d7615e836a845ca39223097046c8b8b (diff) | |
download | cpython-7ea9a85f132b32347fcbd2cbe1b553a2e9890b56.zip cpython-7ea9a85f132b32347fcbd2cbe1b553a2e9890b56.tar.gz cpython-7ea9a85f132b32347fcbd2cbe1b553a2e9890b56.tar.bz2 |
bpo-20523: pdb searches for .pdbrc in ~ instead of $HOME (GH-11847)
Previously pdb checked the $HOME environmental variable
to find the user .pdbrc. If $HOME is not set, the user
.pdbrc would not be found.
Change pdb to use `os.path.expanduser('~')` to determine
the user's home directory. Thus, if $HOME is not set (as
in tox or on Windows), os.path.expanduser('~') falls
back on other techniques for locating the user's home
directory.
This follows pip's implementation for loading .piprc.
Co-authored-by: Dan Lidral-Porter <dlp@aperiodic.org>
-rwxr-xr-x | Lib/pdb.py | 14 | ||||
-rw-r--r-- | Lib/test/test_pdb.py | 13 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2019-02-15-20-42-36.bpo-20523.rRLrvr.rst | 2 |
3 files changed, 21 insertions, 8 deletions
@@ -160,16 +160,14 @@ class Pdb(bdb.Bdb, cmd.Cmd): self.allow_kbdint = False self.nosigint = nosigint - # Read $HOME/.pdbrc and ./.pdbrc + # Read ~/.pdbrc and ./.pdbrc self.rcLines = [] if readrc: - if 'HOME' in os.environ: - envHome = os.environ['HOME'] - try: - with open(os.path.join(envHome, ".pdbrc")) as rcFile: - self.rcLines.extend(rcFile) - except OSError: - pass + try: + with open(os.path.expanduser('~/.pdbrc')) as rcFile: + self.rcLines.extend(rcFile) + except OSError: + pass try: with open(".pdbrc") as rcFile: self.rcLines.extend(rcFile) diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 1e464df..646bdb1 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1377,6 +1377,19 @@ class PdbTestCase(unittest.TestCase): if save_home is not None: os.environ['HOME'] = save_home + def test_readrc_homedir(self): + save_home = os.environ.pop("HOME", None) + with support.temp_dir() as temp_dir, patch("os.path.expanduser"): + rc_path = os.path.join(temp_dir, ".pdbrc") + os.path.expanduser.return_value = rc_path + try: + with open(rc_path, "w") as f: + f.write("invalid") + self.assertEqual(pdb.Pdb().rcLines[0], "invalid") + finally: + if save_home is not None: + os.environ["HOME"] = save_home + def test_header(self): stdout = StringIO() header = 'Nobody expects... blah, blah, blah' diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-02-15-20-42-36.bpo-20523.rRLrvr.rst b/Misc/NEWS.d/next/Core and Builtins/2019-02-15-20-42-36.bpo-20523.rRLrvr.rst new file mode 100644 index 0000000..91397c2 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2019-02-15-20-42-36.bpo-20523.rRLrvr.rst @@ -0,0 +1,2 @@ +``pdb.Pdb`` supports ~/.pdbrc in Windows 7. Patch by Tim Hopper and Dan
+Lidral-Porter.
\ No newline at end of file |