@@ -19,32 +19,28 @@ class TestMetadata(base.Metadata):
if not self.added:
self.skip('No added recipes, skipping test')
- # TODO: this is a workaround so we can parse the recipe not
- # containing the LICENSE var: add some default license instead
- # of INVALID into auto.conf, then remove this line at the end
+ # workaround: set a default license so tinfoil can parse recipes
+ # that don't have LICENSE set yet
auto_conf = os.path.join(os.environ.get('BUILDDIR'), 'conf', 'auto.conf')
open_flag = 'w'
if os.path.exists(auto_conf):
open_flag = 'a'
with open(auto_conf, open_flag) as fd:
- for pn in self.added:
+ for path in self.added:
fd.write('LICENSE ??= "%s"\n' % patchtest_patterns.invalid_license)
no_license = False
- for pn in self.added:
- rd = self.tinfoil.parse_recipe(pn)
- license = rd.getVar(patchtest_patterns.metadata_lic)
- if license == patchtest_patterns.invalid_license:
+ for path in self.added:
+ license = self._getvar(path, patchtest_patterns.metadata_lic)
+ if not license or license == patchtest_patterns.invalid_license:
no_license = True
break
- # remove auto.conf line or the file itself
if open_flag == 'w':
os.remove(auto_conf)
else:
- fd = open(auto_conf, 'r')
- lines = fd.readlines()
- fd.close()
+ with open(auto_conf, 'r') as fd:
+ lines = fd.readlines()
with open(auto_conf, 'w') as fd:
fd.write(''.join(lines[:-1]))
@@ -55,14 +51,13 @@ class TestMetadata(base.Metadata):
if not self.added:
self.skip('No added recipes, skipping test')
- for pn in self.added:
- rd = self.tinfoil.parse_recipe(pn)
- pathname = rd.getVar('FILE')
+ for path in self.added:
+ pathname = self._getvar(path, 'FILE') or path
# we are not interested in images
if '/images/' in pathname:
continue
- lic_files_chksum = rd.getVar(patchtest_patterns.metadata_chksum)
- if rd.getVar(patchtest_patterns.license_var) == patchtest_patterns.closed:
+ lic_files_chksum = self._getvar(path, patchtest_patterns.metadata_chksum)
+ if self._getvar(path, patchtest_patterns.license_var) == patchtest_patterns.closed:
continue
if not lic_files_chksum:
self.fail(
@@ -108,13 +103,13 @@ class TestMetadata(base.Metadata):
)
def _collect_src_uri(self, key_prefix):
- for pn in self.modified:
- if 'core-image' in pn:
+ for path in self.modified:
+ if 'core-image' in os.path.basename(path):
continue
- rd = self.tinfoil.parse_recipe(pn)
+ src_uri = self._getvar(path, patchtest_patterns.metadata_src_uri)
PatchTestDataStore[
- "%s-%s-%s" % (key_prefix, patchtest_patterns.metadata_src_uri, pn)
- ] = rd.getVar(patchtest_patterns.metadata_src_uri)
+ "%s-%s-%s" % (key_prefix, patchtest_patterns.metadata_src_uri, path)
+ ] = src_uri or ''
def pretest_src_uri_left_files(self):
if not PatchtestParser.repo.canbemerged():
@@ -130,12 +125,12 @@ class TestMetadata(base.Metadata):
self.skip('No modified recipes, skipping test')
self._collect_src_uri(self.shortid())
- for pn in self.modified:
+ for path in self.modified:
pretest_src_uri = PatchTestDataStore[
- "pre%s-%s-%s" % (self.shortid(), patchtest_patterns.metadata_src_uri, pn)
+ "pre%s-%s-%s" % (self.shortid(), patchtest_patterns.metadata_src_uri, path)
].split()
test_src_uri = PatchTestDataStore[
- "%s-%s-%s" % (self.shortid(), patchtest_patterns.metadata_src_uri, pn)
+ "%s-%s-%s" % (self.shortid(), patchtest_patterns.metadata_src_uri, path)
].split()
pretest_files = set([os.path.basename(patch.split(';')[0]) for patch in pretest_src_uri if patch.startswith('file://')])
@@ -154,7 +149,7 @@ class TestMetadata(base.Metadata):
filesremoved_from_usr_uri = pretest_files - test_files
# finally, get those patches removed at SRC_URI and not removed from the patchset
- # TODO: we are not taking into account renames, so test may raise false positives
+ # TODO: we are not taking into account renames, so test may raise false positives
not_removed = filesremoved_from_usr_uri - filesremoved_from_patchset
if not_removed:
self.fail('Patches not removed from tree. Remove them and amend the submitted mbox',
@@ -164,15 +159,15 @@ class TestMetadata(base.Metadata):
if not self.added:
self.skip('No added recipes, skipping test')
- for pn in self.added:
+ for path in self.added:
+ pn = os.path.basename(path).split('_')[0]
# we are not interested in images
if 'core-image' in pn:
continue
- rd = self.tinfoil.parse_recipe(pn)
- summary = rd.getVar(patchtest_patterns.metadata_summary)
+ summary = self._getvar(path, patchtest_patterns.metadata_summary)
# "${PN} version ${PN}-${PR}" is the default, so fail if default
- if summary.startswith("%s version" % pn):
+ if not summary or summary.startswith("%s version" % pn):
self.fail(
"%s is missing in newly added recipe" % patchtest_patterns.metadata_summary
)
@@ -186,12 +181,11 @@ class TestMetadata(base.Metadata):
or PatchtestParser.repo.patch.branch == "dunfell"
):
self.skip("No modified recipes or older target branch, skipping test")
- for pn in self.modified:
+ for path in self.modified:
# we are not interested in images
- if 'core-image' in pn:
+ if 'core-image' in os.path.basename(path):
continue
- rd = self.tinfoil.parse_recipe(pn)
- cve_check_ignore = rd.getVar(patchtest_patterns.cve_check_ignore_var)
+ cve_check_ignore = self._getvar(path, patchtest_patterns.cve_check_ignore_var)
if cve_check_ignore is not None:
self.fail(
- Use the new _getvar() version - Replace usage of "pn" as a variable with the more explicit "path" - Fix some vague comments and typos AI-Generated: Uses Claude Code Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> --- meta/lib/patchtest/tests/test_metadata.py | 62 ++++++++++------------- 1 file changed, 28 insertions(+), 34 deletions(-)