diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-07-22 23:29:40 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-07-23 08:48:41 +0100 |
commit | aaea533e70d4aefc2de3a2a62a3453a2a9034292 (patch) | |
tree | b74a9d7908565d4c9497d1eaf988e76d076fdb3f | |
parent | 19f290f223376cc9428a1b8fc08476dc76b578ee (diff) | |
download | poky-aaea533e70d4aefc2de3a2a62a3453a2a9034292.tar.gz |
bitbake: tests/parse: Add BBCLASSEXTEND multiple data store corruption reproducer
One data store changing a variable poked through into a different data
store. This test case replicates that issue where the value 'B' would
become unset/disappear.
We also enhance parsehelper to generate files with an optional suffix
such as bbclass.
(Bitbake rev: 5c4179f58a4e04f1c354df5f17d1860eb403f0ac)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/bb/tests/parse.py | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/bitbake/lib/bb/tests/parse.py b/bitbake/lib/bb/tests/parse.py index 21fd78a736..6beb76a48d 100644 --- a/bitbake/lib/bb/tests/parse.py +++ b/bitbake/lib/bb/tests/parse.py | |||
@@ -47,9 +47,9 @@ C = "3" | |||
47 | self.d = bb.data.init() | 47 | self.d = bb.data.init() |
48 | bb.parse.siggen = bb.siggen.init(self.d) | 48 | bb.parse.siggen = bb.siggen.init(self.d) |
49 | 49 | ||
50 | def parsehelper(self, content): | 50 | def parsehelper(self, content, suffix = ".bb"): |
51 | 51 | ||
52 | f = tempfile.NamedTemporaryFile(suffix = ".bb") | 52 | f = tempfile.NamedTemporaryFile(suffix = suffix) |
53 | f.write(content) | 53 | f.write(content) |
54 | f.flush() | 54 | f.flush() |
55 | os.chdir(os.path.dirname(f.name)) | 55 | os.chdir(os.path.dirname(f.name)) |
@@ -113,3 +113,35 @@ PN = "bc" | |||
113 | d.setVar("OVERRIDES", "bc-dev") | 113 | d.setVar("OVERRIDES", "bc-dev") |
114 | self.assertEqual(d.getVar("DESCRIPTION", True), "C D") | 114 | self.assertEqual(d.getVar("DESCRIPTION", True), "C D") |
115 | 115 | ||
116 | |||
117 | classextend = """ | ||
118 | VAR_var_override1 = "B" | ||
119 | EXTRA = ":override1" | ||
120 | OVERRIDES = "nothing${EXTRA}" | ||
121 | |||
122 | BBCLASSEXTEND = "###CLASS###" | ||
123 | """ | ||
124 | classextend_bbclass = """ | ||
125 | EXTRA = "" | ||
126 | python () { | ||
127 | d.renameVar("VAR_var", "VAR_var2") | ||
128 | } | ||
129 | """ | ||
130 | |||
131 | # | ||
132 | # Test based upon a real world data corruption issue. One | ||
133 | # data store changing a variable poked through into a different data | ||
134 | # store. This test case replicates that issue where the value 'B' would | ||
135 | # become unset/disappear. | ||
136 | # | ||
137 | def test_parse_classextend_contamination(self): | ||
138 | cls = self.parsehelper(self.classextend_bbclass, suffix=".bbclass") | ||
139 | #clsname = os.path.basename(cls.name).replace(".bbclass", "") | ||
140 | self.classextend = self.classextend.replace("###CLASS###", cls.name) | ||
141 | f = self.parsehelper(self.classextend) | ||
142 | alldata = bb.parse.handle(f.name, self.d) | ||
143 | d1 = alldata[''] | ||
144 | d2 = alldata[cls.name] | ||
145 | self.assertEqual(d1.getVar("VAR_var", True), "B") | ||
146 | self.assertEqual(d2.getVar("VAR_var", True), None) | ||
147 | |||