diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2011-06-01 00:57:47 +0200 |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2011-06-01 00:57:47 +0200 |
commit | 87b9bc3893bac402bd773a83ee6734507f978607 (patch) | |
tree | 11a077f4d4f36f6bbb7b5d2661c4d326e24cc8df /Lib/test/test_subprocess.py | |
parent | ee49797c8dacb886d58804e59f6431ea6f842be2 (diff) | |
download | cpython-git-87b9bc3893bac402bd773a83ee6734507f978607.tar.gz |
Close #12085: Fix an attribute error in subprocess.Popen destructor if the
constructor has failed, e.g. because of an undeclared keyword argument. Patch
written by Oleg Oshmyan.
Diffstat (limited to 'Lib/test/test_subprocess.py')
-rw-r--r-- | Lib/test/test_subprocess.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index ad89864f2e..9d6665998e 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -121,6 +121,16 @@ class ProcessTestCase(BaseTestCase): env=newenv) self.assertEqual(rc, 1) + def test_invalid_args(self): + # Popen() called with invalid arguments should raise TypeError + # but Popen.__del__ should not complain (issue #12085) + with support.captured_stderr() as s: + self.assertRaises(TypeError, subprocess.Popen, invalid_arg_name=1) + argcount = subprocess.Popen.__init__.__code__.co_argcount + too_many_args = [0] * (argcount + 1) + self.assertRaises(TypeError, subprocess.Popen, *too_many_args) + self.assertEqual(s.getvalue(), '') + def test_stdin_none(self): # .stdin is None when not redirected p = subprocess.Popen([sys.executable, "-c", 'print("banana")'], |