summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--astroid/brain/brain_subprocess.py12
-rw-r--r--astroid/tests/unittest_brain.py12
3 files changed, 28 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 0c4c3e24..91a79c3a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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"""