entry_test.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 fdt
  11. import fdt_util
  12. import tools
  13. class TestEntry(unittest.TestCase):
  14. def setUp(self):
  15. tools.PrepareOutputDir(None)
  16. def tearDown(self):
  17. tools.FinaliseOutputDir()
  18. def GetNode(self):
  19. binman_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
  20. fname = fdt_util.EnsureCompiled(
  21. os.path.join(binman_dir,('test/05_simple.dts')))
  22. dtb = fdt.FdtScan(fname)
  23. return dtb.GetNode('/binman/u-boot')
  24. def test1EntryNoImportLib(self):
  25. """Test that we can import Entry subclassess successfully"""
  26. sys.modules['importlib'] = None
  27. global entry
  28. import entry
  29. entry.Entry.Create(None, self.GetNode(), 'u-boot')
  30. def test2EntryImportLib(self):
  31. del sys.modules['importlib']
  32. global entry
  33. reload(entry)
  34. entry.Entry.Create(None, self.GetNode(), 'u-boot-spl')
  35. del entry
  36. def testEntryContents(self):
  37. """Test the Entry bass class"""
  38. import entry
  39. base_entry = entry.Entry(None, None, None, read_node=False)
  40. self.assertEqual(True, base_entry.ObtainContents())
  41. def testUnknownEntry(self):
  42. """Test that unknown entry types are detected"""
  43. import entry
  44. Node = collections.namedtuple('Node', ['name', 'path'])
  45. node = Node('invalid-name', 'invalid-path')
  46. with self.assertRaises(ValueError) as e:
  47. entry.Entry.Create(None, node, node.name)
  48. self.assertIn("Unknown entry type 'invalid-name' in node "
  49. "'invalid-path'", str(e.exception))
  50. def testUniqueName(self):
  51. """Test Entry.GetUniqueName"""
  52. import entry
  53. Node = collections.namedtuple('Node', ['name', 'parent'])
  54. base_node = Node('root', None)
  55. base_entry = entry.Entry(None, None, base_node, read_node=False)
  56. self.assertEqual('root', base_entry.GetUniqueName())
  57. sub_node = Node('subnode', base_node)
  58. sub_entry = entry.Entry(None, None, sub_node, read_node=False)
  59. self.assertEqual('root.subnode', sub_entry.GetUniqueName())
  60. def testGetDefaultFilename(self):
  61. """Trivial test for this base class function"""
  62. import entry
  63. base_entry = entry.Entry(None, None, None, read_node=False)
  64. self.assertIsNone(base_entry.GetDefaultFilename())
  65. if __name__ == "__main__":
  66. unittest.main()