blob: 05fc4e390b28a89088a66597401086a45db8bab1 [file] [log] [blame]
#
# Copyright OpenEmbedded Contributors
#
# SPDX-License-Identifier: MIT
#
import json
import os
from oeqa.selftest.case import OESelftestTestCase
from oeqa.utils.commands import bitbake, get_bb_var, runCmd
class SPDXCheck(OESelftestTestCase):
@classmethod
def setUpClass(cls):
super(SPDXCheck, cls).setUpClass()
bitbake("python3-spdx-tools-native")
bitbake("-c addto_recipe_sysroot python3-spdx-tools-native")
def check_recipe_spdx(self, high_level_dir, spdx_file, target_name):
config = """
INHERIT += "create-spdx"
"""
self.write_config(config)
deploy_dir = get_bb_var("DEPLOY_DIR")
machine_var = get_bb_var("MACHINE")
# qemux86-64 creates the directory qemux86_64
machine_dir = machine_var.replace("-", "_")
full_file_path = os.path.join(deploy_dir, "spdx", machine_dir, high_level_dir, spdx_file)
try:
os.remove(full_file_path)
except FileNotFoundError:
pass
bitbake("%s -c create_spdx" % target_name)
def check_spdx_json(filename):
with open(filename) as f:
report = json.load(f)
self.assertNotEqual(report, None)
self.assertNotEqual(report["SPDXID"], None)
python = os.path.join(get_bb_var('STAGING_BINDIR', 'python3-spdx-tools-native'), 'nativepython3')
validator = os.path.join(get_bb_var('STAGING_BINDIR', 'python3-spdx-tools-native'), 'pyspdxtools')
result = runCmd("{} {} -i {}".format(python, validator, filename))
self.assertExists(full_file_path)
result = check_spdx_json(full_file_path)
def test_spdx_base_files(self):
self.check_recipe_spdx("packages", "base-files.spdx.json", "base-files")