diff mbox series

[07/10] iotests: use subprocess.run where possible

Message ID 20210512214642.2803189-8-jsnow@redhat.com (mailing list archive)
State New, archived
Headers show
Series Python: delint iotests, machine.py and console_socket.py | expand

Commit Message

John Snow May 12, 2021, 9:46 p.m. UTC
pylint 2.8.x adds warnings whenever we use Popen calls without using
'with', so it's desirable to convert synchronous calls to run()
invocations where applicable.

(Though, this trades one pylint warning for another due to a pylint bug,
which I've silenced with a pragma and a link to the bug.)

Signed-off-by: John Snow <jsnow@redhat.com>
---
 tests/qemu-iotests/iotests.py | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

Comments

John Snow May 14, 2021, 7:22 p.m. UTC | #1
On 5/12/21 5:46 PM, John Snow wrote:
> pylint 2.8.x adds warnings whenever we use Popen calls without using
> 'with', so it's desirable to convert synchronous calls to run()
> invocations where applicable.
> 
> (Though, this trades one pylint warning for another due to a pylint bug,
> which I've silenced with a pragma and a link to the bug.)
> 
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>   tests/qemu-iotests/iotests.py | 19 +++++++++++--------
>   1 file changed, 11 insertions(+), 8 deletions(-)
> 
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index 5af01828951..46deb7f4dd4 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -113,15 +113,16 @@ def qemu_tool_pipe_and_status(tool: str, args: Sequence[str],
>       Run a tool and return both its output and its exit code
>       """
>       stderr = subprocess.STDOUT if connect_stderr else None
> -    subp = subprocess.Popen(args,
> -                            stdout=subprocess.PIPE,
> -                            stderr=stderr,
> -                            universal_newlines=True)
> -    output = subp.communicate()[0]
> -    if subp.returncode < 0:
> +    res = subprocess.run(args,
> +                         stdout=subprocess.PIPE,
> +                         stderr=stderr,
> +                         universal_newlines=True,
> +                         check=False)
> +    output = res.stdout
> +    if res.returncode < 0:
>           cmd = ' '.join(args)
> -        sys.stderr.write(f'{tool} received signal {-subp.returncode}: {cmd}\n')
> -    return (output, subp.returncode)
> +        sys.stderr.write(f'{tool} received signal {-res.returncode}: {cmd}\n')
> +    return (output, res.returncode)
>   
>   def qemu_img_pipe_and_status(*args: str) -> Tuple[str, int]:
>       """
> @@ -1153,6 +1154,8 @@ def _verify_virtio_scsi_pci_or_ccw() -> None:
>   
>   
>   def supports_quorum():
> +    # https://github.com/PyCQA/astroid/issues/689

Oh, realizing this bug was closed, so this is something 
similar-but-different.

Bah. I'll delete this comment and change the commit message.

> +    # pylint: disable=unsupported-membership-test
>       return 'quorum' in qemu_img_pipe('--help')
>   
>   def verify_quorum():
>
diff mbox series

Patch

diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 5af01828951..46deb7f4dd4 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -113,15 +113,16 @@  def qemu_tool_pipe_and_status(tool: str, args: Sequence[str],
     Run a tool and return both its output and its exit code
     """
     stderr = subprocess.STDOUT if connect_stderr else None
-    subp = subprocess.Popen(args,
-                            stdout=subprocess.PIPE,
-                            stderr=stderr,
-                            universal_newlines=True)
-    output = subp.communicate()[0]
-    if subp.returncode < 0:
+    res = subprocess.run(args,
+                         stdout=subprocess.PIPE,
+                         stderr=stderr,
+                         universal_newlines=True,
+                         check=False)
+    output = res.stdout
+    if res.returncode < 0:
         cmd = ' '.join(args)
-        sys.stderr.write(f'{tool} received signal {-subp.returncode}: {cmd}\n')
-    return (output, subp.returncode)
+        sys.stderr.write(f'{tool} received signal {-res.returncode}: {cmd}\n')
+    return (output, res.returncode)
 
 def qemu_img_pipe_and_status(*args: str) -> Tuple[str, int]:
     """
@@ -1153,6 +1154,8 @@  def _verify_virtio_scsi_pci_or_ccw() -> None:
 
 
 def supports_quorum():
+    # https://github.com/PyCQA/astroid/issues/689
+    # pylint: disable=unsupported-membership-test
     return 'quorum' in qemu_img_pipe('--help')
 
 def verify_quorum():