diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | astroid/brain/brain_subprocess.py | 12 | ||||
-rw-r--r-- | astroid/tests/unittest_brain.py | 12 |
3 files changed, 28 insertions, 0 deletions
@@ -6,6 +6,10 @@ What's New in astroid 2.3.0? ============================ Release Date: TBA +* Add a brain tip for ``subprocess.check_output`` + + Close #689 + * Remove NodeNG.nearest method because of lack of usage in astroid and pylint. Close #691 diff --git a/astroid/brain/brain_subprocess.py b/astroid/brain/brain_subprocess.py index b1b9d23d..5c604918 100644 --- a/astroid/brain/brain_subprocess.py +++ b/astroid/brain/brain_subprocess.py @@ -58,6 +58,18 @@ def _subprocess_transform(): py3_args = "args = []" code = textwrap.dedent( """ + def check_output( + args, *, + stdin=None, + stderr=None, + shell=False, + universal_newlines=False, + timeout=None + ): + + if universal_newlines: + return "" + return b"" class Popen(object): returncode = pid = 0 stdin = stdout = stderr = file() diff --git a/astroid/tests/unittest_brain.py b/astroid/tests/unittest_brain.py index 7a8dfc37..8fde20b6 100644 --- a/astroid/tests/unittest_brain.py +++ b/astroid/tests/unittest_brain.py @@ -1221,6 +1221,18 @@ class SubprocessTest(unittest.TestCase): [inst] = name.inferred() self.assertIsInstance(next(inst.igetattr("args")), nodes.List) + def test_subprcess_check_output(self): + code = """ + import subprocess + + subprocess.check_output(['echo', 'hello']); + """ + node = astroid.extract_node(code) + inferred = next(node.infer()) + # Can be either str or bytes + assert isinstance(inferred, astroid.Const) + assert isinstance(inferred.value, (str, bytes)) + class TestIsinstanceInference: """Test isinstance builtin inference""" |