Skip to content

Commit 2dacc42

Browse files
authored
Merge pull request #778 from armintaenzertng/issue-774-unhashable-type
[issue-774] fix tag-value output when related_spdx_element_id is "NONE" or "NOASSERTION"
2 parents e0c83cd + 045b904 commit 2dacc42

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

src/spdx_tools/spdx/writer/tagvalue/tagvalue_writer_helper_functions.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ def scan_relationships(
8383
files_by_spdx_id = {file.spdx_id: file for file in files}
8484
packages_spdx_ids = [package.spdx_id for package in packages]
8585
for relationship in relationships:
86-
if (
86+
if relationship.related_spdx_element_id in [SpdxNoAssertion(), SpdxNone()]:
87+
relationships_to_write.append(relationship)
88+
elif (
8789
relationship.relationship_type == RelationshipType.CONTAINS
8890
and relationship.spdx_element_id in packages_spdx_ids
8991
and relationship.related_spdx_element_id in files_by_spdx_id.keys()

tests/spdx/writer/tagvalue/test_tagvalue_writer_helper_functions.py

+16-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import pytest
77

8-
from spdx_tools.spdx.model import ActorType, RelationshipType, SpdxNoAssertion
8+
from spdx_tools.spdx.model import ActorType, RelationshipType, SpdxNoAssertion, SpdxNone
99
from spdx_tools.spdx.writer.tagvalue.tagvalue_writer_helper_functions import scan_relationships, write_actor
1010
from tests.spdx.fixtures import actor_fixture, file_fixture, package_fixture, relationship_fixture
1111

@@ -16,6 +16,18 @@ def test_scan_relationships():
1616
packages = [package_fixture(spdx_id=first_package_spdx_id), package_fixture(spdx_id=second_package_spdx_id)]
1717
file_spdx_id = "SPDXRef-File"
1818
files = [file_fixture(spdx_id=file_spdx_id)]
19+
no_assertion_relationship = relationship_fixture(
20+
spdx_element_id=second_package_spdx_id,
21+
relationship_type=RelationshipType.CONTAINS,
22+
related_spdx_element_id=SpdxNoAssertion(),
23+
comment=None,
24+
)
25+
none_relationship = relationship_fixture(
26+
spdx_element_id=second_package_spdx_id,
27+
relationship_type=RelationshipType.CONTAINS,
28+
related_spdx_element_id=SpdxNone(),
29+
comment=None,
30+
)
1931
relationships = [
2032
relationship_fixture(
2133
spdx_element_id=first_package_spdx_id,
@@ -29,11 +41,13 @@ def test_scan_relationships():
2941
related_spdx_element_id=file_spdx_id,
3042
comment=None,
3143
),
44+
no_assertion_relationship,
45+
none_relationship,
3246
]
3347

3448
relationships_to_write, contained_files_by_package_id = scan_relationships(relationships, packages, files)
3549

36-
assert relationships_to_write == []
50+
assert relationships_to_write == [no_assertion_relationship, none_relationship]
3751
assert contained_files_by_package_id == {first_package_spdx_id: files, second_package_spdx_id: files}
3852

3953

0 commit comments

Comments
 (0)