mirror of https://github.com/python/cpython
Issue #16115: Improve testing of the executable argument to subprocess.Popen().
This commit is contained in:
parent
101591e9d5
commit
776cb199bc
|
@ -192,6 +192,33 @@ class ProcessTestCase(BaseTestCase):
|
||||||
p.wait()
|
p.wait()
|
||||||
self.assertEqual(p.stderr, None)
|
self.assertEqual(p.stderr, None)
|
||||||
|
|
||||||
|
def _assert_python(self, pre_args, **kwargs):
|
||||||
|
# We include sys.exit() to prevent the test runner from hanging
|
||||||
|
# whenever python is found.
|
||||||
|
args = pre_args + ["import sys; sys.exit(47)"]
|
||||||
|
p = subprocess.Popen(args, **kwargs)
|
||||||
|
p.wait()
|
||||||
|
self.assertEqual(47, p.returncode)
|
||||||
|
|
||||||
|
def test_executable(self):
|
||||||
|
# Check that the executable argument works.
|
||||||
|
self._assert_python(["doesnotexist", "-c"], executable=sys.executable)
|
||||||
|
|
||||||
|
def test_executable_takes_precedence(self):
|
||||||
|
# Check that the executable argument takes precedence over args[0].
|
||||||
|
#
|
||||||
|
# Verify first that the call succeeds without the executable arg.
|
||||||
|
pre_args = [sys.executable, "-c"]
|
||||||
|
self._assert_python(pre_args)
|
||||||
|
self.assertRaises(FileNotFoundError, self._assert_python, pre_args,
|
||||||
|
executable="doesnotexist")
|
||||||
|
|
||||||
|
@unittest.skipIf(mswindows, "executable argument replaces shell")
|
||||||
|
def test_executable_replaces_shell(self):
|
||||||
|
# Check that the executable argument replaces the default shell
|
||||||
|
# when shell=True.
|
||||||
|
self._assert_python([], executable=sys.executable, shell=True)
|
||||||
|
|
||||||
# For use in the test_cwd* tests below.
|
# For use in the test_cwd* tests below.
|
||||||
def _normalize_cwd(self, cwd):
|
def _normalize_cwd(self, cwd):
|
||||||
# Normalize an expected cwd (for Tru64 support).
|
# Normalize an expected cwd (for Tru64 support).
|
||||||
|
@ -299,16 +326,6 @@ class ProcessTestCase(BaseTestCase):
|
||||||
# argument. For test runs in the build directory, see #7774.
|
# argument. For test runs in the build directory, see #7774.
|
||||||
self._assert_cwd('', "somethingyoudonthave", executable=sys.executable)
|
self._assert_cwd('', "somethingyoudonthave", executable=sys.executable)
|
||||||
|
|
||||||
def test_executable_precedence(self):
|
|
||||||
# To the precedence of executable argument over args[0]
|
|
||||||
# For a normal installation, it should work without 'cwd'
|
|
||||||
# argument. For test runs in the build directory, see #7774.
|
|
||||||
python_dir = os.path.dirname(os.path.realpath(sys.executable))
|
|
||||||
p = subprocess.Popen(["nonexistent","-c",'import sys; sys.exit(42)'],
|
|
||||||
executable=sys.executable, cwd=python_dir)
|
|
||||||
p.wait()
|
|
||||||
self.assertEqual(p.returncode, 42)
|
|
||||||
|
|
||||||
def test_stdin_pipe(self):
|
def test_stdin_pipe(self):
|
||||||
# stdin redirection
|
# stdin redirection
|
||||||
p = subprocess.Popen([sys.executable, "-c",
|
p = subprocess.Popen([sys.executable, "-c",
|
||||||
|
|
|
@ -100,6 +100,9 @@ Library
|
||||||
Tests
|
Tests
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
- Issue #16115: Add some tests for the executable argument to
|
||||||
|
subprocess.Popen(). Initial patch by Kushal Das.
|
||||||
|
|
||||||
- Issue #15304: Fix warning message when `os.chdir()` fails inside
|
- Issue #15304: Fix warning message when `os.chdir()` fails inside
|
||||||
`test.support.temp_cwd()`. Patch by Chris Jerdonek.
|
`test.support.temp_cwd()`. Patch by Chris Jerdonek.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue