summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/binman/entry.py14
-rw-r--r--tools/binman/entry_test.py9
-rw-r--r--tools/binman/ftest.py9
3 files changed, 29 insertions, 3 deletions
diff --git a/tools/binman/entry.py b/tools/binman/entry.py
index af8e277995..88f228682a 100644
--- a/tools/binman/entry.py
+++ b/tools/binman/entry.py
@@ -1118,7 +1118,11 @@ features to produce new behaviours.
self.uncomp_data = indata
if self.compress != 'none':
self.uncomp_size = len(indata)
- data = self.comp_bintool.compress(indata)
+ if self.comp_bintool.is_present():
+ data = self.comp_bintool.compress(indata)
+ else:
+ self.record_missing_bintool(self.comp_bintool)
+ data = tools.get_bytes(0, 1024)
else:
data = indata
return data
@@ -1133,8 +1137,12 @@ features to produce new behaviours.
Decompressed data
"""
if self.compress != 'none':
- data = self.comp_bintool.decompress(indata)
- self.uncomp_size = len(data)
+ if self.comp_bintool.is_present():
+ data = self.comp_bintool.decompress(indata)
+ self.uncomp_size = len(data)
+ else:
+ self.record_missing_bintool(self.comp_bintool)
+ data = tools.get_bytes(0, 1024)
else:
data = indata
self.uncomp_data = data
diff --git a/tools/binman/entry_test.py b/tools/binman/entry_test.py
index 1d60076be1..aa470c5816 100644
--- a/tools/binman/entry_test.py
+++ b/tools/binman/entry_test.py
@@ -105,6 +105,15 @@ class TestEntry(unittest.TestCase):
self.assertTrue(isinstance(ent, Entry_blob))
self.assertEquals('missing', ent.etype)
+ def testDecompressData(self):
+ """Test the DecompressData() method of the base class"""
+ base = entry.Entry.Create(None, self.GetNode(), 'blob-dtb')
+ base.compress = 'lz4'
+ bintools = {}
+ base.comp_bintool = base.AddBintool(bintools, '_testing')
+ self.assertEquals(tools.get_bytes(0, 1024), base.CompressData(b'abc'))
+ self.assertEquals(tools.get_bytes(0, 1024), base.DecompressData(b'abc'))
+
if __name__ == "__main__":
unittest.main()
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 4be84f6e17..81ecc8829f 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -4422,6 +4422,15 @@ class TestFunctional(unittest.TestCase):
}
self.assertEqual(expected, props)
+ def testLz4Missing(self):
+ """Test that binman still produces an image if lz4 is missing"""
+ with test_util.capture_sys_output() as (_, stderr):
+ self._DoTestFile('185_compress_section.dts',
+ force_missing_bintools='lz4')
+ err = stderr.getvalue()
+ self.assertRegex(err,
+ "Image 'main-section'.*missing bintools.*: lz4")
+
def testCompressExtra(self):
"""Test compression of a section with no fixed size"""
self._CheckLz4()