spi-nor: spi-nor-ids: Add entries for mt25q variants
[oweals/u-boot.git] / tools / binman / entry_test.py
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
7 import collections
8 import os
9 import sys
10 import unittest
11
12 import entry
13 import fdt
14 import fdt_util
15 import tools
16
17 class TestEntry(unittest.TestCase):
18     def setUp(self):
19         tools.PrepareOutputDir(None)
20
21     def tearDown(self):
22         tools.FinaliseOutputDir()
23
24     def GetNode(self):
25         binman_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
26         fname = fdt_util.EnsureCompiled(
27             os.path.join(binman_dir,('test/005_simple.dts')))
28         dtb = fdt.FdtScan(fname)
29         return dtb.GetNode('/binman/u-boot')
30
31     def _ReloadEntry(self):
32         global entry
33         if entry:
34             if sys.version_info[0] >= 3:
35                 import importlib
36                 importlib.reload(entry)
37             else:
38                 reload(entry)
39         else:
40             import entry
41
42     def test1EntryNoImportLib(self):
43         """Test that we can import Entry subclassess successfully"""
44         sys.modules['importlib'] = None
45         global entry
46         self._ReloadEntry()
47         entry.Entry.Create(None, self.GetNode(), 'u-boot')
48         self.assertFalse(entry.have_importlib)
49
50     def test2EntryImportLib(self):
51         del sys.modules['importlib']
52         global entry
53         self._ReloadEntry()
54         entry.Entry.Create(None, self.GetNode(), 'u-boot-spl')
55         self.assertTrue(entry.have_importlib)
56
57     def testEntryContents(self):
58         """Test the Entry bass class"""
59         import entry
60         base_entry = entry.Entry(None, None, None)
61         self.assertEqual(True, base_entry.ObtainContents())
62
63     def testUnknownEntry(self):
64         """Test that unknown entry types are detected"""
65         Node = collections.namedtuple('Node', ['name', 'path'])
66         node = Node('invalid-name', 'invalid-path')
67         with self.assertRaises(ValueError) as e:
68             entry.Entry.Create(None, node, node.name)
69         self.assertIn("Unknown entry type 'invalid-name' in node "
70                       "'invalid-path'", str(e.exception))
71
72     def testUniqueName(self):
73         """Test Entry.GetUniqueName"""
74         Node = collections.namedtuple('Node', ['name', 'parent'])
75         base_node = Node('root', None)
76         base_entry = entry.Entry(None, None, base_node)
77         self.assertEqual('root', base_entry.GetUniqueName())
78         sub_node = Node('subnode', base_node)
79         sub_entry = entry.Entry(None, None, sub_node)
80         self.assertEqual('root.subnode', sub_entry.GetUniqueName())
81
82     def testGetDefaultFilename(self):
83         """Trivial test for this base class function"""
84         base_entry = entry.Entry(None, None, None)
85         self.assertIsNone(base_entry.GetDefaultFilename())
86
87     def testBlobFdt(self):
88         """Test the GetFdtEtype() method of the blob-dtb entries"""
89         base = entry.Entry.Create(None, self.GetNode(), 'blob-dtb')
90         self.assertIsNone(base.GetFdtEtype())
91
92         dtb = entry.Entry.Create(None, self.GetNode(), 'u-boot-dtb')
93         self.assertEqual('u-boot-dtb', dtb.GetFdtEtype())
94
95     def testWriteChildData(self):
96         """Test the WriteChildData() method of the base class"""
97         base = entry.Entry.Create(None, self.GetNode(), 'blob-dtb')
98         self.assertTrue(base.WriteChildData(base))
99
100     def testReadChildData(self):
101         """Test the ReadChildData() method of the base class"""
102         base = entry.Entry.Create(None, self.GetNode(), 'blob-dtb')
103         self.assertIsNone(base.ReadChildData(base))
104
105
106 if __name__ == "__main__":
107     unittest.main()