aboutsummaryrefslogtreecommitdiff
path: root/tools/binman
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2022-01-09 20:14:10 -0700
committerSimon Glass <sjg@chromium.org>2022-01-25 12:36:11 -0700
commita00d9713e4c01de7e7753c9394a95dca27e47e21 (patch)
tree6e83774eff49fb7f7c4d634281d3e985700c641a /tools/binman
parent4f9ee83ba96c6c4e5e647f26eb4a124544ce61d7 (diff)
downloadu-boot-a00d9713e4c01de7e7753c9394a95dca27e47e21.zip
u-boot-a00d9713e4c01de7e7753c9394a95dca27e47e21.tar.gz
u-boot-a00d9713e4c01de7e7753c9394a95dca27e47e21.tar.bz2
binman: Complete test coverage of comp_util
Drop the unused gzip code, update comments and add a test for an invalid algorithm. The temporary file is not needed now, so drop that also. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/binman')
-rw-r--r--tools/binman/comp_util.py16
-rw-r--r--tools/binman/ftest.py9
2 files changed, 11 insertions, 14 deletions
diff --git a/tools/binman/comp_util.py b/tools/binman/comp_util.py
index 2f78bab..dc76ada 100644
--- a/tools/binman/comp_util.py
+++ b/tools/binman/comp_util.py
@@ -25,28 +25,20 @@ def compress(indata, algo, with_header=True):
This requires 'lz4' and 'lzma_alone' tools. It also requires an output
directory to be previously set up, by calling PrepareOutputDir().
- Care is taken to use unique temporary files so that this function can be
- called from multiple threads.
-
Args:
indata (bytes): Input data to compress
- algo (str): Algorithm to use ('none', 'gzip', 'lz4' or 'lzma')
+ algo (str): Algorithm to use ('none', 'lz4' or 'lzma')
Returns:
bytes: Compressed data
"""
if algo == 'none':
return indata
- fname = tempfile.NamedTemporaryFile(prefix='%s.comp.tmp' % algo,
- dir=tools.GetOutputDir()).name
- tools.WriteFile(fname, indata)
if algo == 'lz4':
data = LZ4.compress(indata)
# cbfstool uses a very old version of lzma
elif algo == 'lzma':
data = LZMA_ALONE.compress(indata)
- elif algo == 'gzip':
- data = tools.Run('gzip', '-c', fname, binary=True)
else:
raise ValueError("Unknown algorithm '%s'" % algo)
if with_header:
@@ -65,7 +57,7 @@ def decompress(indata, algo, with_header=True):
Args:
indata (bytes): Input data to decompress
- algo (str): Algorithm to use ('none', 'gzip', 'lz4' or 'lzma')
+ algo (str): Algorithm to use ('none', 'lz4' or 'lzma')
Returns:
(bytes) Compressed data
@@ -75,14 +67,10 @@ def decompress(indata, algo, with_header=True):
if with_header:
data_len = struct.unpack('<I', indata[:4])[0]
indata = indata[4:4 + data_len]
- fname = tools.GetOutputFilename('%s.decomp.tmp' % algo)
- tools.WriteFile(fname, indata)
if algo == 'lz4':
data = LZ4.decompress(indata)
elif algo == 'lzma':
data = LZMA_ALONE.decompress(indata)
- elif algo == 'gzip':
- data = tools.Run('gzip', '-cd', fname, binary=True)
else:
raise ValueError("Unknown algorithm '%s'" % algo)
return data
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 6e1c498..a3454dd 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -5076,6 +5076,15 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
self._DoBinman(*args)
self.assertIn('failed to fetch with all methods', stdout.getvalue())
+ def testInvalidCompress(self):
+ with self.assertRaises(ValueError) as e:
+ comp_util.compress(b'', 'invalid')
+ self.assertIn("Unknown algorithm 'invalid'", str(e.exception))
+
+ with self.assertRaises(ValueError) as e:
+ comp_util.decompress(b'1234', 'invalid')
+ self.assertIn("Unknown algorithm 'invalid'", str(e.exception))
+
if __name__ == "__main__":
unittest.main()