Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
tests/functional/qemu_test/uncompress.py | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/tests/functional/qemu_test/uncompress.py
b/tests/functional/qemu_test/uncompress.py
index 6d02ded066..404eee1f83 100644
--- a/tests/functional/qemu_test/uncompress.py
+++ b/tests/functional/qemu_test/uncompress.py
@@ -12,6 +12,7 @@
import os
import shutil
from urllib.parse import urlparse
+from subprocess import check_call, CalledProcessError
from .asset import Asset
@@ -38,6 +39,18 @@ 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
'''
@params compressed: filename, Asset, or file-like object to uncompress
@params uncompressed: filename to uncompress into
@@ -59,6 +72,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 +94,7 @@ def guess_uncompress_format(compressed):
return "xz"
elif ext == ".gz":
return "gz"
+ elif ext == ".zstd":
+ return "zstd"
else:
raise Exception(f"Unknown compression format for {compressed}")