mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-27 17:41:34 +00:00
binman: Show a helpful error when a DT property is missing
At present a Python exception is raised which does not show the node information. Add a more helpful exception in this case. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
9f297b09c0
commit
d9dad10e3c
2 changed files with 41 additions and 3 deletions
tools/dtoc
|
@ -362,6 +362,23 @@ class Node:
|
|||
value = tools.GetBytes(0, len)
|
||||
self.props[prop_name] = Prop(self, None, prop_name, value)
|
||||
|
||||
def _CheckProp(self, prop_name):
|
||||
"""Check if a property is present
|
||||
|
||||
Args:
|
||||
prop_name: Name of property
|
||||
|
||||
Returns:
|
||||
self
|
||||
|
||||
Raises:
|
||||
ValueError if the property is missing
|
||||
"""
|
||||
if prop_name not in self.props:
|
||||
raise ValueError("Fdt '%s', node '%s': Missing property '%s'" %
|
||||
(self._fdt._fname, self.path, prop_name))
|
||||
return self
|
||||
|
||||
def SetInt(self, prop_name, val):
|
||||
"""Update an integer property int the device tree.
|
||||
|
||||
|
@ -374,7 +391,7 @@ class Node:
|
|||
prop_name: Name of property
|
||||
val: Value to set
|
||||
"""
|
||||
self.props[prop_name].SetInt(val)
|
||||
self._CheckProp(prop_name).props[prop_name].SetInt(val)
|
||||
|
||||
def SetData(self, prop_name, val):
|
||||
"""Set the data value of a property
|
||||
|
@ -386,7 +403,7 @@ class Node:
|
|||
prop_name: Name of property to set
|
||||
val: Data value to set
|
||||
"""
|
||||
self.props[prop_name].SetData(val)
|
||||
self._CheckProp(prop_name).props[prop_name].SetData(val)
|
||||
|
||||
def SetString(self, prop_name, val):
|
||||
"""Set the string value of a property
|
||||
|
@ -400,7 +417,7 @@ class Node:
|
|||
"""
|
||||
if sys.version_info[0] >= 3: # pragma: no cover
|
||||
val = bytes(val, 'utf-8')
|
||||
self.props[prop_name].SetData(val + b'\0')
|
||||
self._CheckProp(prop_name).props[prop_name].SetData(val + b'\0')
|
||||
|
||||
def AddString(self, prop_name, val):
|
||||
"""Add a new string property to a node
|
||||
|
|
|
@ -421,6 +421,27 @@ class TestProp(unittest.TestCase):
|
|||
self.dtb.Sync(auto_resize=True)
|
||||
self.assertTrue(dtb2.GetContents() != self.dtb.GetContents())
|
||||
|
||||
def testMissingSetInt(self):
|
||||
"""Test handling of a missing property with SetInt"""
|
||||
with self.assertRaises(ValueError) as e:
|
||||
self.node.SetInt('one', 1)
|
||||
self.assertIn("node '/spl-test': Missing property 'one'",
|
||||
str(e.exception))
|
||||
|
||||
def testMissingSetData(self):
|
||||
"""Test handling of a missing property with SetData"""
|
||||
with self.assertRaises(ValueError) as e:
|
||||
self.node.SetData('one', b'data')
|
||||
self.assertIn("node '/spl-test': Missing property 'one'",
|
||||
str(e.exception))
|
||||
|
||||
def testMissingSetString(self):
|
||||
"""Test handling of a missing property with SetString"""
|
||||
with self.assertRaises(ValueError) as e:
|
||||
self.node.SetString('one', 1)
|
||||
self.assertIn("node '/spl-test': Missing property 'one'",
|
||||
str(e.exception))
|
||||
|
||||
|
||||
class TestFdtUtil(unittest.TestCase):
|
||||
"""Tests for the fdt_util module
|
||||
|
|
Loading…
Add table
Reference in a new issue