mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
dtoc: Add a subnode test for multiple nodes
Add a new test that adds a subnode alongside an existing one, as well as adding properties to a subnode. This will expand to adding multiple subnodes in future patches. Put a node after the one we are adding to so we can check that things sync correctly. The testAddNode() test should be in the TestNode class since it is a node test, so move it. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
71719e15e8
commit
76677dd2b2
2 changed files with 34 additions and 12 deletions
|
@ -56,4 +56,8 @@
|
|||
low-power;
|
||||
};
|
||||
};
|
||||
|
||||
orig-node {
|
||||
orig = <1 23 4>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -154,6 +154,7 @@ class TestNode(unittest.TestCase):
|
|||
def setUp(self):
|
||||
self.dtb = fdt.FdtScan(find_dtb_file('dtoc_test_simple.dts'))
|
||||
self.node = self.dtb.GetNode('/spl-test')
|
||||
self.fdt = self.dtb.GetFdtObj()
|
||||
|
||||
def testOffset(self):
|
||||
"""Tests that we can obtain the offset of a node"""
|
||||
|
@ -197,7 +198,7 @@ class TestNode(unittest.TestCase):
|
|||
def testRefreshExtraNode(self):
|
||||
"""Test refreshing offsets when an expected node is missing"""
|
||||
# Delete it from the device tre, not our tables
|
||||
self.dtb.GetFdtObj().del_node(self.node.Offset())
|
||||
self.fdt.del_node(self.node.Offset())
|
||||
with self.assertRaises(ValueError) as e:
|
||||
self.dtb.Refresh()
|
||||
self.assertIn('Internal error, node name mismatch '
|
||||
|
@ -220,6 +221,34 @@ class TestNode(unittest.TestCase):
|
|||
target = dtb.GetNode('/phandle-target')
|
||||
self.assertEqual(target, dtb.LookupPhandle(fdt32_to_cpu(prop.value)))
|
||||
|
||||
def testAddNodeSpace(self):
|
||||
"""Test adding a single node when out of space"""
|
||||
self.fdt.pack()
|
||||
self.node.AddSubnode('subnode')
|
||||
with self.assertRaises(libfdt.FdtException) as e:
|
||||
self.dtb.Sync(auto_resize=False)
|
||||
self.assertIn('FDT_ERR_NOSPACE', str(e.exception))
|
||||
|
||||
self.dtb.Sync(auto_resize=True)
|
||||
offset = self.fdt.path_offset('/spl-test/subnode')
|
||||
self.assertTrue(offset > 0)
|
||||
|
||||
def testAddNodes(self):
|
||||
"""Test adding various subnode and properies"""
|
||||
node = self.dtb.GetNode('/i2c@0')
|
||||
|
||||
# Add a property to the node after i2c@0 to check that this is not
|
||||
# disturbed by adding a subnode to i2c@0
|
||||
orig_node = self.dtb.GetNode('/orig-node')
|
||||
orig_node.AddInt('integer-4', 456)
|
||||
|
||||
# Add a property to the pmic node to check that pmic properties are not
|
||||
# disturbed
|
||||
pmic = self.dtb.GetNode('/i2c@0/pmic@9')
|
||||
pmic.AddInt('integer-5', 567)
|
||||
|
||||
self.dtb.Sync(auto_resize=True)
|
||||
|
||||
|
||||
class TestProp(unittest.TestCase):
|
||||
"""Test operation of the Prop class"""
|
||||
|
@ -385,17 +414,6 @@ class TestProp(unittest.TestCase):
|
|||
self.assertIn('FDT_ERR_NOSPACE', str(e.exception))
|
||||
self.dtb.Sync(auto_resize=True)
|
||||
|
||||
def testAddNode(self):
|
||||
self.fdt.pack()
|
||||
self.node.AddSubnode('subnode')
|
||||
with self.assertRaises(libfdt.FdtException) as e:
|
||||
self.dtb.Sync(auto_resize=False)
|
||||
self.assertIn('FDT_ERR_NOSPACE', str(e.exception))
|
||||
|
||||
self.dtb.Sync(auto_resize=True)
|
||||
offset = self.fdt.path_offset('/spl-test/subnode')
|
||||
self.assertTrue(offset > 0)
|
||||
|
||||
def testAddMore(self):
|
||||
"""Test various other methods for adding and setting properties"""
|
||||
self.node.AddZeroProp('one')
|
||||
|
|
Loading…
Reference in a new issue