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