summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Lapeyre <remi.lapeyre@lenstra.fr>2021-09-20 15:09:05 (GMT)
committerGitHub <noreply@github.com>2021-09-20 15:09:05 (GMT)
commit4d2957c1b9a915f76da418e89bf9b5add141ca3e (patch)
treec69d8a5b4c23e4800f877945f727a5786cb50717
parentef9e22b253253615098d22cb49141a2a1024ee3c (diff)
downloadcpython-4d2957c1b9a915f76da418e89bf9b5add141ca3e.zip
cpython-4d2957c1b9a915f76da418e89bf9b5add141ca3e.tar.gz
cpython-4d2957c1b9a915f76da418e89bf9b5add141ca3e.tar.bz2
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>
-rw-r--r--Lib/subprocess.py5
-rw-r--r--Lib/test/test_subprocess.py8
-rw-r--r--Misc/NEWS.d/next/Library/2020-10-18-09-42-53.bpo-40497.CRz2sG.rst4
3 files changed, 15 insertions, 2 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index dd1174e..33f022f 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -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
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 87967ca..3af523e 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -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:
diff --git a/Misc/NEWS.d/next/Library/2020-10-18-09-42-53.bpo-40497.CRz2sG.rst b/Misc/NEWS.d/next/Library/2020-10-18-09-42-53.bpo-40497.CRz2sG.rst
new file mode 100644
index 0000000..067c486
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2020-10-18-09-42-53.bpo-40497.CRz2sG.rst
@@ -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.