On 11/12/2024 18.26, Daniel P. Berrangé wrote:
> More uncompress related code will be added shortly, so having a
> separate file makes more sense.
>
> The utils.py imports the functions from archive.py, so that
> existing callers don't need to be modified. This avoids
> redundant code churn until later in the series when all
> calls will be adapted for other reasons.
>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
> tests/functional/qemu_test/uncompress.py | 36 ++++++++++++++++++++++++
> tests/functional/qemu_test/utils.py | 27 ++----------------
> 2 files changed, 38 insertions(+), 25 deletions(-)
> create mode 100644 tests/functional/qemu_test/uncompress.py
>
> diff --git a/tests/functional/qemu_test/uncompress.py b/tests/functional/qemu_test/uncompress.py
> new file mode 100644
> index 0000000000..955170df65
> --- /dev/null
> +++ b/tests/functional/qemu_test/uncompress.py
> @@ -0,0 +1,36 @@
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +#
> +# Utilities for python-based QEMU tests
> +#
> +# Copyright 2024 Red Hat, Inc.
> +#
> +# Authors:
> +# Thomas Huth <thuth@redhat.com>
> +
> +import gzip
> +import lzma
> +import os
> +import shutil
> +
> +
> +def gzip_uncompress(gz_path, output_path):
> + if os.path.exists(output_path):
> + return
> + with gzip.open(gz_path, 'rb') as gz_in:
> + try:
> + with open(output_path, 'wb') as raw_out:
> + shutil.copyfileobj(gz_in, raw_out)
> + except:
> + os.remove(output_path)
> + raise
> +
> +def lzma_uncompress(xz_path, output_path):
> + if os.path.exists(output_path):
> + return
> + with lzma.open(xz_path, 'rb') as lzma_in:
> + try:
> + with open(output_path, 'wb') as raw_out:
> + shutil.copyfileobj(lzma_in, raw_out)
> + except:
> + os.remove(output_path)
> + raise
> diff --git a/tests/functional/qemu_test/utils.py b/tests/functional/qemu_test/utils.py
> index 5ce1c4388e..6b87af4414 100644
> --- a/tests/functional/qemu_test/utils.py
> +++ b/tests/functional/qemu_test/utils.py
> @@ -8,13 +8,12 @@
> # This work is licensed under the terms of the GNU GPL, version 2 or
> # later. See the COPYING file in the top-level directory.
>
> -import gzip
> -import lzma
> import os
> -import shutil
>
> from .archive import tar_extract as archive_extract
> from .archive import cpio_extract
> +from .uncompress import gzip_uncompress
> +from .uncompress import lzma_uncompress
>
> """
> Round up to next power of 2
> @@ -36,25 +35,3 @@ def image_pow2ceil_expand(path):
> if size != size_aligned:
> with open(path, 'ab+') as fd:
> fd.truncate(size_aligned)
> -
> -def gzip_uncompress(gz_path, output_path):
> - if os.path.exists(output_path):
> - return
> - with gzip.open(gz_path, 'rb') as gz_in:
> - try:
> - with open(output_path, 'wb') as raw_out:
> - shutil.copyfileobj(gz_in, raw_out)
> - except:
> - os.remove(output_path)
> - raise
> -
> -def lzma_uncompress(xz_path, output_path):
> - if os.path.exists(output_path):
> - return
> - with lzma.open(xz_path, 'rb') as lzma_in:
> - try:
> - with open(output_path, 'wb') as raw_out:
> - shutil.copyfileobj(lzma_in, raw_out)
> - except:
> - os.remove(output_path)
> - raise
Reviewed-by: Thomas Huth <thuth@redhat.com>