refactor the warning test.

This commit is contained in:
Gregory P. Smith 2010-12-04 09:59:52 +00:00
parent 10064e9d7a
commit b4162305bb
1 changed files with 11 additions and 23 deletions

View File

@ -59,31 +59,19 @@ class BaseTestCase(unittest.TestCase):
class DeprecationWarningTests(BaseTestCase):
def setUp(self):
BaseTestCase.setUp(self)
self._saved_warn = warnings.warn
self._warn_calls = []
warnings.warn = self._record_warn
def tearDown(self):
warnings.warn = self._saved_warn
BaseTestCase.tearDown(self)
def _record_warn(self, *args):
"""A warnings.warn function that records calls."""
self._warn_calls.append(args)
self._saved_warn(*args)
def testCloseFdsWarning(self):
quick_process = [sys.executable, "-c", "import sys; sys.exit(0)"]
with warnings.catch_warnings(record=True) as warnlist:
warnings.simplefilter("always")
subprocess.call(quick_process, close_fds=True)
self.assertEqual([], self._warn_calls)
self.assertEqual([], warnlist)
subprocess.call(quick_process, close_fds=False)
self.assertEqual([], self._warn_calls)
self.assertWarns(DeprecationWarning, subprocess.call, quick_process)
self.assertEqual(1, len(self._warn_calls))
self.assertEqual([], warnlist)
with self.assertWarns(DeprecationWarning) as wm:
subprocess.Popen(quick_process).wait()
self.assertEqual(1, len(wm.warnings))
self.assertIn('close_fds parameter was not specified',
self._warn_calls[0][0])
str(wm.warnings[0]))
class ProcessTestCase(BaseTestCase):