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>, Hanna Reitz <hreitz@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	qemu-block@nongnu.org
Subject: Re: [PATCH 1/6] iotests: add 'qemu' package location to PYTHONPATH in testenv
Date: Thu, 23 Sep 2021 11:46:39 -0400	[thread overview]
Message-ID: <CAFn=p-bpmRBEM4YwQh=nAjDeCTXnNirQgULpcVmmE0k2+g1dYw@mail.gmail.com> (raw)
In-Reply-To: <20e02fed-5c74-022a-78bb-2122cf12374b@virtuozzo.com>

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

On Thu, Sep 23, 2021 at 11:20 AM Vladimir Sementsov-Ogievskiy <
vsementsov@virtuozzo.com> wrote:

> 23.09.2021 03:16, John Snow wrote:
> > We can drop the sys.path hacking in various places by doing
> > this. Additionally, by doing it in one place right up top, we can print
> > interesting warnings in case the environment does not look correct.
> >
> > If we ever decide to change how the environment is crafted, all of the
> > "help me find my python packages" goop is all in one place, right in one
> > function.
> >
> > Signed-off-by: John Snow <jsnow@redhat.com>
>
> Hurrah!!
>
> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>
> > ---
> >   tests/qemu-iotests/235                    |  2 --
> >   tests/qemu-iotests/297                    |  6 ------
> >   tests/qemu-iotests/300                    |  7 +++----
> >   tests/qemu-iotests/iotests.py             |  2 --
> >   tests/qemu-iotests/testenv.py             | 14 +++++++++-----
> >   tests/qemu-iotests/tests/mirror-top-perms |  7 +++----
> >   6 files changed, 15 insertions(+), 23 deletions(-)
> >
> > diff --git a/tests/qemu-iotests/235 b/tests/qemu-iotests/235
> > index 8aed45f9a76..4de920c3801 100755
> > --- a/tests/qemu-iotests/235
> > +++ b/tests/qemu-iotests/235
> > @@ -24,8 +24,6 @@ import os
> >   import iotests
> >   from iotests import qemu_img_create, qemu_io, file_path, log
> >
> > -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..',
> 'python'))
> > -
> >   from qemu.machine import QEMUMachine
> >
> >   iotests.script_initialize(supported_fmts=['qcow2'])
> > diff --git a/tests/qemu-iotests/297 b/tests/qemu-iotests/297
> > index b04cba53667..467b712280e 100755
> > --- a/tests/qemu-iotests/297
> > +++ b/tests/qemu-iotests/297
> > @@ -68,12 +68,6 @@ def run_linters():
> >       # Todo notes are fine, but fixme's or xxx's should probably just be
> >       # fixed (in tests, at least)
> >       env = os.environ.copy()
> > -    qemu_module_path = os.path.join(os.path.dirname(__file__),
> > -                                    '..', '..', 'python')
> > -    try:
> > -        env['PYTHONPATH'] += os.pathsep + qemu_module_path
> > -    except KeyError:
> > -        env['PYTHONPATH'] = qemu_module_path
> >       subprocess.run(('pylint-3', '--score=n', '--notes=FIXME,XXX',
> *files),
> >                      env=env, check=False)
> >
> > diff --git a/tests/qemu-iotests/300 b/tests/qemu-iotests/300
> > index fe94de84edd..10f9f2a8da6 100755
> > --- a/tests/qemu-iotests/300
> > +++ b/tests/qemu-iotests/300
> > @@ -24,12 +24,11 @@ import random
> >   import re
> >   from typing import Dict, List, Optional
> >
> > -import iotests
> > -
> > -# Import qemu after iotests.py has amended sys.path
> > -# pylint: disable=wrong-import-order
> >   from qemu.machine import machine
> >
> > +import iotests
> > +
> > +
> >   BlockBitmapMapping = List[Dict[str, object]]
> >
> >   mig_sock = os.path.join(iotests.sock_dir, 'mig_sock')
> > diff --git a/tests/qemu-iotests/iotests.py
> b/tests/qemu-iotests/iotests.py
> > index ce06cf56304..b06ad76e0c5 100644
> > --- a/tests/qemu-iotests/iotests.py
> > +++ b/tests/qemu-iotests/iotests.py
> > @@ -36,8 +36,6 @@
> >
> >   from contextlib import contextmanager
> >
> > -# pylint: disable=import-error, wrong-import-position
> > -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..',
> 'python'))
> >   from qemu.machine import qtest
> >   from qemu.qmp import QMPMessage
> >
> > diff --git a/tests/qemu-iotests/testenv.py
> b/tests/qemu-iotests/testenv.py
> > index 70da0d60c80..88104dace90 100644
> > --- a/tests/qemu-iotests/testenv.py
> > +++ b/tests/qemu-iotests/testenv.py
> > @@ -108,12 +108,16 @@ def init_directories(self) -> None:
> >                SAMPLE_IMG_DIR
> >                OUTPUT_DIR
> >           """
> > +
> > +        # Path where qemu goodies live in this source tree.
> > +        qemu_srctree_path = Path(__file__, '../../../python').resolve()
> > +
> >           self.pythonpath = os.getenv('PYTHONPATH')
> > -        if self.pythonpath:
> > -            self.pythonpath = self.source_iotests + os.pathsep + \
> > -                self.pythonpath
> > -        else:
> > -            self.pythonpath = self.source_iotests
> > +        self.pythonpath = os.pathsep.join(filter(None, (
> > +            self.source_iotests,
> > +            str(qemu_srctree_path),
> > +            self.pythonpath,
> > +        )))
>
> That was simple:)
>
>
Only because a very dedicated engineer from Virtuozzo spent so much time
writing a new iotest launcher ;)


> Hmm, after you this you have
>
> self.pythonpath = ...
> self.pythonpath = something other
>
>
> If have to resend, you may just use os.getenv('PYTHONPATH') inside
> filter(), it seems to be even nicer.
>
>
Ah, yeah. I'll just fold that in. Thanks!


> >
> >           self.test_dir = os.getenv('TEST_DIR',
> >                                     os.path.join(os.getcwd(), 'scratch'))
> > diff --git a/tests/qemu-iotests/tests/mirror-top-perms
> b/tests/qemu-iotests/tests/mirror-top-perms
> > index 2fc8dd66e0a..73138a0ef91 100755
> > --- a/tests/qemu-iotests/tests/mirror-top-perms
> > +++ b/tests/qemu-iotests/tests/mirror-top-perms
> > @@ -20,13 +20,12 @@
> >   #
> >
> >   import os
> > +
> > +import qemu
> > +
> >   import iotests
> >   from iotests import qemu_img
> >
> > -# Import qemu after iotests.py has amended sys.path
> > -# pylint: disable=wrong-import-order
> > -import qemu
> > -
> >
> >   image_size = 1 * 1024 * 1024
> >   source = os.path.join(iotests.test_dir, 'source.img')
> >
>
>
> --
> Best regards,
> Vladimir
>
>

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

  reply	other threads:[~2021-09-23 15:49 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-23  0:16 [PATCH 0/6] iotests: update environment and linting configuration John Snow
2021-09-23  0:16 ` [PATCH 1/6] iotests: add 'qemu' package location to PYTHONPATH in testenv John Snow
2021-09-23 10:33   ` Philippe Mathieu-Daudé
2021-09-23 15:19   ` Vladimir Sementsov-Ogievskiy
2021-09-23 15:46     ` John Snow [this message]
2021-09-23  0:16 ` [PATCH 2/6] iotests: add warning for rogue 'qemu' packages John Snow
2021-09-23 10:57   ` Kevin Wolf
2021-09-23 11:17     ` Kevin Wolf
2021-09-23 14:59       ` John Snow
2021-09-23 11:09   ` Daniel P. Berrangé
2021-09-23 15:42     ` John Snow
2021-09-23  0:16 ` [PATCH 3/6] iotests/linters: check mypy files all at once John Snow
2021-09-23 10:33   ` Philippe Mathieu-Daudé
2021-09-23 15:39   ` Vladimir Sementsov-Ogievskiy
2021-09-23  0:16 ` [PATCH 4/6] iotests/mirror-top-perms: Adjust imports John Snow
2021-09-23 15:40   ` Vladimir Sementsov-Ogievskiy
2021-09-23  0:16 ` [PATCH 5/6] iotests/migrate-bitmaps-test: delint John Snow
2021-09-23 15:48   ` Vladimir Sementsov-Ogievskiy
2021-09-23  0:16 ` [PATCH 6/6] iotests: Update for pylint 2.11.1 John Snow
2021-09-23 15:51   ` Vladimir Sementsov-Ogievskiy
2021-09-23 12:57 ` [PATCH 0/6] iotests: update environment and linting configuration Kevin Wolf

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-bpmRBEM4YwQh=nAjDeCTXnNirQgULpcVmmE0k2+g1dYw@mail.gmail.com' \
    --to=jsnow@redhat.com \
    --cc=hreitz@redhat.com \
    --cc=kwolf@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.