Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b416230

Browse files
committed
refactor the warning test.
1 parent 10064e9 commit b416230

1 file changed

Lines changed: 11 additions & 23 deletions

File tree

Lib/test/test_subprocess.py

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -59,31 +59,19 @@ def assertStderrEqual(self, stderr, expected, msg=None):
5959

6060

6161
class DeprecationWarningTests(BaseTestCase):
62-
def setUp(self):
63-
BaseTestCase.setUp(self)
64-
self._saved_warn = warnings.warn
65-
self._warn_calls = []
66-
warnings.warn = self._record_warn
67-
68-
def tearDown(self):
69-
warnings.warn = self._saved_warn
70-
BaseTestCase.tearDown(self)
71-
72-
def _record_warn(self, *args):
73-
"""A warnings.warn function that records calls."""
74-
self._warn_calls.append(args)
75-
self._saved_warn(*args)
76-
7762
def testCloseFdsWarning(self):
7863
quick_process = [sys.executable, "-c", "import sys; sys.exit(0)"]
79-
subprocess.call(quick_process, close_fds=True)
80-
self.assertEqual([], self._warn_calls)
81-
subprocess.call(quick_process, close_fds=False)
82-
self.assertEqual([], self._warn_calls)
83-
self.assertWarns(DeprecationWarning, subprocess.call, quick_process)
84-
self.assertEqual(1, len(self._warn_calls))
85-
self.assertIn('close_fds parameter was not specified',
86-
self._warn_calls[0][0])
64+
with warnings.catch_warnings(record=True) as warnlist:
65+
warnings.simplefilter("always")
66+
subprocess.call(quick_process, close_fds=True)
67+
self.assertEqual([], warnlist)
68+
subprocess.call(quick_process, close_fds=False)
69+
self.assertEqual([], warnlist)
70+
with self.assertWarns(DeprecationWarning) as wm:
71+
subprocess.Popen(quick_process).wait()
72+
self.assertEqual(1, len(wm.warnings))
73+
self.assertIn('close_fds parameter was not specified',
74+
str(wm.warnings[0]))
8775

8876

8977
class ProcessTestCase(BaseTestCase):

0 commit comments

Comments
 (0)