- Issue #17012: shutil.which() no longer fallbacks to the PATH environment

variable if empty path argument is specified.  Patch by Serhiy Storchaka.
This commit is contained in:
Barry Warsaw 2013-04-16 11:05:03 -04:00
parent 51ce29c530
commit 618738b921
3 changed files with 29 additions and 1 deletions

View file

@ -24,6 +24,7 @@ import warnings
from test import support
from test.support import TESTFN, check_warnings, captured_stdout, requires_zlib
from unittest.mock import patch
try:
import bz2
@ -1352,6 +1353,26 @@ class TestWhich(unittest.TestCase):
rv = shutil.which(self.file[:-4], path=self.dir)
self.assertEqual(rv, self.temp_file.name[:-4] + ".EXE")
def test_environ_path(self):
with support.EnvironmentVarGuard() as env:
env['PATH'] = self.dir
rv = shutil.which(self.file)
self.assertEqual(rv, self.temp_file.name)
def test_empty_path(self):
base_dir = os.path.dirname(self.dir)
with support.temp_cwd(path=self.dir), \
support.EnvironmentVarGuard() as env:
env['PATH'] = self.dir
rv = shutil.which(self.file, path='')
self.assertIsNone(rv)
def test_empty_path_no_PATH(self):
with support.EnvironmentVarGuard() as env:
env.pop('PATH', None)
rv = shutil.which(self.file)
self.assertIsNone(rv)
class TestMove(unittest.TestCase):