[Python-checkins] r78663 - in python/branches/py3k: Lib/test/test_subprocess.py

florent.xicluna python-checkins at python.org
Thu Mar 4 22:50:56 CET 2010


Author: florent.xicluna
Date: Thu Mar  4 22:50:56 2010
New Revision: 78663

Log:
Merged revisions 78661-78662 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78661 | florent.xicluna | 2010-03-04 20:40:48 +0100 (jeu, 04 mar 2010) | 2 lines
  
  Cleanup.
........
  r78662 | florent.xicluna | 2010-03-04 22:31:58 +0100 (jeu, 04 mar 2010) | 2 lines
  
  #2777: Enable test_send_signal, test_kill and test_terminate on all platforms.
........


And fix an oversight of changeset 78510.


Modified:
   python/branches/py3k/   (props changed)
   python/branches/py3k/Lib/test/test_subprocess.py

Modified: python/branches/py3k/Lib/test/test_subprocess.py
==============================================================================
--- python/branches/py3k/Lib/test/test_subprocess.py	(original)
+++ python/branches/py3k/Lib/test/test_subprocess.py	Thu Mar  4 22:50:56 2010
@@ -39,6 +39,12 @@
         # doesn't crash on some buildbots (Alphas in particular).
         support.reap_children()
 
+    def tearDown(self):
+        for inst in subprocess._active:
+            inst.wait()
+        subprocess._cleanup()
+        self.assertFalse(subprocess._active, "subprocess._active not empty")
+
     def assertStderrEqual(self, stderr, expected, msg=None):
         # In a debug build, stuff like "[6580 refs]" is printed to stderr at
         # shutdown time.  That frustrates tests trying to check stderr produced
@@ -548,13 +554,19 @@
             pass
 
 
- at unittest.skipIf(sys.platform == "win32", "POSIX specific tests")
+ at unittest.skipIf(mswindows, "POSIX specific tests")
 class POSIXProcessTestCase(unittest.TestCase):
     def setUp(self):
         # Try to minimize the number of children we have so this test
         # doesn't crash on some buildbots (Alphas in particular).
         support.reap_children()
 
+    def tearDown(self):
+        for inst in subprocess._active:
+            inst.wait()
+        subprocess._cleanup()
+        self.assertFalse(subprocess._active, "subprocess._active not empty")
+
     def test_exceptions(self):
         # caught & re-raised exceptions
         with self.assertRaises(OSError) as c:
@@ -636,15 +648,15 @@
         os.remove(fname)
         self.assertEqual(rc, 47)
 
-    @unittest.skip("See issue #2777")
     def test_send_signal(self):
         p = subprocess.Popen([sys.executable, "-c", "input()"])
 
+        # Let the process initialize correctly (Issue #3137)
+        time.sleep(.1)
         self.assertIs(p.poll(), None)
         p.send_signal(signal.SIGINT)
-        self.assertIsNot(p.wait(), None)
+        self.assertNotEqual(p.wait(), 0)
 
-    @unittest.skip("See issue #2777")
     def test_kill(self):
         p = subprocess.Popen([sys.executable, "-c", "input()"])
 
@@ -652,7 +664,6 @@
         p.kill()
         self.assertEqual(p.wait(), -signal.SIGKILL)
 
-    @unittest.skip("See issue #2777")
     def test_terminate(self):
         p = subprocess.Popen([sys.executable, "-c", "input()"])
 
@@ -661,13 +672,19 @@
         self.assertEqual(p.wait(), -signal.SIGTERM)
 
 
- at unittest.skipUnless(sys.platform == "win32", "Windows specific tests")
+ at unittest.skipUnless(mswindows, "Windows specific tests")
 class Win32ProcessTestCase(unittest.TestCase):
     def setUp(self):
         # Try to minimize the number of children we have so this test
         # doesn't crash on some buildbots (Alphas in particular).
         support.reap_children()
 
+    def tearDown(self):
+        for inst in subprocess._active:
+            inst.wait()
+        subprocess._cleanup()
+        self.assertFalse(subprocess._active, "subprocess._active not empty")
+
     def test_startupinfo(self):
         # startupinfo argument
         # We uses hardcoded constants, because we do not want to
@@ -734,7 +751,6 @@
                              ' -c "import sys; sys.exit(47)"')
         self.assertEqual(rc, 47)
 
-    @unittest.skip("See issue #2777")
     def test_send_signal(self):
         p = subprocess.Popen([sys.executable, "-c", "input()"])
 
@@ -742,7 +758,6 @@
         p.send_signal(signal.SIGTERM)
         self.assertNotEqual(p.wait(), 0)
 
-    @unittest.skip("See issue #2777")
     def test_kill(self):
         p = subprocess.Popen([sys.executable, "-c", "input()"])
 
@@ -750,7 +765,6 @@
         p.kill()
         self.assertNotEqual(p.wait(), 0)
 
-    @unittest.skip("See issue #2777")
     def test_terminate(self):
         p = subprocess.Popen([sys.executable, "-c", "input()"])
 
@@ -764,7 +778,7 @@
 #
 # Actually, getoutput should work on any platform with an os.popen, but
 # I'll take the comment as given, and skip this suite.
- at unittest.skipUnless(os.name != 'posix', "only relevant for UNIX")
+ at unittest.skipUnless(os.name == 'posix', "only relevant for UNIX")
 class CommandTests(unittest.TestCase):
     def test_getoutput(self):
         self.assertEqual(subprocess.getoutput('echo xyzzy'), 'xyzzy')


More information about the Python-checkins mailing list