mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-30 19:11:37 +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
|
@ -362,6 +362,23 @@ class Node:
|
||||||
value = tools.GetBytes(0, len)
|
value = tools.GetBytes(0, len)
|
||||||
self.props[prop_name] = Prop(self, None, prop_name, value)
|
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):
|
def SetInt(self, prop_name, val):
|
||||||
"""Update an integer property int the device tree.
|
"""Update an integer property int the device tree.
|
||||||
|
|
||||||
|
@ -374,7 +391,7 @@ class Node:
|
||||||
prop_name: Name of property
|
prop_name: Name of property
|
||||||
val: Value to set
|
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):
|
def SetData(self, prop_name, val):
|
||||||
"""Set the data value of a property
|
"""Set the data value of a property
|
||||||
|
@ -386,7 +403,7 @@ class Node:
|
||||||
prop_name: Name of property to set
|
prop_name: Name of property to set
|
||||||
val: Data value 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):
|
def SetString(self, prop_name, val):
|
||||||
"""Set the string value of a property
|
"""Set the string value of a property
|
||||||
|
@ -400,7 +417,7 @@ class Node:
|
||||||
"""
|
"""
|
||||||
if sys.version_info[0] >= 3: # pragma: no cover
|
if sys.version_info[0] >= 3: # pragma: no cover
|
||||||
val = bytes(val, 'utf-8')
|
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):
|
def AddString(self, prop_name, val):
|
||||||
"""Add a new string property to a node
|
"""Add a new string property to a node
|
||||||
|
|
|
@ -421,6 +421,27 @@ class TestProp(unittest.TestCase):
|
||||||
self.dtb.Sync(auto_resize=True)
|
self.dtb.Sync(auto_resize=True)
|
||||||
self.assertTrue(dtb2.GetContents() != self.dtb.GetContents())
|
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):
|
class TestFdtUtil(unittest.TestCase):
|
||||||
"""Tests for the fdt_util module
|
"""Tests for the fdt_util module
|
||||||
|
|
Loading…
Add table
Reference in a new issue