entry_test.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # SPDX-License-Identifier: GPL-2.0+
  2. # Copyright (c) 2016 Google, Inc
  3. # Written by Simon Glass <sjg@chromium.org>
  4. #
  5. # Test for the Entry class
  6. import collections
  7. import os
  8. import sys
  9. import unittest
  10. import entry
  11. import fdt
  12. import fdt_util
  13. import tools
  14. class TestEntry(unittest.TestCase):
  15. def setUp(self):
  16. tools.PrepareOutputDir(None)
  17. def tearDown(self):
  18. tools.FinaliseOutputDir()
  19. def GetNode(self):
  20. binman_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
  21. fname = fdt_util.EnsureCompiled(
  22. os.path.join(binman_dir,('test/005_simple.dts')))
  23. dtb = fdt.FdtScan(fname)
  24. return dtb.GetNode('/binman/u-boot')
  25. def _ReloadEntry(self):
  26. global entry
  27. if entry:
  28. if sys.version_info[0] >= 3:
  29. import importlib
  30. importlib.reload(entry)
  31. else:
  32. reload(entry)
  33. else:
  34. import entry
  35. def testEntryContents(self):
  36. """Test the Entry bass class"""
  37. import entry
  38. base_entry = entry.Entry(None, None, None)
  39. self.assertEqual(True, base_entry.ObtainContents())
  40. def testUnknownEntry(self):
  41. """Test that unknown entry types are detected"""
  42. Node = collections.namedtuple('Node', ['name', 'path'])
  43. node = Node('invalid-name', 'invalid-path')
  44. with self.assertRaises(ValueError) as e:
  45. entry.Entry.Create(None, node, node.name)
  46. self.assertIn("Unknown entry type 'invalid-name' in node "
  47. "'invalid-path'", str(e.exception))
  48. def testUniqueName(self):
  49. """Test Entry.GetUniqueName"""
  50. Node = collections.namedtuple('Node', ['name', 'parent'])
  51. base_node = Node('root', None)
  52. base_entry = entry.Entry(None, None, base_node)
  53. self.assertEqual('root', base_entry.GetUniqueName())
  54. sub_node = Node('subnode', base_node)
  55. sub_entry = entry.Entry(None, None, sub_node)
  56. self.assertEqual('root.subnode', sub_entry.GetUniqueName())
  57. def testGetDefaultFilename(self):
  58. """Trivial test for this base class function"""
  59. base_entry = entry.Entry(None, None, None)
  60. self.assertIsNone(base_entry.GetDefaultFilename())
  61. def testBlobFdt(self):
  62. """Test the GetFdtEtype() method of the blob-dtb entries"""
  63. base = entry.Entry.Create(None, self.GetNode(), 'blob-dtb')
  64. self.assertIsNone(base.GetFdtEtype())
  65. dtb = entry.Entry.Create(None, self.GetNode(), 'u-boot-dtb')
  66. self.assertEqual('u-boot-dtb', dtb.GetFdtEtype())
  67. def testWriteChildData(self):
  68. """Test the WriteChildData() method of the base class"""
  69. base = entry.Entry.Create(None, self.GetNode(), 'blob-dtb')
  70. self.assertTrue(base.WriteChildData(base))
  71. def testReadChildData(self):
  72. """Test the ReadChildData() method of the base class"""
  73. base = entry.Entry.Create(None, self.GetNode(), 'blob-dtb')
  74. self.assertIsNone(base.ReadChildData(base))
  75. if __name__ == "__main__":
  76. unittest.main()