mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-05 05:04:44 +02:00

Replace full license headers with SPDX identifiers and adjust all patchtest-related code to use GPL-2.0-only. (From OE-Core rev: 9bea6b39074296bb8d8719a3300636e316f19d1b) Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
75 lines
2.9 KiB
Python
75 lines
2.9 KiB
Python
# Checks related to the patch's SRC_URI metadata variable
|
|
#
|
|
# Copyright (C) 2016 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
import subprocess
|
|
import base
|
|
import os
|
|
import pyparsing
|
|
from data import PatchTestInput, PatchTestDataStore
|
|
|
|
class SrcUri(base.Metadata):
|
|
|
|
metadata = 'SRC_URI'
|
|
md5sum = 'md5sum'
|
|
sha256sum = 'sha256sum'
|
|
git_regex = pyparsing.Regex('^git\:\/\/.*')
|
|
|
|
def setUp(self):
|
|
# these tests just make sense on patches that can be merged
|
|
if not PatchTestInput.repo.canbemerged:
|
|
self.skip('Patch cannot be merged')
|
|
|
|
def pretest_src_uri_left_files(self):
|
|
if not self.modified:
|
|
self.skip('No modified recipes, skipping pretest')
|
|
|
|
# get the proper metadata values
|
|
for pn in self.modified:
|
|
# we are not interested in images
|
|
if 'core-image' in pn:
|
|
continue
|
|
rd = self.tinfoil.parse_recipe(pn)
|
|
PatchTestDataStore['%s-%s-%s' % (self.shortid(), self.metadata, pn)] = rd.getVar(self.metadata)
|
|
|
|
def test_src_uri_left_files(self):
|
|
if not self.modified:
|
|
self.skip('No modified recipes, skipping pretest')
|
|
|
|
# get the proper metadata values
|
|
for pn in self.modified:
|
|
# we are not interested in images
|
|
if 'core-image' in pn:
|
|
continue
|
|
rd = self.tinfoil.parse_recipe(pn)
|
|
PatchTestDataStore['%s-%s-%s' % (self.shortid(), self.metadata, pn)] = rd.getVar(self.metadata)
|
|
|
|
for pn in self.modified:
|
|
pretest_src_uri = PatchTestDataStore['pre%s-%s-%s' % (self.shortid(), self.metadata, pn)].split()
|
|
test_src_uri = PatchTestDataStore['%s-%s-%s' % (self.shortid(), self.metadata, pn)].split()
|
|
|
|
pretest_files = set([os.path.basename(patch) for patch in pretest_src_uri if patch.startswith('file://')])
|
|
test_files = set([os.path.basename(patch) for patch in test_src_uri if patch.startswith('file://')])
|
|
|
|
# check if files were removed
|
|
if len(test_files) < len(pretest_files):
|
|
|
|
# get removals from patchset
|
|
filesremoved_from_patchset = set()
|
|
for patch in self.patchset:
|
|
if patch.is_removed_file:
|
|
filesremoved_from_patchset.add(os.path.basename(patch.path))
|
|
|
|
# get the deleted files from the SRC_URI
|
|
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
|
|
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',
|
|
data=[('Patch', f) for f in not_removed])
|
|
|