All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	Eduardo Habkost <ehabkost@redhat.com>,
	qemu-block@nongnu.org, Markus Armbruster <armbru@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	Cleber Rosa <crosa@redhat.com>, Max Reitz <mreitz@redhat.com>
Subject: Re: [PATCH 07/10] iotests/297: return error code from run_linters()
Date: Mon, 12 Jul 2021 19:56:20 -0400	[thread overview]
Message-ID: <CAFn=p-ZtWKa5d2jMwDrLjvh3YZeWmXT_fysmpH_2=5xU2y5r8Q@mail.gmail.com> (raw)
In-Reply-To: <9c281e4f-820b-71ac-b0e6-c804e442bd96@virtuozzo.com>

[-- Attachment #1: Type: text/plain, Size: 3049 bytes --]

On Tue, Jul 6, 2021 at 5:49 AM Vladimir Sementsov-Ogievskiy <
vsementsov@virtuozzo.com> wrote:

> 25.06.2021 21:20, John Snow wrote:
> > This turns run_linters() into a bit of a hybrid test; returning non-zero
> > on failed execution while also printing diffable information. This is
> > done for the benefit of the avocado simple test runner, which will soon
> > be attempting to execute this test from a different environment.
> >
> > (Note: universal_newlines is added to the pylint invocation for type
> > consistency with the mypy run -- it's not strictly necessary, but it
> > avoids some typing errors caused by our re-use of the 'p' variable.)
> >
> > Signed-off-by: John Snow <jsnow@redhat.com>
> > ---
> >   tests/qemu-iotests/297 | 10 ++++++++--
> >   1 file changed, 8 insertions(+), 2 deletions(-)
> >
> > diff --git a/tests/qemu-iotests/297 b/tests/qemu-iotests/297
> > index 1e8334d1d4..7db1f9ed45 100755
> > --- a/tests/qemu-iotests/297
> > +++ b/tests/qemu-iotests/297
> > @@ -68,19 +68,22 @@ def run_linters(
> >       files: List[str],
> >       directory: str = '.',
> >       env: Optional[Mapping[str, str]] = None,
> > -) -> None:
> > +) -> int:
> > +    ret = 0
> >
> >       print('=== pylint ===')
> >       sys.stdout.flush()
> >
> >       # Todo notes are fine, but fixme's or xxx's should probably just be
> >       # fixed (in tests, at least)
> > -    subprocess.run(
> > +    p = subprocess.run(
> >           ('python3', '-m', 'pylint', '--score=n', '--notes=FIXME,XXX',
> *files),
> >           cwd=directory,
> >           env=env,
> >           check=False,
> > +        universal_newlines=True,
> >       )
> > +    ret += p.returncode
> >
> >       print('=== mypy ===')
> >       sys.stdout.flush()
> > @@ -113,9 +116,12 @@ def run_linters(
> >               universal_newlines=True
> >           )
> >
> > +        ret += p.returncode
> >           if p.returncode != 0:
> >               print(p.stdout)
> >
> > +    return ret
> > +
> >
> >   def main() -> None:
> >       for linter in ('pylint-3', 'mypy'):
> >
>
> Hmm..
>
> 1. Rather unusual for a function in python to return int error-code, more
> usual is raising exceptions..
>
>
It is strange, but I felt that if these tests were going to run in "two
contexts" that I would avoid raising Exceptions and trying to understand
how it would affect either call stack.


> 2. making a sum of return codes looks odd to me
>
>
Just a cheap way to state that a 0 return is good, and a non-zero return
code is failure.


> 3. Do we really want to run mypy if pylint failed? Maybe better not doing
> it, and just switch s/check=False/check=True/ ? This way:
>
>
I suppose we could. For the sake of CI, I like seeing more output instead
of less so that you can save yourself the trouble and fix everything before
re-submitting the CI job. What do you think?


> 3.1 the function becomes native wrapper for subprocess.run, and raise same
> exceptions
> 3.2 we don't waste CI time by running mypy when pylint failed anyway
>
>
> --
> Best regards,
> Vladimir
>
>

[-- Attachment #2: Type: text/html, Size: 4607 bytes --]

  reply	other threads:[~2021-07-12 23:57 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-25 18:20 [PATCH 00/10] python/iotests: Run iotest linters during Python CI John Snow
2021-06-25 18:20 ` [PATCH 01/10] iotests/297: modify is_python_file to work from any CWD John Snow
2021-07-06  8:52   ` Vladimir Sementsov-Ogievskiy
2021-06-25 18:20 ` [PATCH 02/10] iotests/297: Add get_files() function John Snow
2021-07-06  9:01   ` Vladimir Sementsov-Ogievskiy
2021-07-20 15:16     ` John Snow
2021-06-25 18:20 ` [PATCH 03/10] iotests/297: Don't rely on distro-specific linter binaries John Snow
2021-07-06  9:04   ` Vladimir Sementsov-Ogievskiy
2021-06-25 18:20 ` [PATCH 04/10] iotests/297: Create main() function John Snow
2021-07-06  9:32   ` Vladimir Sementsov-Ogievskiy
2021-06-25 18:20 ` [PATCH 05/10] iotests/297: Separate environment setup from test execution John Snow
2021-07-06  9:35   ` Vladimir Sementsov-Ogievskiy
2021-06-25 18:20 ` [PATCH 06/10] iotests/297: Add 'directory' argument to run_linters John Snow
2021-07-06  9:37   ` Vladimir Sementsov-Ogievskiy
2021-06-25 18:20 ` [PATCH 07/10] iotests/297: return error code from run_linters() John Snow
2021-07-06  9:49   ` Vladimir Sementsov-Ogievskiy
2021-07-12 23:56     ` John Snow [this message]
2021-07-13  9:31       ` Vladimir Sementsov-Ogievskiy
2021-07-13  9:44   ` Vladimir Sementsov-Ogievskiy
2021-07-20 15:50     ` John Snow
2021-06-25 18:20 ` [PATCH 08/10] iotests/297: split linters.py off from 297 John Snow
2021-07-13  9:46   ` Vladimir Sementsov-Ogievskiy
2021-06-25 18:20 ` [PATCH 09/10] iotests/linters: Add entry point for Python CI linters John Snow
2021-07-13  9:48   ` Vladimir Sementsov-Ogievskiy
2021-06-25 18:20 ` [PATCH 10/10] python: Add iotest linters to test suite John Snow
2021-07-13  9:50   ` Vladimir Sementsov-Ogievskiy

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='CAFn=p-ZtWKa5d2jMwDrLjvh3YZeWmXT_fysmpH_2=5xU2y5r8Q@mail.gmail.com' \
    --to=jsnow@redhat.com \
    --cc=armbru@redhat.com \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=vsementsov@virtuozzo.com \
    /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.