| # Checks related to the patch's signed-off-by lines |
| # |
| # Copyright (C) 2016 Intel Corporation |
| # |
| # SPDX-License-Identifier: GPL-2.0 |
| |
| import base |
| import parse_signed_off_by |
| import re |
| |
| class PatchSignedOffBy(base.Base): |
| |
| @classmethod |
| def setUpClassLocal(cls): |
| cls.newpatches = [] |
| # get just those relevant patches: new software patches |
| for patch in cls.patchset: |
| if patch.path.endswith('.patch') and patch.is_added_file: |
| cls.newpatches.append(patch) |
| |
| cls.mark = str(parse_signed_off_by.signed_off_by_mark).strip('"') |
| |
| # match PatchSignedOffBy.mark with '+' preceding it |
| cls.prog = parse_signed_off_by.patch_signed_off_by |
| |
| def setUp(self): |
| if self.unidiff_parse_error: |
| self.skip('Parse error %s' % self.unidiff_parse_error) |
| |
| def test_signed_off_by_presence(self): |
| if not PatchSignedOffBy.newpatches: |
| self.skip("There are no new software patches, no reason to test %s presence" % PatchSignedOffBy.mark) |
| |
| for newpatch in PatchSignedOffBy.newpatches: |
| payload = newpatch.__str__() |
| for line in payload.splitlines(): |
| if self.patchmetadata_regex.match(line): |
| continue |
| if PatchSignedOffBy.prog.search_string(payload): |
| break |
| else: |
| self.fail('A patch file has been added, but does not have a Signed-off-by tag', |
| 'Sign off the added patch file (%s)' % newpatch.path) |