entry_test.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 GetNode(self):
  15. binman_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
  16. tools.PrepareOutputDir(None)
  17. fname = fdt_util.EnsureCompiled(
  18. os.path.join(binman_dir,('test/05_simple.dts')))
  19. dtb = fdt.FdtScan(fname)
  20. return dtb.GetNode('/binman/u-boot')
  21. def test1EntryNoImportLib(self):
  22. """Test that we can import Entry subclassess successfully"""
  23. sys.modules['importlib'] = None
  24. global entry
  25. import entry
  26. entry.Entry.Create(None, self.GetNode(), 'u-boot')
  27. def test2EntryImportLib(self):
  28. del sys.modules['importlib']
  29. global entry
  30. reload(entry)
  31. entry.Entry.Create(None, self.GetNode(), 'u-boot-spl')
  32. tools._RemoveOutputDir()
  33. del entry
  34. def testEntryContents(self):
  35. """Test the Entry bass class"""
  36. import entry
  37. base_entry = entry.Entry(None, None, None, read_node=False)
  38. self.assertEqual(True, base_entry.ObtainContents())
  39. def testUnknownEntry(self):
  40. """Test that unknown entry types are detected"""
  41. import entry
  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. if __name__ == "__main__":
  49. unittest.main()