diff options
Diffstat (limited to 'bitbake/lib/bb/tests/utils.py')
| -rw-r--r-- | bitbake/lib/bb/tests/utils.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/bitbake/lib/bb/tests/utils.py b/bitbake/lib/bb/tests/utils.py index 5c910b4b8e..a7ff33db52 100644 --- a/bitbake/lib/bb/tests/utils.py +++ b/bitbake/lib/bb/tests/utils.py | |||
| @@ -622,3 +622,47 @@ BBLAYERS += "/home/user/otherpath/layer6" | |||
| 622 | ['/home/user/otherpath/layer6', '/home/user/path/layer3'], ['/home/user/path/layer1', '/home/user/path/layer4', '/home/user/path/layer7'], | 622 | ['/home/user/otherpath/layer6', '/home/user/path/layer3'], ['/home/user/path/layer1', '/home/user/path/layer4', '/home/user/path/layer7'], |
| 623 | ['/home/user/path/layer3'], | 623 | ['/home/user/path/layer3'], |
| 624 | ['/home/user/path/layer7']) | 624 | ['/home/user/path/layer7']) |
| 625 | |||
| 626 | |||
| 627 | class GetReferencedVars(unittest.TestCase): | ||
| 628 | def setUp(self): | ||
| 629 | self.d = bb.data.init() | ||
| 630 | |||
| 631 | def check_referenced(self, expression, expected_layers): | ||
| 632 | vars = bb.utils.get_referenced_vars(expression, self.d) | ||
| 633 | |||
| 634 | # Do the easy check first - is every variable accounted for? | ||
| 635 | expected_vars = set.union(set(), *expected_layers) | ||
| 636 | got_vars = set(vars) | ||
| 637 | self.assertSetEqual(got_vars, expected_vars) | ||
| 638 | |||
| 639 | # Now test the order of the layers | ||
| 640 | start = 0 | ||
| 641 | for i, expected_layer in enumerate(expected_layers): | ||
| 642 | got_layer = set(vars[start:len(expected_layer)+start]) | ||
| 643 | start += len(expected_layer) | ||
| 644 | self.assertSetEqual(got_layer, expected_layer) | ||
| 645 | |||
| 646 | def test_no_vars(self): | ||
| 647 | self.check_referenced("", []) | ||
| 648 | self.check_referenced(" ", []) | ||
| 649 | self.check_referenced(" no vars here! ", []) | ||
| 650 | |||
| 651 | def test_single_layer(self): | ||
| 652 | self.check_referenced("${VAR}", [{"VAR"}]) | ||
| 653 | self.check_referenced("${VAR} ${VAR}", [{"VAR"}]) | ||
| 654 | |||
| 655 | def test_two_layer(self): | ||
| 656 | self.d.setVar("VAR", "${B}") | ||
| 657 | self.check_referenced("${VAR}", [{"VAR"}, {"B"}]) | ||
| 658 | self.check_referenced("${@d.getVar('VAR')}", [{"VAR"}, {"B"}]) | ||
| 659 | |||
| 660 | def test_more_complicated(self): | ||
| 661 | self.d["SRC_URI"] = "${QT_GIT}/${QT_MODULE}.git;name=${QT_MODULE};${QT_MODULE_BRANCH_PARAM};protocol=${QT_GIT_PROTOCOL}" | ||
| 662 | self.d["QT_GIT"] = "git://code.qt.io/${QT_GIT_PROJECT}" | ||
| 663 | self.d["QT_MODULE_BRANCH_PARAM"] = "branch=${QT_MODULE_BRANCH}" | ||
| 664 | self.d["QT_MODULE"] = "${BPN}" | ||
| 665 | self.d["BPN"] = "something to do with ${PN} and ${SPECIAL_PKGSUFFIX}" | ||
| 666 | |||
| 667 | layers = [{"SRC_URI"}, {"QT_GIT", "QT_MODULE", "QT_MODULE_BRANCH_PARAM", "QT_GIT_PROTOCOL"}, {"QT_GIT_PROJECT", "QT_MODULE_BRANCH", "BPN"}, {"PN", "SPECIAL_PKGSUFFIX"}] | ||
| 668 | self.check_referenced("${SRC_URI}", layers) | ||
