diff options
Diffstat (limited to 'bitbake/lib/bb/tests/codeparser.py')
-rw-r--r-- | bitbake/lib/bb/tests/codeparser.py | 66 |
1 files changed, 58 insertions, 8 deletions
diff --git a/bitbake/lib/bb/tests/codeparser.py b/bitbake/lib/bb/tests/codeparser.py index 826a2d2f6d..f6585fb3aa 100644 --- a/bitbake/lib/bb/tests/codeparser.py +++ b/bitbake/lib/bb/tests/codeparser.py | |||
@@ -44,6 +44,7 @@ class VariableReferenceTest(ReferenceTest): | |||
44 | def parseExpression(self, exp): | 44 | def parseExpression(self, exp): |
45 | parsedvar = self.d.expandWithRefs(exp, None) | 45 | parsedvar = self.d.expandWithRefs(exp, None) |
46 | self.references = parsedvar.references | 46 | self.references = parsedvar.references |
47 | self.execs = parsedvar.execs | ||
47 | 48 | ||
48 | def test_simple_reference(self): | 49 | def test_simple_reference(self): |
49 | self.setEmptyVars(["FOO"]) | 50 | self.setEmptyVars(["FOO"]) |
@@ -61,6 +62,11 @@ class VariableReferenceTest(ReferenceTest): | |||
61 | self.parseExpression("${@d.getVar('BAR') + 'foo'}") | 62 | self.parseExpression("${@d.getVar('BAR') + 'foo'}") |
62 | self.assertReferences(set(["BAR"])) | 63 | self.assertReferences(set(["BAR"])) |
63 | 64 | ||
65 | def test_python_exec_reference(self): | ||
66 | self.parseExpression("${@eval('3 * 5')}") | ||
67 | self.assertReferences(set()) | ||
68 | self.assertExecs(set(["eval"])) | ||
69 | |||
64 | class ShellReferenceTest(ReferenceTest): | 70 | class ShellReferenceTest(ReferenceTest): |
65 | 71 | ||
66 | def parseExpression(self, exp): | 72 | def parseExpression(self, exp): |
@@ -111,9 +117,9 @@ ${D}${libdir}/pkgconfig/*.pc | |||
111 | self.assertExecs(set(["sed"])) | 117 | self.assertExecs(set(["sed"])) |
112 | 118 | ||
113 | def test_parameter_expansion_modifiers(self): | 119 | def test_parameter_expansion_modifiers(self): |
114 | # - and + are also valid modifiers for parameter expansion, but are | 120 | # -,+ and : are also valid modifiers for parameter expansion, but are |
115 | # valid characters in bitbake variable names, so are not included here | 121 | # valid characters in bitbake variable names, so are not included here |
116 | for i in ('=', ':-', ':=', '?', ':?', ':+', '#', '%', '##', '%%'): | 122 | for i in ('=', '?', '#', '%', '##', '%%'): |
117 | name = "foo%sbar" % i | 123 | name = "foo%sbar" % i |
118 | self.parseExpression("${%s}" % name) | 124 | self.parseExpression("${%s}" % name) |
119 | self.assertNotIn(name, self.references) | 125 | self.assertNotIn(name, self.references) |
@@ -318,7 +324,7 @@ d.getVar(a(), False) | |||
318 | "filename": "example.bb", | 324 | "filename": "example.bb", |
319 | }) | 325 | }) |
320 | 326 | ||
321 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d) | 327 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), set(), self.d, self.d) |
322 | 328 | ||
323 | self.assertEqual(deps, set(["somevar", "bar", "something", "inexpand", "test", "test2", "a"])) | 329 | self.assertEqual(deps, set(["somevar", "bar", "something", "inexpand", "test", "test2", "a"])) |
324 | 330 | ||
@@ -365,7 +371,7 @@ esac | |||
365 | self.d.setVarFlags("FOO", {"func": True}) | 371 | self.d.setVarFlags("FOO", {"func": True}) |
366 | self.setEmptyVars(execs) | 372 | self.setEmptyVars(execs) |
367 | 373 | ||
368 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d) | 374 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), set(), self.d, self.d) |
369 | 375 | ||
370 | self.assertEqual(deps, set(["somevar", "inverted"] + execs)) | 376 | self.assertEqual(deps, set(["somevar", "inverted"] + execs)) |
371 | 377 | ||
@@ -375,7 +381,7 @@ esac | |||
375 | self.d.setVar("FOO", "foo=oe_libinstall; eval $foo") | 381 | self.d.setVar("FOO", "foo=oe_libinstall; eval $foo") |
376 | self.d.setVarFlag("FOO", "vardeps", "oe_libinstall") | 382 | self.d.setVarFlag("FOO", "vardeps", "oe_libinstall") |
377 | 383 | ||
378 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d) | 384 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), set(), self.d, self.d) |
379 | 385 | ||
380 | self.assertEqual(deps, set(["oe_libinstall"])) | 386 | self.assertEqual(deps, set(["oe_libinstall"])) |
381 | 387 | ||
@@ -384,7 +390,7 @@ esac | |||
384 | self.d.setVar("FOO", "foo=oe_libinstall; eval $foo") | 390 | self.d.setVar("FOO", "foo=oe_libinstall; eval $foo") |
385 | self.d.setVarFlag("FOO", "vardeps", "${@'oe_libinstall'}") | 391 | self.d.setVarFlag("FOO", "vardeps", "${@'oe_libinstall'}") |
386 | 392 | ||
387 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), self.d) | 393 | deps, values = bb.data.build_dependencies("FOO", set(self.d.keys()), set(), set(), set(), set(), self.d, self.d) |
388 | 394 | ||
389 | self.assertEqual(deps, set(["oe_libinstall"])) | 395 | self.assertEqual(deps, set(["oe_libinstall"])) |
390 | 396 | ||
@@ -399,7 +405,7 @@ esac | |||
399 | # Check dependencies | 405 | # Check dependencies |
400 | self.d.setVar('ANOTHERVAR', expr) | 406 | self.d.setVar('ANOTHERVAR', expr) |
401 | self.d.setVar('TESTVAR', 'anothervalue testval testval2') | 407 | self.d.setVar('TESTVAR', 'anothervalue testval testval2') |
402 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), self.d) | 408 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), set(), self.d, self.d) |
403 | self.assertEqual(sorted(values.splitlines()), | 409 | self.assertEqual(sorted(values.splitlines()), |
404 | sorted([expr, | 410 | sorted([expr, |
405 | 'TESTVAR{anothervalue} = Set', | 411 | 'TESTVAR{anothervalue} = Set', |
@@ -412,11 +418,55 @@ esac | |||
412 | # Check final value | 418 | # Check final value |
413 | self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['anothervalue', 'yetanothervalue', 'lastone']) | 419 | self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['anothervalue', 'yetanothervalue', 'lastone']) |
414 | 420 | ||
421 | def test_contains_vardeps_excluded(self): | ||
422 | # Check the ignored_vars option to build_dependencies is handled by contains functionality | ||
423 | varval = '${TESTVAR2} ${@bb.utils.filter("TESTVAR", "somevalue anothervalue", d)}' | ||
424 | self.d.setVar('ANOTHERVAR', varval) | ||
425 | self.d.setVar('TESTVAR', 'anothervalue testval testval2') | ||
426 | self.d.setVar('TESTVAR2', 'testval3') | ||
427 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), set(["TESTVAR"]), self.d, self.d) | ||
428 | self.assertEqual(sorted(values.splitlines()), sorted([varval])) | ||
429 | self.assertEqual(deps, set(["TESTVAR2"])) | ||
430 | self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['testval3', 'anothervalue']) | ||
431 | |||
432 | # Check the vardepsexclude flag is handled by contains functionality | ||
433 | self.d.setVarFlag('ANOTHERVAR', 'vardepsexclude', 'TESTVAR') | ||
434 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), set(), self.d, self.d) | ||
435 | self.assertEqual(sorted(values.splitlines()), sorted([varval])) | ||
436 | self.assertEqual(deps, set(["TESTVAR2"])) | ||
437 | self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['testval3', 'anothervalue']) | ||
438 | |||
439 | def test_contains_vardeps_override_operators(self): | ||
440 | # Check override operators handle dependencies correctly with the contains functionality | ||
441 | expr_plain = 'testval' | ||
442 | expr_prepend = '${@bb.utils.filter("TESTVAR1", "testval1", d)} ' | ||
443 | expr_append = ' ${@bb.utils.filter("TESTVAR2", "testval2", d)}' | ||
444 | expr_remove = '${@bb.utils.contains("TESTVAR3", "no-testval", "testval", "", d)}' | ||
445 | # Check dependencies | ||
446 | self.d.setVar('ANOTHERVAR', expr_plain) | ||
447 | self.d.prependVar('ANOTHERVAR', expr_prepend) | ||
448 | self.d.appendVar('ANOTHERVAR', expr_append) | ||
449 | self.d.setVar('ANOTHERVAR:remove', expr_remove) | ||
450 | self.d.setVar('TESTVAR1', 'blah') | ||
451 | self.d.setVar('TESTVAR2', 'testval2') | ||
452 | self.d.setVar('TESTVAR3', 'no-testval') | ||
453 | deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), set(), set(), self.d, self.d) | ||
454 | self.assertEqual(sorted(values.splitlines()), | ||
455 | sorted([ | ||
456 | expr_prepend + expr_plain + expr_append, | ||
457 | '_remove of ' + expr_remove, | ||
458 | 'TESTVAR1{testval1} = Unset', | ||
459 | 'TESTVAR2{testval2} = Set', | ||
460 | 'TESTVAR3{no-testval} = Set', | ||
461 | ])) | ||
462 | # Check final value | ||
463 | self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['testval2']) | ||
464 | |||
415 | #Currently no wildcard support | 465 | #Currently no wildcard support |
416 | #def test_vardeps_wildcards(self): | 466 | #def test_vardeps_wildcards(self): |
417 | # self.d.setVar("oe_libinstall", "echo test") | 467 | # self.d.setVar("oe_libinstall", "echo test") |
418 | # self.d.setVar("FOO", "foo=oe_libinstall; eval $foo") | 468 | # self.d.setVar("FOO", "foo=oe_libinstall; eval $foo") |
419 | # self.d.setVarFlag("FOO", "vardeps", "oe_*") | 469 | # self.d.setVarFlag("FOO", "vardeps", "oe_*") |
420 | # self.assertEquals(deps, set(["oe_libinstall"])) | 470 | # self.assertEqual(deps, set(["oe_libinstall"])) |
421 | 471 | ||
422 | 472 | ||