All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
	Eduardo Habkost <ehabkost@redhat.com>,
	qemu-block@nongnu.org, Hanna Reitz <hreitz@redhat.com>,
	Cleber Rosa <crosa@redhat.com>, John Snow <jsnow@redhat.com>
Subject: [PATCH v2 15/15] iotests: [RFC] drop iotest 297
Date: Tue, 19 Oct 2021 10:49:18 -0400	[thread overview]
Message-ID: <20211019144918.3159078-16-jsnow@redhat.com> (raw)
In-Reply-To: <20211019144918.3159078-1-jsnow@redhat.com>

(This is highlighting a what-if, which might make it clear why any
special infrastructure is still required at all. It's not intended to
actually be merged at this step -- running JUST the iotest linters from
e.g. 'make check' is not yet accommodated, so there's no suitable
replacement for 297 for block test authors.)

Drop 297. As a consequence, we no longer need to pass an environment
variable to the mypy/pylint invocations, so that can be dropped. We also
now no longer need to hide output-except-on-error, so that can be
dropped as well.

The only thing that necessitates any special running logic anymore is
the skip list and the python-test-detection code. Without those, we
could easily codify the tests as simply:

[pylint|mypy] *.py tests/*.py

... and drop this entire file. We're not quite there yet, though.

Signed-off-by: John Snow <jsnow@redhat.com>
---
 tests/qemu-iotests/297        | 82 -----------------------------------
 tests/qemu-iotests/297.out    |  2 -
 tests/qemu-iotests/linters.py | 14 +-----
 3 files changed, 2 insertions(+), 96 deletions(-)
 delete mode 100755 tests/qemu-iotests/297
 delete mode 100644 tests/qemu-iotests/297.out

diff --git a/tests/qemu-iotests/297 b/tests/qemu-iotests/297
deleted file mode 100755
index ee78a627359..00000000000
--- a/tests/qemu-iotests/297
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/env python3
-# group: meta
-#
-# Copyright (C) 2020 Red Hat, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-import os
-import subprocess
-import sys
-from typing import List
-
-import iotests
-import linters
-
-
-# Looking for something?
-#
-#  List of files to exclude from linting: linters.py
-#  mypy configuration:                    mypy.ini
-#  pylint configuration:                  pylintrc
-
-
-def check_linter(linter: str) -> bool:
-    try:
-        linters.run_linter(linter, ['--version'], suppress_output=True)
-    except subprocess.CalledProcessError:
-        iotests.case_notrun(f"'{linter}' not found")
-        return False
-    return True
-
-
-def test_pylint(files: List[str]) -> None:
-    print('=== pylint ===')
-    sys.stdout.flush()
-
-    if not check_linter('pylint'):
-        return
-
-    linters.run_linter('pylint', files)
-
-
-def test_mypy(files: List[str]) -> None:
-    print('=== mypy ===')
-    sys.stdout.flush()
-
-    if not check_linter('mypy'):
-        return
-
-    env = os.environ.copy()
-    env['MYPYPATH'] = env['PYTHONPATH']
-
-    linters.run_linter('mypy', files, env=env, suppress_output=True)
-
-
-def main() -> None:
-    files = linters.get_test_files()
-
-    iotests.logger.debug('Files to be checked:')
-    iotests.logger.debug(', '.join(sorted(files)))
-
-    for test in (test_pylint, test_mypy):
-        try:
-            test(files)
-        except subprocess.CalledProcessError as exc:
-            # Linter failure will be caught by diffing the IO.
-            if exc.output:
-                print(exc.output)
-
-
-iotests.script_main(main)
diff --git a/tests/qemu-iotests/297.out b/tests/qemu-iotests/297.out
deleted file mode 100644
index f2e1314d104..00000000000
--- a/tests/qemu-iotests/297.out
+++ /dev/null
@@ -1,2 +0,0 @@
-=== pylint ===
-=== mypy ===
diff --git a/tests/qemu-iotests/linters.py b/tests/qemu-iotests/linters.py
index 65c4c4e8272..486b7125c1d 100644
--- a/tests/qemu-iotests/linters.py
+++ b/tests/qemu-iotests/linters.py
@@ -17,7 +17,7 @@
 import re
 import subprocess
 import sys
-from typing import List, Mapping, Optional
+from typing import List
 
 
 # TODO: Empty this list!
@@ -55,25 +55,15 @@ def get_test_files() -> List[str]:
     return list(filter(is_python_file, check_tests))
 
 
-def run_linter(
-        tool: str,
-        args: List[str],
-        env: Optional[Mapping[str, str]] = None,
-        suppress_output: bool = False,
-) -> None:
+def run_linter(tool: str, args: List[str]) -> None:
     """
     Run a python-based linting tool.
 
-    :param suppress_output: If True, suppress all stdout/stderr output.
     :raise CalledProcessError: If the linter process exits with failure.
     """
     subprocess.run(
         ('python3', '-m', tool, *args),
-        env=env,
         check=True,
-        stdout=subprocess.PIPE if suppress_output else None,
-        stderr=subprocess.STDOUT if suppress_output else None,
-        universal_newlines=True,
     )
 
 
-- 
2.31.1



      parent reply	other threads:[~2021-10-19 15:31 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-19 14:49 [PATCH v2 00/15] python/iotests: Run iotest linters during Python CI John Snow
2021-10-19 14:49 ` [PATCH v2 01/15] iotests/297: Move pylint config into pylintrc John Snow
2021-10-19 14:49 ` [PATCH v2 02/15] iotests/297: Split mypy configuration out into mypy.ini John Snow
2021-10-19 14:49 ` [PATCH v2 03/15] iotests/297: Add get_files() function John Snow
2021-10-19 14:49 ` [PATCH v2 04/15] iotests/297: Create main() function John Snow
2021-10-19 14:49 ` [PATCH v2 05/15] iotests/297: Don't rely on distro-specific linter binaries John Snow
2021-10-19 14:49 ` [PATCH v2 06/15] iotests/297: Split run_linters apart into run_pylint and run_mypy John Snow
2021-10-19 14:49 ` [PATCH v2 07/15] iotests/297: refactor run_[mypy|pylint] as generic execution shim John Snow
2021-10-26 10:01   ` Hanna Reitz
2021-10-19 14:49 ` [PATCH v2 08/15] iotests/297: Change run_linter() to raise an exception on failure John Snow
2021-10-26 10:10   ` Hanna Reitz
2021-10-26 17:59     ` John Snow
2021-10-19 14:49 ` [PATCH v2 09/15] iotests/297: update tool availability checks John Snow
2021-10-26 10:19   ` Hanna Reitz
2021-10-19 14:49 ` [PATCH v2 10/15] iotests/297: split test into sub-cases John Snow
2021-10-26 10:29   ` Hanna Reitz
2021-10-26 18:02     ` John Snow
2021-10-19 14:49 ` [PATCH v2 11/15] iotests: split linters.py out from 297 John Snow
2021-10-26 10:51   ` Hanna Reitz
2021-10-26 18:30     ` John Snow
2021-10-28 10:34       ` Hanna Reitz
2021-10-28 16:27         ` John Snow
2021-10-19 14:49 ` [PATCH v2 12/15] iotests/linters: Add entry point for linting via Python CI John Snow
2021-10-26 10:57   ` Hanna Reitz
2021-10-26 18:36     ` John Snow
2021-10-26 19:45       ` John Snow
2021-10-28 10:36         ` Hanna Reitz
2021-10-19 14:49 ` [PATCH v2 13/15] iotests/linters: Add workaround for mypy bug #9852 John Snow
2021-10-19 14:49 ` [PATCH v2 14/15] python: Add iotest linters to test suite John Snow
2021-10-19 14:49 ` John Snow [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211019144918.3159078-16-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.