# This test verifies that the false positives generated by pylint are
# correctly suppressed.

import subprocess


def test_popen(proc):
    p = subprocess.Popen(proc, stdout=subprocess.PIPE,
                             stderr=subprocess.STDOUT)
    tmp1 = p.poll
    tmp2 = p.returncode
    tmp3 = p.stdin
    tmp4 = p.stdout
    tmp5 = p.stderr
    tmp6 = p.wait
    tmp7 = p.pid
