summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorTimothy Hopper <tdhopper@users.noreply.github.com>2019-08-02 22:20:14 (GMT)
committerSteve Dower <steve.dower@python.org>2019-08-02 22:20:14 (GMT)
commit7ea9a85f132b32347fcbd2cbe1b553a2e9890b56 (patch)
tree5f941b1b728d2500ce4d6c5622cb3d2947cae39c /Lib
parent8fbece135d7615e836a845ca39223097046c8b8b (diff)
downloadcpython-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>
Diffstat (limited to 'Lib')
-rwxr-xr-xLib/pdb.py14
-rw-r--r--Lib/test/test_pdb.py13
2 files changed, 19 insertions, 8 deletions
diff --git a/Lib/pdb.py b/Lib/pdb.py
index 5e62f39..69fd8bd 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -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'