# Checks related to the patch's LIC_FILES_CHKSUM metadata variable # # Copyright (C) 2016 Intel Corporation # # SPDX-License-Identifier: GPL-2.0 import base import os from data import PatchTestInput class License(base.Metadata): metadata = 'LICENSE' invalid_license = 'PATCHTESTINVALID' 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 test_license_presence(self): 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 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: fd.write('LICENSE ??= "%s"\n' % self.invalid_license) no_license = False for pn in self.added: rd = self.tinfoil.parse_recipe(pn) license = rd.getVar(self.metadata) if license == self.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, 'w') as fd: fd.write(''.join(lines[:-1])) if no_license: self.fail('Recipe does not have the LICENSE field set', 'Include a LICENSE into the new recipe')