[Python-checkins] cpython (merge 3.3 -> default): Issue #16115: Merge test improvements from 3.3.

chris.jerdonek python-checkins at python.org
Tue Oct 9 01:02:18 CEST 2012


http://hg.python.org/cpython/rev/1b37fc50dc1b
changeset:   79599:1b37fc50dc1b
parent:      79597:a61b3faa1c61
parent:      79598:862430c68fec
user:        Chris Jerdonek <chris.jerdonek at gmail.com>
date:        Mon Oct 08 16:01:00 2012 -0700
summary:
  Issue #16115: Merge test improvements from 3.3.

files:
  Lib/test/test_subprocess.py |  37 ++++++++++++++++++------
  Misc/NEWS                   |   3 ++
  2 files changed, 30 insertions(+), 10 deletions(-)


diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -192,6 +192,33 @@
         p.wait()
         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.
     def _normalize_cwd(self, cwd):
         # Normalize an expected cwd (for Tru64 support).
@@ -299,16 +326,6 @@
         # argument.  For test runs in the build directory, see #7774.
         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):
         # stdin redirection
         p = subprocess.Popen([sys.executable, "-c",
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -129,6 +129,9 @@
 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
   `test.support.temp_cwd()`.  Patch by Chris Jerdonek.
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list