Commit 25ec4a45 authored by Anthony Sottile's avatar Anthony Sottile Committed by Steve Dower

bpo-36264: Don't honor POSIX HOME in os.path.expanduser on Windows (GH-12282)

parent 410aea1e
...@@ -60,6 +60,7 @@ class BasePyPIRCCommandTestCase(support.TempdirManager, ...@@ -60,6 +60,7 @@ class BasePyPIRCCommandTestCase(support.TempdirManager,
super(BasePyPIRCCommandTestCase, self).setUp() super(BasePyPIRCCommandTestCase, self).setUp()
self.tmp_dir = self.mkdtemp() self.tmp_dir = self.mkdtemp()
os.environ['HOME'] = self.tmp_dir os.environ['HOME'] = self.tmp_dir
os.environ['USERPROFILE'] = self.tmp_dir
self.rc = os.path.join(self.tmp_dir, '.pypirc') self.rc = os.path.join(self.tmp_dir, '.pypirc')
self.dist = Distribution() self.dist = Distribution()
......
...@@ -463,7 +463,7 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard, ...@@ -463,7 +463,7 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard,
# win32-style # win32-style
if sys.platform == 'win32': if sys.platform == 'win32':
# home drive should be found # home drive should be found
os.environ['HOME'] = temp_dir os.environ['USERPROFILE'] = temp_dir
files = dist.find_config_files() files = dist.find_config_files()
self.assertIn(user_filename, files, self.assertIn(user_filename, files,
'%r not found in %r' % (user_filename, files)) '%r not found in %r' % (user_filename, files))
......
...@@ -299,9 +299,7 @@ def expanduser(path): ...@@ -299,9 +299,7 @@ def expanduser(path):
while i < n and path[i] not in _get_bothseps(path): while i < n and path[i] not in _get_bothseps(path):
i += 1 i += 1
if 'HOME' in os.environ: if 'USERPROFILE' in os.environ:
userhome = os.environ['HOME']
elif 'USERPROFILE' in os.environ:
userhome = os.environ['USERPROFILE'] userhome = os.environ['USERPROFILE']
elif not 'HOMEPATH' in os.environ: elif not 'HOMEPATH' in os.environ:
return path return path
......
...@@ -154,6 +154,7 @@ class NetrcTestCase(unittest.TestCase): ...@@ -154,6 +154,7 @@ class NetrcTestCase(unittest.TestCase):
called.append(s) called.append(s)
with support.EnvironmentVarGuard() as environ: with support.EnvironmentVarGuard() as environ:
environ.set('HOME', fake_home) environ.set('HOME', fake_home)
environ.set('USERPROFILE', fake_home)
result = orig_expanduser(s) result = orig_expanduser(s)
return result return result
......
...@@ -262,20 +262,21 @@ class TestNtpath(unittest.TestCase): ...@@ -262,20 +262,21 @@ class TestNtpath(unittest.TestCase):
env['USERPROFILE'] = 'C:\\eric\\idle' env['USERPROFILE'] = 'C:\\eric\\idle'
tester('ntpath.expanduser("~test")', 'C:\\eric\\test') tester('ntpath.expanduser("~test")', 'C:\\eric\\test')
tester('ntpath.expanduser("~")', 'C:\\eric\\idle') tester('ntpath.expanduser("~")', 'C:\\eric\\idle')
env.clear()
env['HOME'] = 'C:\\idle\\eric'
tester('ntpath.expanduser("~test")', 'C:\\idle\\test')
tester('ntpath.expanduser("~")', 'C:\\idle\\eric')
tester('ntpath.expanduser("~test\\foo\\bar")', tester('ntpath.expanduser("~test\\foo\\bar")',
'C:\\idle\\test\\foo\\bar') 'C:\\eric\\test\\foo\\bar')
tester('ntpath.expanduser("~test/foo/bar")', tester('ntpath.expanduser("~test/foo/bar")',
'C:\\idle\\test/foo/bar') 'C:\\eric\\test/foo/bar')
tester('ntpath.expanduser("~\\foo\\bar")', tester('ntpath.expanduser("~\\foo\\bar")',
'C:\\idle\\eric\\foo\\bar') 'C:\\eric\\idle\\foo\\bar')
tester('ntpath.expanduser("~/foo/bar")', tester('ntpath.expanduser("~/foo/bar")',
'C:\\idle\\eric/foo/bar') 'C:\\eric\\idle/foo/bar')
# bpo-36264: ignore `HOME` when set on windows
env.clear()
env['HOME'] = 'F:\\'
env['USERPROFILE'] = 'C:\\eric\\idle'
tester('ntpath.expanduser("~test")', 'C:\\eric\\test')
tester('ntpath.expanduser("~")', 'C:\\eric\\idle')
@unittest.skipUnless(nt, "abspath requires 'nt' module") @unittest.skipUnless(nt, "abspath requires 'nt' module")
def test_abspath(self): def test_abspath(self):
......
Don't honor POSIX ``HOME`` in ``os.path.expanduser`` on windows. Patch by
Anthony Sottile.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment