From 3f5318f094b08ab347baf5e64c0d986749fb4a2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20K=C4=99pie=C5=84?= Date: Fri, 22 Apr 2022 11:25:27 +0200 Subject: [PATCH] Fix a PyLint 2.13.7 error PyLint 2.13.7 reports the following error: bin/tests/system/doth/conftest.py:34:28: E0601: Using variable 'stderr' before assignment (used-before-assignment) The reason the current code has not caused problems before is that invoking gnutls-cli with just the --logfile=/dev/null argument causes it to always return with a non-zero exit code, either due to the option not being supported or due to the hostname argument not being provided. In other words, the 'except' branch has always been taken. PyLint is obviously right on a syntactical level, though. Instead of relying on a less than obvious code flow (where the 'except' branch is always taken), rework the flagged code by employing subprocess.run(..., check=False) instead of subprocess.check_output(), making exception handling redundant. While this issue was investigated, it was also noticed that subprocess.check_output() was incorrectly used as a context manager: Popen objects are context managers, but subprocess.check_output() and subprocess.run() are not. Fix by dropping the relevant 'with' statement. --- bin/tests/system/doth/conftest.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/bin/tests/system/doth/conftest.py b/bin/tests/system/doth/conftest.py index ed46680c71..01c2071468 100644 --- a/bin/tests/system/doth/conftest.py +++ b/bin/tests/system/doth/conftest.py @@ -25,13 +25,10 @@ def gnutls_cli_executable(): pytest.skip('gnutls-cli not found in PATH') # Ensure gnutls-cli supports the --logfile command-line option. - args = [executable, '--logfile=/dev/null'] - try: - with subprocess.check_output(args, stderr=subprocess.STDOUT) as _: - pass - except subprocess.CalledProcessError as exc: - stderr = exc.output - if b'illegal option' in stderr: + output = subprocess.run([executable, '--logfile=/dev/null'], + stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + check=False).stdout + if b'illegal option' in output: pytest.skip('gnutls-cli does not support the --logfile option') return executable