|
@@ -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")
|