Add an os.get_exec_path() function to return the list of directories

that launching a subprocess will search for the executable.
Refactors some code in os._execvpe().
This commit is contained in:
Gregory P. Smith 2010-02-27 07:22:22 +00:00
parent 9a81697494
commit b6e8c7e8fb
4 changed files with 52 additions and 10 deletions

View file

@ -407,6 +407,27 @@ class EnvironTests(mapping_tests.BasicTestMappingProtocol):
self.assertTrue(isinstance(env.data, dict))
self.assertEqual(repr(env), 'environ({!r})'.format(env.data))
def test_get_exec_path(self):
defpath_list = os.defpath.split(os.pathsep)
test_path = ['/monty', '/python', '', '/flying/circus']
test_env = {'PATH': os.pathsep.join(test_path)}
saved_environ = os.environ
try:
os.environ = dict(test_env)
# Test that defaulting to os.environ works.
self.assertSequenceEqual(test_path, os.get_exec_path())
self.assertSequenceEqual(test_path, os.get_exec_path(env=None))
finally:
os.environ = saved_environ
# No PATH environment variable
self.assertSequenceEqual(defpath_list, os.get_exec_path({}))
# Empty PATH environment variable
self.assertSequenceEqual(('',), os.get_exec_path({'PATH':''}))
# Supplied PATH environment variable
self.assertSequenceEqual(test_path, os.get_exec_path(test_env))
class WalkTests(unittest.TestCase):
"""Tests for os.walk()."""