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