1*880bae5fSLuis Augenstein# SPDX-License-Identifier: GPL-2.0-only OR MIT 2*880bae5fSLuis Augenstein# Copyright (C) 2025 TNG Technology Consulting GmbH 3*880bae5fSLuis Augenstein 4*880bae5fSLuis Augensteinimport unittest 5*880bae5fSLuis Augensteinfrom pathlib import Path 6*880bae5fSLuis Augensteinimport tempfile 7*880bae5fSLuis Augensteinfrom sbom.spdx_graph.kernel_file import _parse_spdx_license_identifier # type: ignore 8*880bae5fSLuis Augenstein 9*880bae5fSLuis Augenstein 10*880bae5fSLuis Augensteinclass TestKernelFile(unittest.TestCase): 11*880bae5fSLuis Augenstein def setUp(self): 12*880bae5fSLuis Augenstein self.tmpdir = tempfile.TemporaryDirectory() 13*880bae5fSLuis Augenstein self.src_tree = Path(self.tmpdir.name) 14*880bae5fSLuis Augenstein 15*880bae5fSLuis Augenstein def tearDown(self): 16*880bae5fSLuis Augenstein self.tmpdir.cleanup() 17*880bae5fSLuis Augenstein 18*880bae5fSLuis Augenstein def test_parse_spdx_license_identifier(self): 19*880bae5fSLuis Augenstein # REUSE-IgnoreStart 20*880bae5fSLuis Augenstein test_cases: list[tuple[str, str | None]] = [ 21*880bae5fSLuis Augenstein ("/* SPDX-License-Identifier: MIT*/", "MIT"), 22*880bae5fSLuis Augenstein ("// SPDX-License-Identifier: GPL-2.0-only", "GPL-2.0-only"), 23*880bae5fSLuis Augenstein ("# SPDX-License-Identifier: GPL-2.0-only", "GPL-2.0-only"), 24*880bae5fSLuis Augenstein ("#!/bin/bash\n# SPDX-License-Identifier: GPL-2.0-only", "GPL-2.0-only"), 25*880bae5fSLuis Augenstein ("/* SPDX-License-Identifier: GPL-2.0-or-later OR MIT */", "GPL-2.0-or-later OR MIT"), 26*880bae5fSLuis Augenstein ("/* SPDX-License-Identifier: Apache-2.0 */\n extra text", "Apache-2.0"), 27*880bae5fSLuis Augenstein ("<!-- SPDX-License-Identifier: GPL-2.0 -->", "GPL-2.0"), 28*880bae5fSLuis Augenstein ("int main() { return 0; }", None), 29*880bae5fSLuis Augenstein ] 30*880bae5fSLuis Augenstein # REUSE-IgnoreEnd 31*880bae5fSLuis Augenstein 32*880bae5fSLuis Augenstein for i, (file_content, expected_identifier) in enumerate(test_cases): 33*880bae5fSLuis Augenstein file_path = self.src_tree / f"file_{i}.c" 34*880bae5fSLuis Augenstein file_path.write_text(file_content) 35*880bae5fSLuis Augenstein self.assertEqual(_parse_spdx_license_identifier(str(file_path)), expected_identifier) 36