From 4d5994f91c5c781fb0c8b32b58abfc4d9d2ec878 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 12 Nov 2017 21:52:20 -0700 Subject: binman: Set up 'entry' to permit full test coverage There is a little check at the top of entry.py which decides if importlib is available. At present this has no test coverage. To add this we will need to import the module twice, once with importlib and once without. In preparation for allowing a test to control the importing of this module, remove all global imports of the 'entry' module. Signed-off-by: Simon Glass --- tools/binman/entry_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'tools/binman/entry_test.py') diff --git a/tools/binman/entry_test.py b/tools/binman/entry_test.py index 8a9ae017f03..85c4196892f 100644 --- a/tools/binman/entry_test.py +++ b/tools/binman/entry_test.py @@ -9,16 +9,16 @@ import collections import unittest -import entry - class TestEntry(unittest.TestCase): def testEntryContents(self): """Test the Entry bass class""" + import entry base_entry = entry.Entry(None, None, None, read_node=False) self.assertEqual(True, base_entry.ObtainContents()) def testUnknownEntry(self): """Test that unknown entry types are detected""" + import entry Node = collections.namedtuple('Node', ['name', 'path']) node = Node('invalid-name', 'invalid-path') with self.assertRaises(ValueError) as e: -- cgit v1.2.3 From 934cdcfb1b1cac6a6c987f3f91e341c713770224 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 12 Nov 2017 21:52:21 -0700 Subject: binman: Add tests for importlib availability Add a test that the 'entry' module works with or without importlib. The tests are numbered so that they are executed in the correct order. Signed-off-by: Simon Glass --- tools/binman/entry_test.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'tools/binman/entry_test.py') diff --git a/tools/binman/entry_test.py b/tools/binman/entry_test.py index 85c4196892f..789b26fd9f5 100644 --- a/tools/binman/entry_test.py +++ b/tools/binman/entry_test.py @@ -7,9 +7,39 @@ # Test for the Entry class import collections +import os +import sys import unittest +import fdt +import fdt_util +import tools + class TestEntry(unittest.TestCase): + def GetNode(self): + binman_dir = os.path.dirname(os.path.realpath(sys.argv[0])) + tools.PrepareOutputDir(None) + fname = fdt_util.EnsureCompiled( + os.path.join(binman_dir,('test/05_simple.dts'))) + dtb = fdt.FdtScan(fname) + return dtb.GetNode('/binman/u-boot') + + def test1EntryNoImportLib(self): + """Test that we can import Entry subclassess successfully""" + + sys.modules['importlib'] = None + global entry + import entry + entry.Entry.Create(None, self.GetNode(), 'u-boot') + + def test2EntryImportLib(self): + del sys.modules['importlib'] + global entry + reload(entry) + entry.Entry.Create(None, self.GetNode(), 'u-boot-spl') + tools._RemoveOutputDir() + del entry + def testEntryContents(self): """Test the Entry bass class""" import entry -- cgit v1.2.3 From 9fc60b4975b14da3693f3dd86378fb918ea13f41 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 12 Nov 2017 21:52:22 -0700 Subject: binman: Add a main program to the tests Add a main program so that the tests can be executed directly, without going through the main binman program. Signed-off-by: Simon Glass --- tools/binman/entry_test.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'tools/binman/entry_test.py') diff --git a/tools/binman/entry_test.py b/tools/binman/entry_test.py index 789b26fd9f5..caa523ebf89 100644 --- a/tools/binman/entry_test.py +++ b/tools/binman/entry_test.py @@ -55,3 +55,7 @@ class TestEntry(unittest.TestCase): entry.Entry.Create(None, node, node.name) self.assertIn("Unknown entry type 'invalid-name' in node " "'invalid-path'", str(e.exception)) + + +if __name__ == "__main__": + unittest.main() -- cgit v1.2.3