[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 19/32] tests/functional: add zstd support to uncompress utility
From: |
Alex Bennée |
Subject: |
[PULL 19/32] tests/functional: add zstd support to uncompress utility |
Date: |
Fri, 10 Jan 2025 13:17:41 +0000 |
Rather than using the python library (which has a different API
anyway) lets just call the binary. zstdtools is already in out
qemu.yml so all test containers should have it around. Tests should
still use @skipIfMissingCommands('zstd') to gracefully handle when
only minimal dependencies have been installed.
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20250108121054.1126164-20-alex.bennee@linaro.org>
diff --git a/tests/functional/qemu_test/uncompress.py
b/tests/functional/qemu_test/uncompress.py
index 6d02ded066..76dcf22385 100644
--- a/tests/functional/qemu_test/uncompress.py
+++ b/tests/functional/qemu_test/uncompress.py
@@ -10,8 +10,10 @@
import gzip
import lzma
import os
+import stat
import shutil
from urllib.parse import urlparse
+from subprocess import check_call, CalledProcessError
from .asset import Asset
@@ -38,6 +40,24 @@ def lzma_uncompress(xz_path, output_path):
os.remove(output_path)
raise
+
+def zstd_uncompress(zstd_path, output_path):
+ if os.path.exists(output_path):
+ return
+
+ try:
+ check_call(['zstd', "-f", "-d", zstd_path,
+ "-o", output_path])
+ except CalledProcessError as e:
+ os.remove(output_path)
+ raise Exception(
+ f"Unable to decompress zstd file {zstd_path} with {e}") from e
+
+ # zstd copies source archive permissions for the output
+ # file, so must make this writable for QEMU
+ os.chmod(output_path, stat.S_IRUSR | stat.S_IWUSR)
+
+
'''
@params compressed: filename, Asset, or file-like object to uncompress
@params uncompressed: filename to uncompress into
@@ -59,6 +79,8 @@ def uncompress(compressed, uncompressed, format=None):
lzma_uncompress(str(compressed), uncompressed)
elif format == "gz":
gzip_uncompress(str(compressed), uncompressed)
+ elif format == "zstd":
+ zstd_uncompress(str(compressed), uncompressed)
else:
raise Exception(f"Unknown compression format {format}")
@@ -79,5 +101,7 @@ def guess_uncompress_format(compressed):
return "xz"
elif ext == ".gz":
return "gz"
+ elif ext in [".zstd", ".zst"]:
+ return 'zstd'
else:
raise Exception(f"Unknown compression format for {compressed}")
--
2.39.5
- [PULL 15/32] tests/functional/aarch64: add tests for FEAT_RME, (continued)
- [PULL 15/32] tests/functional/aarch64: add tests for FEAT_RME, Alex Bennée, 2025/01/10
- [PULL 18/32] tests/functional: remove hacky sleep from the tests, Alex Bennée, 2025/01/10
- [PULL 31/32] dockerfiles: Remove 'MAINTAINER' entry in debian-tricore-cross.docker, Alex Bennée, 2025/01/10
- [PULL 11/32] tests/functional: update the riscv64 tuxrun tests, Alex Bennée, 2025/01/10
- [PULL 27/32] tests/vm: fix build_path based path, Alex Bennée, 2025/01/10
- [PULL 25/32] tests/docker: move riscv64 cross container from sid to trixie, Alex Bennée, 2025/01/10
- [PULL 23/32] tests/functional: extend test_aarch64_virt with vulkan test, Alex Bennée, 2025/01/10
- [PULL 32/32] MAINTAINERS: Remove myself from reviewers, Alex Bennée, 2025/01/10
- [PULL 16/32] tests/qtest: remove clock_steps from virtio tests, Alex Bennée, 2025/01/10
- [PULL 20/32] tests/functional: update tuxruntest to use uncompress utility, Alex Bennée, 2025/01/10
- [PULL 19/32] tests/functional: add zstd support to uncompress utility,
Alex Bennée <=
- [PULL 17/32] system/qtest: properly feedback results of clock_[step|set], Alex Bennée, 2025/01/10
- [PULL 26/32] tests/lcitool: remove temp workaround for debian mips64el, Alex Bennée, 2025/01/10
- [PULL 21/32] tests/functional: remove unused kernel_command_line, Alex Bennée, 2025/01/10
- [PULL 29/32] tests/vm: allow interactive login as root, Alex Bennée, 2025/01/10
- [PULL 22/32] tests/functional: bail aarch64_virt tests early if missing TCG, Alex Bennée, 2025/01/10
- [PULL 28/32] tests/vm: partially un-tabify help output, Alex Bennée, 2025/01/10
- [PULL 30/32] pc-bios: ensure keymaps dependencies set vnc tests, Alex Bennée, 2025/01/10
- Re: [PULL 00/32] testing updates for 10.0 (tuxrun, libvirt, dockerfiles, misc), Stefan Hajnoczi, 2025/01/10