diff options
author | Simon Glass <sjg@chromium.org> | 2022-01-09 20:14:10 -0700 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2022-01-25 12:36:11 -0700 |
commit | a00d9713e4c01de7e7753c9394a95dca27e47e21 (patch) | |
tree | 6e83774eff49fb7f7c4d634281d3e985700c641a | |
parent | 4f9ee83ba96c6c4e5e647f26eb4a124544ce61d7 (diff) | |
download | u-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>
-rw-r--r-- | tools/binman/comp_util.py | 16 | ||||
-rw-r--r-- | tools/binman/ftest.py | 9 |
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() |