qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/6] iotests: add 'qemu' package location to PYTHONPATH in te


From: John Snow
Subject: Re: [PATCH 1/6] iotests: add 'qemu' package location to PYTHONPATH in testenv
Date: Thu, 23 Sep 2021 11:46:39 -0400



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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]