diff options
author | Florent Xicluna <florent.xicluna@gmail.com> | 2010-03-27 22:47:23 (GMT) |
---|---|---|
committer | Florent Xicluna <florent.xicluna@gmail.com> | 2010-03-27 22:47:23 (GMT) |
commit | c049d870b58107945d8e9784df1fdfbd4e9fa6be (patch) | |
tree | 62c9cb1eb57deb161fa0d0db2f6383f7abb5d5c1 | |
parent | d35f117192d81788c4d00753da2a608605587a70 (diff) | |
download | cpython-c049d870b58107945d8e9784df1fdfbd4e9fa6be.zip cpython-c049d870b58107945d8e9784df1fdfbd4e9fa6be.tar.gz cpython-c049d870b58107945d8e9784df1fdfbd4e9fa6be.tar.bz2 |
Merged revisions 79344,79346,79350 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r79344 | florent.xicluna | 2010-03-23 15:36:45 +0100 (mar, 23 mar 2010) | 2 lines
Silence test_subprocess.
........
r79346 | florent.xicluna | 2010-03-23 16:05:30 +0100 (mar, 23 mar 2010) | 2 lines
The standard error should be empty when the signal is killed, except on SIGINT.
........
r79350 | florent.xicluna | 2010-03-23 20:19:16 +0100 (mar, 23 mar 2010) | 2 lines
The SIGINT signal may happen earlier, during site.py initialization.
........
-rw-r--r-- | Lib/test/test_subprocess.py | 41 |
1 files changed, 16 insertions, 25 deletions
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index 9f8512d..ce0bcfe 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -37,7 +37,7 @@ except AttributeError: return os.open(fname, os.O_RDWR|os.O_CREAT), fname -class ProcessTestCase(unittest.TestCase): +class BaseTestCase(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). @@ -56,6 +56,9 @@ class ProcessTestCase(unittest.TestCase): actual = re.sub("\[\d+ refs\]\r?\n?$", "", stderr.decode()).encode() self.assertEqual(actual, expected, msg) + +class ProcessTestCase(BaseTestCase): + def test_call_seq(self): # call() function with sequence argument rc = subprocess.call([sys.executable, "-c", @@ -559,17 +562,7 @@ class _SuppressCoreFiles(object): @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") +class POSIXProcessTestCase(BaseTestCase): def test_exceptions(self): nonexistent_dir = "/_this/pa.th/does/not/exist" @@ -752,7 +745,7 @@ class POSIXProcessTestCase(unittest.TestCase): # Do not inherit file handles from the parent. # It should fix failures on some platforms. p = subprocess.Popen([sys.executable, "-c", "input()"], close_fds=True, - stdin=subprocess.PIPE) + stdin=subprocess.PIPE, stderr=subprocess.PIPE) # Let the process initialize (Issue #3137) time.sleep(0.1) @@ -773,29 +766,25 @@ class POSIXProcessTestCase(unittest.TestCase): def test_send_signal(self): p = self._kill_process('send_signal', signal.SIGINT) + _, stderr = p.communicate() + self.assertIn(b'KeyboardInterrupt', stderr) self.assertNotEqual(p.wait(), 0) def test_kill(self): p = self._kill_process('kill') + _, stderr = p.communicate() + self.assertStderrEqual(stderr, b'') self.assertEqual(p.wait(), -signal.SIGKILL) def test_terminate(self): p = self._kill_process('terminate') + _, stderr = p.communicate() + self.assertStderrEqual(stderr, b'') self.assertEqual(p.wait(), -signal.SIGTERM) @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") +class Win32ProcessTestCase(BaseTestCase): def test_startupinfo(self): # startupinfo argument @@ -866,7 +855,7 @@ class Win32ProcessTestCase(unittest.TestCase): def _kill_process(self, method, *args): # Some win32 buildbot raises EOFError if stdin is inherited p = subprocess.Popen([sys.executable, "-c", "input()"], - stdin=subprocess.PIPE) + stdin=subprocess.PIPE, stderr=subprocess.PIPE) # Let the process initialize (Issue #3137) time.sleep(0.1) @@ -884,6 +873,8 @@ class Win32ProcessTestCase(unittest.TestCase): if count > 1: print("p.{}{} succeeded after " "{} attempts".format(method, args, count), file=sys.stderr) + _, stderr = p.communicate() + self.assertStderrEqual(stderr, b'') self.assertEqual(p.wait(), returncode) self.assertNotEqual(returncode, 0) |