diff options
Diffstat (limited to 'bitbake/lib/layerindexlib/tests/cooker.py')
-rw-r--r-- | bitbake/lib/layerindexlib/tests/cooker.py | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/bitbake/lib/layerindexlib/tests/cooker.py b/bitbake/lib/layerindexlib/tests/cooker.py new file mode 100644 index 0000000000..9ce6e8c3ae --- /dev/null +++ b/bitbake/lib/layerindexlib/tests/cooker.py | |||
@@ -0,0 +1,123 @@ | |||
1 | # Copyright (C) 2018 Wind River Systems, Inc. | ||
2 | # | ||
3 | # This program is free software; you can redistribute it and/or modify | ||
4 | # it under the terms of the GNU General Public License version 2 as | ||
5 | # published by the Free Software Foundation. | ||
6 | # | ||
7 | # This program is distributed in the hope that it will be useful, | ||
8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
10 | # See the GNU General Public License for more details. | ||
11 | # | ||
12 | # You should have received a copy of the GNU General Public License | ||
13 | # along with this program; if not, write to the Free Software | ||
14 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
15 | |||
16 | import unittest | ||
17 | import tempfile | ||
18 | import os | ||
19 | import bb | ||
20 | |||
21 | import layerindexlib | ||
22 | from layerindexlib.tests.common import LayersTest | ||
23 | |||
24 | import logging | ||
25 | |||
26 | class LayerIndexCookerTest(LayersTest): | ||
27 | |||
28 | def setUp(self): | ||
29 | LayersTest.setUp(self) | ||
30 | |||
31 | # Note this is NOT a comprehensive test of cooker, as we can't easily | ||
32 | # configure the test data. But we can emulate the basics of the layer.conf | ||
33 | # files, so that is what we will do. | ||
34 | |||
35 | new_topdir = os.path.join(os.path.dirname(__file__), "testdata") | ||
36 | new_bbpath = os.path.join(new_topdir, "build") | ||
37 | |||
38 | self.d.setVar('TOPDIR', new_topdir) | ||
39 | self.d.setVar('BBPATH', new_bbpath) | ||
40 | |||
41 | self.d = bb.parse.handle("%s/conf/bblayers.conf" % new_bbpath, self.d, True) | ||
42 | for layer in self.d.getVar('BBLAYERS').split(): | ||
43 | self.d = bb.parse.handle("%s/conf/layer.conf" % layer, self.d, True) | ||
44 | |||
45 | self.layerindex = layerindexlib.LayerIndex(self.d) | ||
46 | self.layerindex.load_layerindex('cooker://', load=['layerDependencies']) | ||
47 | |||
48 | def test_layerindex_is_empty(self): | ||
49 | self.assertFalse(self.layerindex.is_empty(), msg="Layerindex is not empty!") | ||
50 | |||
51 | def test_dependency_resolution(self): | ||
52 | # Verify depth first searching... | ||
53 | (dependencies, invalidnames) = self.layerindex.find_dependencies(names=['meta-python']) | ||
54 | |||
55 | first = True | ||
56 | for deplayerbranch in dependencies: | ||
57 | layerBranch = dependencies[deplayerbranch][0] | ||
58 | layerDeps = dependencies[deplayerbranch][1:] | ||
59 | |||
60 | if not first: | ||
61 | continue | ||
62 | |||
63 | first = False | ||
64 | |||
65 | # Top of the deps should be openembedded-core, since everything depends on it. | ||
66 | self.assertEqual(layerBranch.layer.name, "openembedded-core", msg='Top dependency not openembedded-core') | ||
67 | |||
68 | # meta-python should cause an openembedded-core dependency, if not assert! | ||
69 | for dep in layerDeps: | ||
70 | if dep.layer.name == 'meta-python': | ||
71 | break | ||
72 | else: | ||
73 | self.assertTrue(False, msg='meta-python was not found') | ||
74 | |||
75 | # Only check the first element... | ||
76 | break | ||
77 | else: | ||
78 | if first: | ||
79 | # Empty list, this is bad. | ||
80 | self.assertTrue(False, msg='Empty list of dependencies') | ||
81 | |||
82 | # Last dep should be the requested item | ||
83 | layerBranch = dependencies[deplayerbranch][0] | ||
84 | self.assertEqual(layerBranch.layer.name, "meta-python", msg='Last dependency not meta-python') | ||
85 | |||
86 | def test_find_collection(self): | ||
87 | def _check(collection, expected): | ||
88 | self.logger.debug(1, "Looking for collection %s..." % collection) | ||
89 | result = self.layerindex.find_collection(collection) | ||
90 | if expected: | ||
91 | self.assertIsNotNone(result, msg="Did not find %s when it shouldn't be there" % collection) | ||
92 | else: | ||
93 | self.assertIsNone(result, msg="Found %s when it should be there" % collection) | ||
94 | |||
95 | tests = [ ('core', True), | ||
96 | ('openembedded-core', False), | ||
97 | ('networking-layer', True), | ||
98 | ('meta-python', True), | ||
99 | ('openembedded-layer', True), | ||
100 | ('notpresent', False) ] | ||
101 | |||
102 | for collection,result in tests: | ||
103 | _check(collection, result) | ||
104 | |||
105 | def test_find_layerbranch(self): | ||
106 | def _check(name, expected): | ||
107 | self.logger.debug(1, "Looking for layerbranch %s..." % name) | ||
108 | result = self.layerindex.find_layerbranch(name) | ||
109 | if expected: | ||
110 | self.assertIsNotNone(result, msg="Did not find %s when it shouldn't be there" % collection) | ||
111 | else: | ||
112 | self.assertIsNone(result, msg="Found %s when it should be there" % collection) | ||
113 | |||
114 | tests = [ ('openembedded-core', True), | ||
115 | ('core', False), | ||
116 | ('networking-layer', True), | ||
117 | ('meta-python', True), | ||
118 | ('openembedded-layer', True), | ||
119 | ('notpresent', False) ] | ||
120 | |||
121 | for collection,result in tests: | ||
122 | _check(collection, result) | ||
123 | |||