summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2011-05-28 16:06:02 (GMT)
committerGregory P. Smith <greg@krypto.org>2011-05-28 16:06:02 (GMT)
commit7439e7b7cec2727f5f891dc5ea38acf8b239fb8e (patch)
treec3c672104bcc016c5ff6c65323bb5f94faa13414
parent6e5fd04ce21b421ff975c93611ff6c81547ce183 (diff)
downloadcpython-7439e7b7cec2727f5f891dc5ea38acf8b239fb8e.zip
cpython-7439e7b7cec2727f5f891dc5ea38acf8b239fb8e.tar.gz
cpython-7439e7b7cec2727f5f891dc5ea38acf8b239fb8e.tar.bz2
Fix ProcessTestCasePOSIXPurePython to test the module from import when
_posixsubprocess doesn't exist rather than simply stubbing it out after the fact. This adds coverage for the RuntimeWarning as well as using the pure python _create_pipe instead of using _posixsubprocess.cloexec_pipe unintentionally with the pure python code. Ironically: I don't think any platform should ever actually _use_ the pure Python subprocess code on POSIX platforms anymore. This at least tests it properly in this stable branch. The pure python code for this is likely to be removed in 3.3.
-rw-r--r--Lib/test/test_subprocess.py26
1 files changed, 17 insertions, 9 deletions
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 176ff10..ad89864 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -1399,15 +1399,23 @@ class ProcessTestCaseNoPoll(ProcessTestCase):
@unittest.skipUnless(getattr(subprocess, '_posixsubprocess', False),
"_posixsubprocess extension module not found.")
class ProcessTestCasePOSIXPurePython(ProcessTestCase, POSIXProcessTestCase):
- def setUp(self):
- subprocess._posixsubprocess = None
- ProcessTestCase.setUp(self)
- POSIXProcessTestCase.setUp(self)
-
- def tearDown(self):
- subprocess._posixsubprocess = sys.modules['_posixsubprocess']
- POSIXProcessTestCase.tearDown(self)
- ProcessTestCase.tearDown(self)
+ @classmethod
+ def setUpClass(cls):
+ global subprocess
+ assert subprocess._posixsubprocess
+ # Reimport subprocess while forcing _posixsubprocess to not exist.
+ with support.check_warnings(('.*_posixsubprocess .* not being used.*',
+ RuntimeWarning)):
+ subprocess = support.import_fresh_module(
+ 'subprocess', blocked=['_posixsubprocess'])
+ assert not subprocess._posixsubprocess
+
+ @classmethod
+ def tearDownClass(cls):
+ global subprocess
+ # Reimport subprocess as it should be, restoring order to the universe.
+ subprocess = support.import_fresh_module('subprocess')
+ assert subprocess._posixsubprocess
class HelperFunctionTests(unittest.TestCase):