summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/tests/parse.py
diff options
context:
space:
mode:
authorPeter Kjellerstedt <peter.kjellerstedt@axis.com>2025-09-16 23:19:30 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-09-24 00:01:44 +0100
commitc948feaae41356f4c7c1611b6a9ab3a9569c6884 (patch)
tree33ff329464b56d23d3f90baf9475ff48803f5c92 /bitbake/lib/bb/tests/parse.py
parente90bc48bdaa2234cad52bbb2800f5246c277ffbd (diff)
downloadpoky-c948feaae41356f4c7c1611b6a9ab3a9569c6884.tar.gz
bitbake: tests/parse: Use with statement to avoid ResourceWarning
(Bitbake rev: 46a5e31713fc526a1807b1617fba8a01c1564641) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/tests/parse.py')
-rw-r--r--bitbake/lib/bb/tests/parse.py95
1 files changed, 44 insertions, 51 deletions
diff --git a/bitbake/lib/bb/tests/parse.py b/bitbake/lib/bb/tests/parse.py
index e3cba67ad4..b272739f56 100644
--- a/bitbake/lib/bb/tests/parse.py
+++ b/bitbake/lib/bb/tests/parse.py
@@ -39,7 +39,6 @@ C = "3"
39 os.chdir(self.origdir) 39 os.chdir(self.origdir)
40 40
41 def parsehelper(self, content, suffix = ".bb"): 41 def parsehelper(self, content, suffix = ".bb"):
42
43 f = tempfile.NamedTemporaryFile(suffix = suffix) 42 f = tempfile.NamedTemporaryFile(suffix = suffix)
44 f.write(bytes(content, "utf-8")) 43 f.write(bytes(content, "utf-8"))
45 f.flush() 44 f.flush()
@@ -47,17 +46,17 @@ C = "3"
47 return f 46 return f
48 47
49 def test_parse_simple(self): 48 def test_parse_simple(self):
50 f = self.parsehelper(self.testfile) 49 with self.parsehelper(self.testfile) as f:
51 d = bb.parse.handle(f.name, self.d)[''] 50 d = bb.parse.handle(f.name, self.d)['']
52 self.assertEqual(d.getVar("A"), "1") 51 self.assertEqual(d.getVar("A"), "1")
53 self.assertEqual(d.getVar("B"), "2") 52 self.assertEqual(d.getVar("B"), "2")
54 self.assertEqual(d.getVar("C"), "3") 53 self.assertEqual(d.getVar("C"), "3")
55 54
56 def test_parse_incomplete_function(self): 55 def test_parse_incomplete_function(self):
57 testfileB = self.testfile.replace("}", "") 56 testfileB = self.testfile.replace("}", "")
58 f = self.parsehelper(testfileB) 57 with self.parsehelper(testfileB) as f:
59 with self.assertRaises(bb.parse.ParseError): 58 with self.assertRaises(bb.parse.ParseError):
60 d = bb.parse.handle(f.name, self.d)[''] 59 d = bb.parse.handle(f.name, self.d)['']
61 60
62 unsettest = """ 61 unsettest = """
63A = "1" 62A = "1"
@@ -69,8 +68,8 @@ unset B[flag]
69""" 68"""
70 69
71 def test_parse_unset(self): 70 def test_parse_unset(self):
72 f = self.parsehelper(self.unsettest) 71 with self.parsehelper(self.unsettest) as f:
73 d = bb.parse.handle(f.name, self.d)[''] 72 d = bb.parse.handle(f.name, self.d)['']
74 self.assertEqual(d.getVar("A"), None) 73 self.assertEqual(d.getVar("A"), None)
75 self.assertEqual(d.getVarFlag("A","flag"), None) 74 self.assertEqual(d.getVarFlag("A","flag"), None)
76 self.assertEqual(d.getVar("B"), "2") 75 self.assertEqual(d.getVar("B"), "2")
@@ -113,8 +112,8 @@ A[flag_default_twice] ??= "default flag first"
113A[flag_default_twice] ??= "default flag second" 112A[flag_default_twice] ??= "default flag second"
114""" 113"""
115 def test_parse_defaulttest(self): 114 def test_parse_defaulttest(self):
116 f = self.parsehelper(self.defaulttest) 115 with self.parsehelper(self.defaulttest) as f:
117 d = bb.parse.handle(f.name, self.d)[''] 116 d = bb.parse.handle(f.name, self.d)['']
118 self.assertEqual(d.getVar("A"), "set value") 117 self.assertEqual(d.getVar("A"), "set value")
119 self.assertEqual(d.getVarFlag("A","flag_set_vs_question"), "set flag") 118 self.assertEqual(d.getVarFlag("A","flag_set_vs_question"), "set flag")
120 self.assertEqual(d.getVarFlag("A","flag_set_vs_default"), "set flag") 119 self.assertEqual(d.getVarFlag("A","flag_set_vs_default"), "set flag")
@@ -136,8 +135,8 @@ exportD = "d"
136""" 135"""
137 136
138 def test_parse_exports(self): 137 def test_parse_exports(self):
139 f = self.parsehelper(self.exporttest) 138 with self.parsehelper(self.exporttest) as f:
140 d = bb.parse.handle(f.name, self.d)[''] 139 d = bb.parse.handle(f.name, self.d)['']
141 self.assertEqual(d.getVar("A"), "a") 140 self.assertEqual(d.getVar("A"), "a")
142 self.assertIsNone(d.getVarFlag("A", "export")) 141 self.assertIsNone(d.getVarFlag("A", "export"))
143 self.assertEqual(d.getVar("B"), "b") 142 self.assertEqual(d.getVar("B"), "b")
@@ -149,7 +148,6 @@ exportD = "d"
149 self.assertEqual(d.getVar("exportD"), "d") 148 self.assertEqual(d.getVar("exportD"), "d")
150 self.assertIsNone(d.getVarFlag("exportD", "export")) 149 self.assertIsNone(d.getVarFlag("exportD", "export"))
151 150
152
153 overridetest = """ 151 overridetest = """
154RRECOMMENDS:${PN} = "a" 152RRECOMMENDS:${PN} = "a"
155RRECOMMENDS:${PN}:libc = "b" 153RRECOMMENDS:${PN}:libc = "b"
@@ -158,8 +156,8 @@ PN = "gtk+"
158""" 156"""
159 157
160 def test_parse_overrides(self): 158 def test_parse_overrides(self):
161 f = self.parsehelper(self.overridetest) 159 with self.parsehelper(self.overridetest) as f:
162 d = bb.parse.handle(f.name, self.d)[''] 160 d = bb.parse.handle(f.name, self.d)['']
163 self.assertEqual(d.getVar("RRECOMMENDS"), "b") 161 self.assertEqual(d.getVar("RRECOMMENDS"), "b")
164 bb.data.expandKeys(d) 162 bb.data.expandKeys(d)
165 self.assertEqual(d.getVar("RRECOMMENDS"), "b") 163 self.assertEqual(d.getVar("RRECOMMENDS"), "b")
@@ -173,8 +171,8 @@ EXTRA_OECONF:append = " c"
173""" 171"""
174 172
175 def test_parse_overrides2(self): 173 def test_parse_overrides2(self):
176 f = self.parsehelper(self.overridetest2) 174 with self.parsehelper(self.overridetest2) as f:
177 d = bb.parse.handle(f.name, self.d)[''] 175 d = bb.parse.handle(f.name, self.d)['']
178 d.appendVar("EXTRA_OECONF", " d") 176 d.appendVar("EXTRA_OECONF", " d")
179 d.setVar("OVERRIDES", "class-target") 177 d.setVar("OVERRIDES", "class-target")
180 self.assertEqual(d.getVar("EXTRA_OECONF"), "b c d") 178 self.assertEqual(d.getVar("EXTRA_OECONF"), "b c d")
@@ -186,8 +184,8 @@ PN = "bc"
186""" 184"""
187 185
188 def test_parse_combinations(self): 186 def test_parse_combinations(self):
189 f = self.parsehelper(self.overridetest3) 187 with self.parsehelper(self.overridetest3) as f:
190 d = bb.parse.handle(f.name, self.d)[''] 188 d = bb.parse.handle(f.name, self.d)['']
191 bb.data.expandKeys(d) 189 bb.data.expandKeys(d)
192 self.assertEqual(d.getVar("DESCRIPTION:bc-dev"), "A B") 190 self.assertEqual(d.getVar("DESCRIPTION:bc-dev"), "A B")
193 d.setVar("DESCRIPTION", "E") 191 d.setVar("DESCRIPTION", "E")
@@ -195,7 +193,6 @@ PN = "bc"
195 d.setVar("OVERRIDES", "bc-dev") 193 d.setVar("OVERRIDES", "bc-dev")
196 self.assertEqual(d.getVar("DESCRIPTION"), "C D") 194 self.assertEqual(d.getVar("DESCRIPTION"), "C D")
197 195
198
199 classextend = """ 196 classextend = """
200VAR_var:override1 = "B" 197VAR_var:override1 = "B"
201EXTRA = ":override1" 198EXTRA = ":override1"
@@ -218,15 +215,15 @@ python () {
218 # 215 #
219 def test_parse_classextend_contamination(self): 216 def test_parse_classextend_contamination(self):
220 self.d.setVar("__bbclasstype", "recipe") 217 self.d.setVar("__bbclasstype", "recipe")
221 cls = self.parsehelper(self.classextend_bbclass, suffix=".bbclass") 218 with self.parsehelper(self.classextend_bbclass, suffix=".bbclass") as cls:
222 #clsname = os.path.basename(cls.name).replace(".bbclass", "") 219 #clsname = os.path.basename(cls.name).replace(".bbclass", "")
223 self.classextend = self.classextend.replace("###CLASS###", cls.name) 220 self.classextend = self.classextend.replace("###CLASS###", cls.name)
224 f = self.parsehelper(self.classextend) 221 with self.parsehelper(self.classextend) as f:
225 alldata = bb.parse.handle(f.name, self.d) 222 alldata = bb.parse.handle(f.name, self.d)
226 d1 = alldata[''] 223 d1 = alldata['']
227 d2 = alldata[cls.name] 224 d2 = alldata[cls.name]
228 self.assertEqual(d1.getVar("VAR_var"), "B") 225 self.assertEqual(d1.getVar("VAR_var"), "B")
229 self.assertEqual(d2.getVar("VAR_var"), None) 226 self.assertEqual(d2.getVar("VAR_var"), None)
230 227
231 addtask_deltask = """ 228 addtask_deltask = """
232addtask do_patch after do_foo after do_unpack before do_configure before do_compile 229addtask do_patch after do_foo after do_unpack before do_configure before do_compile
@@ -250,10 +247,8 @@ deltask do_fetch ${MYVAR} ${EMPTYVAR}
250deltask ${EMPTYVAR} 247deltask ${EMPTYVAR}
251""" 248"""
252 def test_parse_addtask_deltask(self): 249 def test_parse_addtask_deltask(self):
253 250 with self.parsehelper(self.addtask_deltask) as f:
254 f = self.parsehelper(self.addtask_deltask) 251 d = bb.parse.handle(f.name, self.d)['']
255 d = bb.parse.handle(f.name, self.d)['']
256
257 self.assertSequenceEqual(['do_fetch2', 'do_patch2', 'do_myplaintask', 'do_mytask', 'do_mytask2', 'do_mytask5'], bb.build.listtasks(d)) 252 self.assertSequenceEqual(['do_fetch2', 'do_patch2', 'do_myplaintask', 'do_mytask', 'do_mytask2', 'do_mytask5'], bb.build.listtasks(d))
258 self.assertEqual(['do_mytask'], d.getVarFlag("do_mytask5", "deps")) 253 self.assertEqual(['do_mytask'], d.getVarFlag("do_mytask5", "deps"))
259 254
@@ -263,10 +258,9 @@ deltask ${EMPTYVAR}
263 258
264""" 259"""
265 def test_parse_broken_multiline_comment(self): 260 def test_parse_broken_multiline_comment(self):
266 f = self.parsehelper(self.broken_multiline_comment) 261 with self.parsehelper(self.broken_multiline_comment) as f:
267 with self.assertRaises(bb.BBHandledException): 262 with self.assertRaises(bb.BBHandledException):
268 d = bb.parse.handle(f.name, self.d)[''] 263 d = bb.parse.handle(f.name, self.d)['']
269
270 264
271 comment_in_var = """ 265 comment_in_var = """
272VAR = " \\ 266VAR = " \\
@@ -276,10 +270,9 @@ VAR = " \\
276" 270"
277""" 271"""
278 def test_parse_comment_in_var(self): 272 def test_parse_comment_in_var(self):
279 f = self.parsehelper(self.comment_in_var) 273 with self.parsehelper(self.comment_in_var) as f:
280 with self.assertRaises(bb.BBHandledException): 274 with self.assertRaises(bb.BBHandledException):
281 d = bb.parse.handle(f.name, self.d)[''] 275 d = bb.parse.handle(f.name, self.d)['']
282
283 276
284 at_sign_in_var_flag = """ 277 at_sign_in_var_flag = """
285A[flag@.service] = "nonet" 278A[flag@.service] = "nonet"
@@ -289,8 +282,8 @@ C[f] = "flag"
289unset A[flag@.service] 282unset A[flag@.service]
290""" 283"""
291 def test_parse_at_sign_in_var_flag(self): 284 def test_parse_at_sign_in_var_flag(self):
292 f = self.parsehelper(self.at_sign_in_var_flag) 285 with self.parsehelper(self.at_sign_in_var_flag) as f:
293 d = bb.parse.handle(f.name, self.d)[''] 286 d = bb.parse.handle(f.name, self.d)['']
294 self.assertEqual(d.getVar("A"), None) 287 self.assertEqual(d.getVar("A"), None)
295 self.assertEqual(d.getVar("B"), None) 288 self.assertEqual(d.getVar("B"), None)
296 self.assertEqual(d.getVarFlag("A","flag@.service"), None) 289 self.assertEqual(d.getVarFlag("A","flag@.service"), None)
@@ -299,9 +292,9 @@ unset A[flag@.service]
299 292
300 def test_parse_invalid_at_sign_in_var_flag(self): 293 def test_parse_invalid_at_sign_in_var_flag(self):
301 invalid_at_sign = self.at_sign_in_var_flag.replace("B[f", "B[@f") 294 invalid_at_sign = self.at_sign_in_var_flag.replace("B[f", "B[@f")
302 f = self.parsehelper(invalid_at_sign) 295 with self.parsehelper(invalid_at_sign) as f:
303 with self.assertRaises(bb.parse.ParseError): 296 with self.assertRaises(bb.parse.ParseError):
304 d = bb.parse.handle(f.name, self.d)[''] 297 d = bb.parse.handle(f.name, self.d)['']
305 298
306 export_function_recipe = """ 299 export_function_recipe = """
307inherit someclass 300inherit someclass
@@ -453,13 +446,13 @@ A+ = "b"
453+= "d" 446+= "d"
454""" 447"""
455 def test_parse_special_character_assignment(self): 448 def test_parse_special_character_assignment(self):
456 f = self.parsehelper(self.special_character_assignment) 449 with self.parsehelper(self.special_character_assignment) as f:
457 d = bb.parse.handle(f.name, self.d)[''] 450 d = bb.parse.handle(f.name, self.d)['']
458 self.assertEqual(d.getVar("A"), " a") 451 self.assertEqual(d.getVar("A"), " a")
459 self.assertEqual(d.getVar("A+"), "b") 452 self.assertEqual(d.getVar("A+"), "b")
460 self.assertEqual(d.getVar("+"), "c") 453 self.assertEqual(d.getVar("+"), "c")
461 454
462 f = self.parsehelper(self.ambigous_assignment) 455 with self.parsehelper(self.ambigous_assignment) as f:
463 with self.assertRaises(bb.parse.ParseError) as error: 456 with self.assertRaises(bb.parse.ParseError) as error:
464 bb.parse.handle(f.name, self.d) 457 bb.parse.handle(f.name, self.d)
465 self.assertIn("Empty variable name in assignment", str(error.exception)) 458 self.assertIn("Empty variable name in assignment", str(error.exception))