diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2016-12-13 20:07:09 +1300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-12-14 09:54:48 +0000 |
commit | cbc22a0a9aadc8606b927dbac0f1407ec2736b35 (patch) | |
tree | 7c822da36f9709049addab3e83be6beb74267e88 /lib/bb/tests/data.py | |
parent | 8f635815d191c9d848a92d51fdbf5e9fd3da1727 (diff) | |
download | bitbake-contrib-cbc22a0a9aadc8606b927dbac0f1407ec2736b35.tar.gz |
tinfoil: pass datastore to server when expanding python references
If you're expanding a value that refers to the value of a variable in
python code, we need to ensure that the datastore that gets used to get
the value of that variable is the client-side datastore and not just the
part of it that's on the server side. For example, suppose you are in
client code doing the following:
d.setVar('HELLO', 'there')
result = d.expand('${@d.getVar("HELLO", True)}')
result should be "there" but if the client part wasn't taken into
account, it would be whatever value HELLO had in the server portion of
the datastore (if any).
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/tests/data.py')
-rw-r--r-- | lib/bb/tests/data.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/bb/tests/data.py b/lib/bb/tests/data.py index 2bd481b5d..a17245f90 100644 --- a/lib/bb/tests/data.py +++ b/lib/bb/tests/data.py @@ -458,8 +458,11 @@ class Remote(unittest.TestCase): return self.d.localkeys() def getVarHistory(self, name): return self.d.varhistory.variable(name) - def expandPythonRef(self, varname, expr): - varparse = bb.data_smart.VariableParse(varname, self.d) + def expandPythonRef(self, varname, expr, d): + localdata = self.d.createCopy() + for key in d.localkeys(): + localdata.setVar(d.getVar(key)) + varparse = bb.data_smart.VariableParse(varname, localdata) return varparse.python_sub(expr) def setVar(self, name, value): self.d.setVar(name, value) @@ -483,3 +486,6 @@ class Remote(unittest.TestCase): # Test setVar on client side affects server d2.setVar('HELLO', 'other-world') self.assertEqual(d1.getVar('HELLO'), 'other-world') + # Test client side data is incorporated in python expansion (which is done on server) + d2.setVar('FOO', 'bar') + self.assertEqual(d2.expand('${@d.getVar("FOO")}'), 'bar') |