mirror of https://github.com/python/cpython
bpo-40497: Fix handling of check in subprocess.check_output() (GH-19897)
Co-authored-by: Tal Einat <taleinat@gmail.com> Co-authored-by: Łukasz Langa <lukasz@langa.pl>
This commit is contained in:
parent
ef9e22b253
commit
4d2957c1b9
|
@ -405,8 +405,9 @@ def check_output(*popenargs, timeout=None, **kwargs):
|
|||
decoded according to locale encoding, or by "encoding" if set. Text mode
|
||||
is triggered by setting any of text, encoding, errors or universal_newlines.
|
||||
"""
|
||||
if 'stdout' in kwargs:
|
||||
raise ValueError('stdout argument not allowed, it will be overridden.')
|
||||
for kw in ('stdout', 'check'):
|
||||
if kw in kwargs:
|
||||
raise ValueError(f'{kw} argument not allowed, it will be overridden.')
|
||||
|
||||
if 'input' in kwargs and kwargs['input'] is None:
|
||||
# Explicitly passing input=None was previously equivalent to passing an
|
||||
|
|
|
@ -171,6 +171,14 @@ class ProcessTestCase(BaseTestCase):
|
|||
[sys.executable, "-c", "print('BDFL')"])
|
||||
self.assertIn(b'BDFL', output)
|
||||
|
||||
with self.assertRaisesRegex(ValueError,
|
||||
"stdout argument not allowed, it will be overridden"):
|
||||
subprocess.check_output([], stdout=None)
|
||||
|
||||
with self.assertRaisesRegex(ValueError,
|
||||
"check argument not allowed, it will be overridden"):
|
||||
subprocess.check_output([], check=False)
|
||||
|
||||
def test_check_output_nonzero(self):
|
||||
# check_call() function with non-zero return code
|
||||
with self.assertRaises(subprocess.CalledProcessError) as c:
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
:meth:`subprocess.check_output` now raises :exc:`ValueError` when the
|
||||
invalid keyword argument *check* is passed by user code. Previously
|
||||
such use would fail later with a :exc:`TypeError`.
|
||||
Patch by Rémi Lapeyre.
|
Loading…
Reference in New Issue