bitbake: bitbake-selftest: add contains tests
Add some tests to verify that we are extracting "contains" information from python expressions in the code in the bb.data and bb.codeparser modules. (Bitbake rev: 88fda492df875dd79b7aecf1f34b38517fc1eb33) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
7b7c238b2d
commit
1fe95cfc12
|
@ -49,6 +49,9 @@ class ReferenceTest(unittest.TestCase):
|
|||
def assertExecs(self, execs):
|
||||
self.assertEqual(self.execs, execs)
|
||||
|
||||
def assertContains(self, contains):
|
||||
self.assertEqual(self.contains, contains)
|
||||
|
||||
class VariableReferenceTest(ReferenceTest):
|
||||
|
||||
def parseExpression(self, exp):
|
||||
|
@ -201,6 +204,7 @@ class PythonReferenceTest(ReferenceTest):
|
|||
|
||||
self.references = parsedvar.references | parser.references
|
||||
self.execs = parser.execs
|
||||
self.contains = parser.contains
|
||||
|
||||
@staticmethod
|
||||
def indent(value):
|
||||
|
@ -265,6 +269,26 @@ be. These unit tests are testing snippets."""
|
|||
self.assertExecs(set(["testget"]))
|
||||
del self.context["testget"]
|
||||
|
||||
def test_contains(self):
|
||||
self.parseExpression('bb.utils.contains("TESTVAR", "one", "true", "false", d)')
|
||||
self.assertContains({'TESTVAR': {'one'}})
|
||||
|
||||
def test_contains_multi(self):
|
||||
self.parseExpression('bb.utils.contains("TESTVAR", "one two", "true", "false", d)')
|
||||
self.assertContains({'TESTVAR': {'one two'}})
|
||||
|
||||
def test_contains_any(self):
|
||||
self.parseExpression('bb.utils.contains_any("TESTVAR", "hello", "true", "false", d)')
|
||||
self.assertContains({'TESTVAR': {'hello'}})
|
||||
|
||||
def test_contains_any_multi(self):
|
||||
self.parseExpression('bb.utils.contains_any("TESTVAR", "one two three", "true", "false", d)')
|
||||
self.assertContains({'TESTVAR': {'one', 'two', 'three'}})
|
||||
|
||||
def test_contains_filter(self):
|
||||
self.parseExpression('bb.utils.filter("TESTVAR", "hello there world", d)')
|
||||
self.assertContains({'TESTVAR': {'hello', 'there', 'world'}})
|
||||
|
||||
|
||||
class DependencyReferenceTest(ReferenceTest):
|
||||
|
||||
|
@ -370,6 +394,30 @@ esac
|
|||
|
||||
self.assertEqual(deps, set(["oe_libinstall"]))
|
||||
|
||||
def test_contains_vardeps(self):
|
||||
expr = '${@bb.utils.filter("TESTVAR", "somevalue anothervalue", d)} \
|
||||
${@bb.utils.contains("TESTVAR", "testval testval2", "yetanothervalue", "", d)} \
|
||||
${@bb.utils.contains("TESTVAR", "testval2 testval3", "blah", "", d)} \
|
||||
${@bb.utils.contains_any("TESTVAR", "testval2 testval3", "lastone", "", d)}'
|
||||
parsedvar = self.d.expandWithRefs(expr, None)
|
||||
# Check contains
|
||||
self.assertEqual(parsedvar.contains, {'TESTVAR': {'testval2 testval3', 'anothervalue', 'somevalue', 'testval testval2', 'testval2', 'testval3'}})
|
||||
# Check dependencies
|
||||
self.d.setVar('ANOTHERVAR', expr)
|
||||
self.d.setVar('TESTVAR', 'anothervalue testval testval2')
|
||||
deps, values = bb.data.build_dependencies("ANOTHERVAR", set(self.d.keys()), set(), set(), self.d)
|
||||
self.assertEqual(sorted(values.splitlines()),
|
||||
sorted([expr,
|
||||
'TESTVAR{anothervalue} = Set',
|
||||
'TESTVAR{somevalue} = Unset',
|
||||
'TESTVAR{testval testval2} = Set',
|
||||
'TESTVAR{testval2 testval3} = Unset',
|
||||
'TESTVAR{testval2} = Set',
|
||||
'TESTVAR{testval3} = Unset'
|
||||
]))
|
||||
# Check final value
|
||||
self.assertEqual(self.d.getVar('ANOTHERVAR').split(), ['anothervalue', 'yetanothervalue', 'lastone'])
|
||||
|
||||
#Currently no wildcard support
|
||||
#def test_vardeps_wildcards(self):
|
||||
# self.d.setVar("oe_libinstall", "echo test")
|
||||
|
|
Loading…
Reference in New Issue