From fd06e4f2664b69a2776cdc8188dba6e6e958d86a Mon Sep 17 00:00:00 2001 From: Trevor Gamblin Date: Thu, 12 Oct 2023 09:24:59 -0400 Subject: patchtest: clean up test suite Various tweaks to make the test suite cleaner and more efficient: - Replace use of "re" module with "pyparsing" in tests (but not base.py) - Make test_mbox_cve only check for CVE tags in the commit if the added patch has them - Make test_mbox_cve SKIP instead of PASS if there's no CVE tag - Simplify the bugzilla tag checking test now that pyparsing is used - Modify the selftest script to correctly parse the new result output (From OE-Core rev: 7a187c2475aa762e2bc830950f608143f2535a72) Signed-off-by: Trevor Gamblin Signed-off-by: Richard Purdie --- meta/lib/patchtest/tests/test_mbox_cve.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'meta/lib/patchtest/tests/test_mbox_cve.py') diff --git a/meta/lib/patchtest/tests/test_mbox_cve.py b/meta/lib/patchtest/tests/test_mbox_cve.py index 36548aa10c..af3712c192 100644 --- a/meta/lib/patchtest/tests/test_mbox_cve.py +++ b/meta/lib/patchtest/tests/test_mbox_cve.py @@ -20,12 +20,13 @@ import base import os import parse_cve_tags -import re +import pyparsing class CVE(base.Base): - revert_shortlog_regex = re.compile('Revert\s+".*"') + revert_shortlog_regex = pyparsing.Regex('Revert\s+".*"') prog = parse_cve_tags.cve_tag + patch_prog = parse_cve_tags.patch_cve_tag def setUp(self): if self.unidiff_parse_error: @@ -34,15 +35,17 @@ class CVE(base.Base): # we are just interested in series that introduce CVE patches, thus discard other # possibilities: modification to current CVEs, patch directly introduced into the # recipe, upgrades already including the CVE, etc. - new_cves = [p for p in self.patchset if p.path.endswith('.patch') and p.is_added_file] - if not new_cves: - self.skip('No new CVE patches introduced') + new_patches = [p for p in self.patchset if p.path.endswith('.patch') and p.is_added_file] + if not new_patches: + self.skip('No new patches introduced') def test_cve_presence_in_commit_message(self): for commit in CVE.commits: # skip those patches that revert older commits, these do not required the tag presence - if self.revert_shortlog_regex.match(commit.shortlog): + if self.revert_shortlog_regex.search_string(commit.shortlog): continue - if not self.prog.search_string(commit.payload): + if not self.patch_prog.search_string(commit.payload): + self.skip("No CVE tag in added patch, so not needed in mbox") + elif not self.prog.search_string(commit.payload): self.fail('Missing or incorrectly formatted CVE tag in mbox. Correct or include the CVE tag in the mbox with format: "CVE: CVE-YYYY-XXXX"', commit=commit) -- cgit v1.2.3-54-g00ecf