diff options
-rw-r--r-- | bitbake/lib/bb/tests/codeparser.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/bitbake/lib/bb/tests/codeparser.py b/bitbake/lib/bb/tests/codeparser.py index a45a582dd9..e30e78c158 100644 --- a/bitbake/lib/bb/tests/codeparser.py +++ b/bitbake/lib/bb/tests/codeparser.py | |||
@@ -49,6 +49,9 @@ class ReferenceTest(unittest.TestCase): | |||
49 | def assertExecs(self, execs): | 49 | def assertExecs(self, execs): |
50 | self.assertEqual(self.execs, execs) | 50 | self.assertEqual(self.execs, execs) |
51 | 51 | ||
52 | def assertContains(self, contains): | ||
53 | self.assertEqual(self.contains, contains) | ||
54 | |||
52 | class VariableReferenceTest(ReferenceTest): | 55 | class VariableReferenceTest(ReferenceTest): |
53 | 56 | ||
54 | def parseExpression(self, exp): | 57 | def parseExpression(self, exp): |
@@ -201,6 +204,7 @@ class PythonReferenceTest(ReferenceTest): | |||
201 | 204 | ||
202 | self.references = parsedvar.references | parser.references | 205 | self.references = parsedvar.references | parser.references |
203 | self.execs = parser.execs | 206 | self.execs = parser.execs |
207 | self.contains = parser.contains | ||
204 | 208 | ||
205 | @staticmethod | 209 | @staticmethod |
206 | def indent(value): | 210 | def indent(value): |
@@ -265,6 +269,26 @@ be. These unit tests are testing snippets.""" | |||
265 | self.assertExecs(set(["testget"])) | 269 | self.assertExecs(set(["testget"])) |
266 | del self.context["testget"] | 270 | del self.context["testget"] |
267 | 271 | ||
272 | def test_contains(self): | ||
273 | self.parseExpression('bb.utils.contains("TESTVAR", "one", "true", "false", d)') | ||
274 | self.assertContains({'TESTVAR': {'one'}}) | ||
275 | |||
276 | def test_contains_multi(self): | ||
277 | self.parseExpression('bb.utils.contains("TESTVAR", "one two", "true", "false", d)') | ||
278 | self.assertContains({'TESTVAR': {'one two'}}) | ||
279 | |||
280 | def test_contains_any(self): | ||
281 | self.parseExpression('bb.utils.contains_any("TESTVAR", "hello", "true", "false", d)') | ||
282 | self.assertContains({'TESTVAR': {'hello'}}) | ||
283 | |||
284 | def test_contains_any_multi(self): | ||
285 | self.parseExpression('bb.utils.contains_any("TESTVAR", "one two three", "true", "false", d)') | ||
286 | self.assertContains({'TESTVAR': {'one', 'two', 'three'}}) | ||
287 | |||
288 | def test_contains_filter(self): | ||
289 | self.parseExpression('bb.utils.filter("TESTVAR", "hello there world", d)') | ||
290 | self.assertContains({'TESTVAR': {'hello', 'there', 'world'}}) | ||
291 | |||
268 | 292 | ||
269 | class DependencyReferenceTest(ReferenceTest): | 293 | class DependencyReferenceTest(ReferenceTest): |
270 | 294 | ||
@@ -370,6 +394,30 @@ esac | |||
370 | 394 | ||
371 | self.assertEqual(deps, set(["oe_libinstall"])) | 395 | self.assertEqual(deps, set(["oe_libinstall"])) |
372 | 396 | ||
397 | def test_contains_vardeps(self): | ||
398 | expr = '${@bb.utils.filter("TESTVAR", "somevalue anothervalue", d)} \ | ||
399 | ${@bb.utils.contains("TESTVAR", "testval testval2", "yetanothervalue", "", d)} \ | ||
400 | ${@bb.utils.contains("TESTVAR", "testval2 testval3", "blah", "", d)} \ | ||
401 | ${@bb.utils.contains_any("TESTVAR", "testval2 testval3", "lastone", "", d)}' | ||
402 | parsedvar = self.d.expandWithRefs(expr, None) | ||
403 | # Check contains | ||
404 | self.assertEqual(parsedvar.contains, {'TESTVAR': {'testval2 testval3', 'anothervalue', 'somevalue', 'testval testval2', 'testval2', 'testval3'}}) | ||
405 | # Check dependencies | ||
406 | self.d.setVar('ANOTHERVAR', expr) | ||
407 | self.d.setVar('TESTVAR', 'anothervalue testval testval2') | ||
408 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), self.d) | ||
409 | self.assertEqual(sorted(values.splitlines()), | ||
410 | sorted([expr, | ||
411 | 'TESTVAR{anothervalue} = Set', | ||
412 | 'TESTVAR{somevalue} = Unset', | ||
413 | 'TESTVAR{testval testval2} = Set', | ||
414 | 'TESTVAR{testval2 testval3} = Unset', | ||
415 | 'TESTVAR{testval2} = Set', | ||
416 | 'TESTVAR{testval3} = Unset' | ||
417 | ])) | ||
418 | # Check final value | ||
419 | self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['anothervalue', 'yetanothervalue', 'lastone']) | ||
420 | |||
373 | #Currently no wildcard support | 421 | #Currently no wildcard support |
374 | #def test_vardeps_wildcards(self): | 422 | #def test_vardeps_wildcards(self): |
375 | # self.d.setVar("oe_libinstall", "echo test") | 423 | # self.d.setVar("oe_libinstall", "echo test") |