def test_normal_append(self): value = bbvalue.LazyCompound(self.metadata) value.append(bbvalue.bbvalue("VAL", self.metadata)) value.lazy_prepend(bbvalue.bbparse("${FOO}:", self.metadata)) value.lazy_append(bbvalue.bbparse(":${BAR}", self.metadata)) value.append(bbvalue.bbparse(":val2", self.metadata)) self.assertEqual(value.resolve(), "foo:val:val2:bar")
def test_changed_after_memoized(self): d = bb.data.init() d.setVar("foo", "value of foo") val = bbvalue.bbparse("${foo}", d) self.assertEqual(str(bbvalue.bbvalue("foo", d)), "value of foo") d.setVar("foo", "second value of foo") self.assertEqual(str(bbvalue.bbvalue("foo", d)), "second value of foo")
def references_from_flags(varname, metadata): refs = set() dirs = metadata.getVarFlag(varname, "dirs") if dirs: refs.update(references(dirs, metadata)) varrefs = metadata.getVarFlag(varname, "varrefs") if varrefs: refs.update(references(varrefs, metadata)) patterns = str(bbvalue.bbparse(varrefs, metadata)).split() for key in metadata.keys(): if any(fnmatchcase(key, pat) for pat in patterns): refs.add(key) return refs
def test_indirect_and_another(self): val = bbvalue.bbparse("${${foo}} ${bar}", self.d) self.assertEqual(str(val), "value of 'value of foo' value of bar")
def test_python_snippet(self): val = bbvalue.bbparse("${@5*12}", self.d) self.assertEqual(str(val), "60")
def test_one_var(self): val = bbvalue.bbparse("${foo}", self.d) self.assertEqual(str(val), "value of foo")
def test_indirect_one_var(self): val = bbvalue.bbparse("${${foo}}", self.d) self.assertEqual(str(val), "value of 'value of foo'")
def test_append(self): value = bbvalue.LazyCompound(self.metadata) value.append(bbvalue.bbvalue("VAL", self.metadata)) value.lazy_append(bbvalue.bbparse(":${BAR}", self.metadata)) self.assertEqual(value.resolve(), "val:bar")
def test_refs(self): val = bbvalue.bbparse("${value of ${foo}${bar}}", self.d) self.assertEqual(str(val), "187")
def test_value_containing_value(self): val = bbvalue.bbparse("${@d.getVar('foo', True) + ' ${bar}'}", self.d) self.assertEqual(str(val), "value of foo value of bar")
def test_ref_in_python_ref(self): val = bbvalue.bbparse("${@'${foo}' + 'bar'}", self.d) self.assertEqual(str(val), "foobar")
def test_mixed(self): val = bbvalue.bbparse("${value of ${@('${foo}'+'bar')[0:3]}${${@'BAR'.lower()}}}", self.d) self.assertEqual(str(val), "187")
def test_runtime(self): val = bbvalue.bbparse("${${@'value of' + ' f'+'o'+'o'+'b'+'a'+'r'}}", self.d) self.assertEqual(str(val), "187")
def test_deep_python_nesting(self): depth = 50 val = bbvalue.bbparse("${@" * depth + "1" + "+1}" * depth, self.d) self.assertEqual(str(val), str(depth + 1))
def test_deep_nesting(self): depth = 100 val = bbvalue.bbparse("${" * depth + "foo" + "}" * depth, self.d) self.assertEqual(str(val), "foo")
def test_python_ref_in_ref(self): val = bbvalue.bbparse("${${@'f'+'o'+'o'}}", self.d) self.assertEqual(str(val), "foo")
def test_expand_in_python_snippet(self): val = bbvalue.bbparse("${@'boo ' + '${foo}'}", self.d) self.assertEqual(str(val), "boo value of foo")
def assertReferences(self, value, refs): super(TestBasic, self).assertReferences( bbvalue.bbparse(value, self.d), refs)
def test_python_snippet_getvar(self): val = bbvalue.bbparse("${@d.getVar('foo', True) + ' ${bar}'}", self.d) self.assertEqual(str(val), "value of foo value of bar")
def test_python_refs(self): val = bbvalue.bbparse("${@${@3}**2 + ${@4}**2}", self.d) self.assertEqual(str(val), "25")
def test_reference_undefined_var(self): val = bbvalue.bbparse("${undefinedvar} meh", self.d) self.assertEqual(str(val), "${undefinedvar} meh")
def test_prepend(self): value = bbvalue.LazyCompound(self.metadata) value.append(bbvalue.bbvalue("VAL", self.metadata)) value.lazy_prepend(bbvalue.bbparse("${FOO}:", self.metadata)) self.assertEqual(value.resolve(), "foo:val")