qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>, qemu-devel@nongnu.org
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Alex Bennée" <alex.bennee@linaro.org>
Subject: Re: [PATCH 16/22] tests/functional: add common deb_extract helper
Date: Mon, 2 Dec 2024 11:14:16 +0100	[thread overview]
Message-ID: <36f44436-5448-4ac8-bed5-1f23b79887dc@redhat.com> (raw)
In-Reply-To: <20241129173120.761728-17-berrange@redhat.com>

On 29/11/2024 18.31, Daniel P. Berrangé wrote:
> This mirrors the existing archive_extract, cpio_extract and zip_extract
> helpers
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>   tests/functional/qemu_test/linuxkernel.py | 15 +++++----------
>   tests/functional/qemu_test/utils.py       | 13 +++++++++++++
>   2 files changed, 18 insertions(+), 10 deletions(-)
> 
> diff --git a/tests/functional/qemu_test/linuxkernel.py b/tests/functional/qemu_test/linuxkernel.py
> index a6525f9dd6..fb6a158d36 100644
> --- a/tests/functional/qemu_test/linuxkernel.py
> +++ b/tests/functional/qemu_test/linuxkernel.py
> @@ -6,8 +6,8 @@
>   import os
>   
>   from .testcase import QemuSystemTest
> -from .cmd import run_cmd, wait_for_console_pattern
> -from .utils import archive_extract
> +from .cmd import wait_for_console_pattern
> +from .utils import deb_extract
>   
>   class LinuxKernelTest(QemuSystemTest):
>       KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 '
> @@ -37,16 +37,11 @@ def extract_from_deb(self, deb_path, path):
>           :param path: path within the deb archive of the file to be extracted
>           :returns: path of the extracted file
>           """
> -        cwd = os.getcwd()
> -        os.chdir(self.workdir)
> -        (stdout, stderr, ret) = run_cmd(['ar', 't', deb_path])
> -        file_path = stdout.split()[2]
> -        run_cmd(['ar', 'x', deb_path, file_path])
> -        archive_extract(file_path, self.workdir)
> -        os.chdir(cwd)
> +        relpath = os.path.relpath(path, '/')
> +        deb_extract(deb_path, self.workdir, member="." + path)
>           # Return complete path to extracted file.  Because callers to
>           # extract_from_deb() specify 'path' with a leading slash, it is
>           # necessary to use 'relative_to()' to turn it into a relative
>           # path for joining to the scratch dir
> -        return os.path.normpath(self.scratch_file(os.path.relpath(path, '/')))
> +        return os.path.normpath(self.scratch_file(relpath))
>   
> diff --git a/tests/functional/qemu_test/utils.py b/tests/functional/qemu_test/utils.py
> index 41bd1df666..bafe7fb80e 100644
> --- a/tests/functional/qemu_test/utils.py
> +++ b/tests/functional/qemu_test/utils.py
> @@ -15,6 +15,8 @@
>   import subprocess
>   import tarfile
>   
> +from .cmd import run_cmd
> +
>   """
>   Round up to next power of 2
>   """
> @@ -53,6 +55,17 @@ def zip_extract(archive, dest_dir, member=None):
>           else:
>               zf.extractall(path=dest_dir)
>   
> +def deb_extract(archive, dest_dir, member=None):
> +    cwd = os.getcwd()
> +    os.chdir(dest_dir)
> +    try:
> +        (stdout, stderr, ret) = run_cmd(['ar', 't', archive])
> +        file_path = stdout.split()[2]
> +        run_cmd(['ar', 'x', archive, file_path])
> +        archive_extract(file_path, dest_dir, member)
> +    finally:
> +        os.chdir(cwd)

Not sure whether we really need this ... extracting .deb files is very 
specific to running Linux kernels in the guest, so IMHO it should be 
sufficient to have it in linuxkernel.py.

Anyway, if we add more and more *_extract functions, we should maybe 
consider to move the extraction functions out of utils.py into an archive.py 
file, what do you think?

  Thomas



  reply	other threads:[~2024-12-02 10:15 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-29 17:30 [PATCH 00/22 for 10.0] tests/functional: various improvements wrt assets/scratch files Daniel P. Berrangé
2024-11-29 17:30 ` [PATCH 01/22] tests/functional: increase timeouts for arm sx1 test Daniel P. Berrangé
2024-11-30  9:55   ` Thomas Huth
2024-11-29 17:31 ` [PATCH 02/22] tests/functional: remove unused system imports Daniel P. Berrangé
2024-11-30  9:59   ` Thomas Huth
2024-12-02  9:22     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 03/22] tests/functional: remove duplicated 'qemu_test' import statements Daniel P. Berrangé
2024-11-30 10:09   ` Thomas Huth
2024-12-02 11:40     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 04/22] tests/functional: remove pointless with statement Daniel P. Berrangé
2024-11-30 10:10   ` Thomas Huth
2024-11-29 17:31 ` [PATCH 05/22] tests/functional: remove duplicated 'which' function impl Daniel P. Berrangé
2024-11-30 10:16   ` Thomas Huth
2024-12-02 11:44     ` Daniel P. Berrangé
2024-12-02 12:45       ` Thomas Huth
2024-11-30 15:08   ` Richard Henderson
2024-12-02 11:45     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 06/22] tests/functional: introduce some helpful decorators Daniel P. Berrangé
2024-12-02  8:27   ` Thomas Huth
2024-12-02 11:49     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 07/22] tests/functional: switch to new test skip decorators Daniel P. Berrangé
2024-12-02  8:57   ` Thomas Huth
2024-12-02 11:51     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 08/22] tests/functional: add helpers for building file paths Daniel P. Berrangé
2024-12-02  9:19   ` Thomas Huth
2024-12-03 13:53     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 09/22] tests/functional: switch over to using self.log_file(...) Daniel P. Berrangé
2024-12-02  9:22   ` Thomas Huth
2024-11-29 17:31 ` [PATCH 10/22] tests/functional: switch over to using self.build_file(...) Daniel P. Berrangé
2024-12-02  9:26   ` Thomas Huth
2024-12-02 12:00     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 11/22] tests/functional: switch over to using self.data_file(...) Daniel P. Berrangé
2024-12-02  9:32   ` Thomas Huth
2024-12-03  5:39     ` Ani Sinha
2024-12-03  8:11       ` Daniel P. Berrangé
2024-12-03  8:50         ` Thomas Huth
2024-12-03  9:05           ` Ani Sinha
2024-11-29 17:31 ` [PATCH 12/22] tests/functional: switch over to using self.scratch_file() Daniel P. Berrangé
2024-12-02  9:56   ` Thomas Huth
2024-12-02 12:03     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 13/22] tests/functional: switch over to using self.socket_dir(...) Daniel P. Berrangé
2024-12-02  9:59   ` Thomas Huth
2024-11-29 17:31 ` [PATCH 14/22] tests/functional: remove redundant 'rmtree' call Daniel P. Berrangé
2024-11-30 10:32   ` Thomas Huth
2024-11-29 17:31 ` [PATCH 15/22] tests/functional: add common zip_extract helper Daniel P. Berrangé
2024-12-02 10:04   ` Thomas Huth
2024-12-02 12:04     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 16/22] tests/functional: add common deb_extract helper Daniel P. Berrangé
2024-12-02 10:14   ` Thomas Huth [this message]
2024-12-02 12:08     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 17/22] tests/functional: generalize archive_extract Daniel P. Berrangé
2024-12-02 10:20   ` Thomas Huth
2024-12-02 12:11     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 18/22] tests/functional: add 'archive_extract' to QemuBaseTest Daniel P. Berrangé
2024-12-02 10:30   ` Thomas Huth
2024-12-02 12:13     ` Daniel P. Berrangé
2024-12-02 12:52       ` Thomas Huth
2024-12-02 13:28         ` Daniel P. Berrangé
2024-12-06 13:10         ` Thomas Huth
2024-11-29 17:31 ` [PATCH 19/22] tests/functional: convert tests to new archive_extract helper Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 20/22] tests/functional: generalize uncompress Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 21/22] tests/functional: add 'uncompress' to QemuBaseTest Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 22/22] tests/functional: convert tests to new uncompress helper Daniel P. Berrangé

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=36f44436-5448-4ac8-bed5-1f23b79887dc@redhat.com \
    --to=thuth@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=berrange@redhat.com \
    --cc=philmd@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).