8000 [issue-466] bug fix and add test · spdx/tools-python@5538af9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5538af9

Browse files
committed
[issue-466] bug fix and add test
check against RelationshipType to let package information precede contained file information Signed-off-by: Meret Behrens <meret.behrens@tngtech.com>
1 parent 788e8d4 commit 5538af9

File tree

2 files changed

+42
-9
lines changed

2 files changed

+42
-9
lines changed

src/spdx/writer/tagvalue/tagvalue_writer_helper_functions.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from spdx.model.file import File
1515
from license_expression import LicenseExpression
1616
from spdx.model.package import Package
17-
from spdx.model.relationship import Relationship
17+
from spdx.model.relationship import Relationship, RelationshipType
1818
from spdx.model.snippet import Snippet
1919
from spdx.model.spdx_no_assertion import SpdxNoAssertion
2020
from spdx.model.spdx_none import SpdxNone
@@ -81,19 +81,19 @@ def scan_relationships(relationships: List[Relationship], packages: List[Package
8181
files_by_spdx_id = {file.spdx_id: file for file in files}
8282
packages_spdx_ids = [package.spdx_id for package in packages]
8383
for relationship in relationships:
84-
if relationship.relationship_type == "CONTAINS" and \
84+
if relationship.relationship_type == RelationshipType.CONTAINS and \
8585
relationship.spdx_element_id in packages_spdx_ids and \
86-
relationship.related_spdx_element in files_by_spdx_id.keys():
86+
relationship.related_spdx_element_id in files_by_spdx_id.keys():
8787
contained_files_by_package_id.setdefault(relationship.spdx_element_id, []).append(
88-
files_by_spdx_id[relationship.related_spdx_element])
89-
if relationship.has_comment:
88+
files_by_spdx_id[relationship.related_spdx_element_id])
89+
if relationship.comment:
9090
relationships_to_write.append(relationship)
91-
elif relationship.relationship_type == "CONTAINED_BY" and \
92-
relationship.related_spdx_element in packages_spdx_ids and \
91+
elif relationship.relationship_type == RelationshipType.CONTAINED_BY and \
92+
relationship.related_spdx_element_id in packages_spdx_ids and \
9393
relationship.spdx_element_id in files_by_spdx_id:
94-
contained_files_by_package_id.setdefault(relationship.related_spdx_element, []).append(
94+
contained_files_by_package_id.setdefault(relationship.related_spdx_element_id, []).append(
9595
files_by_spdx_id[relationship.spdx_element_id])
96-
if relationship.has_comment:
96+
if relationship.comment:
9797
relationships_to_write.append(relationship)
9898
else:
9999
relationships_to_write.append(relationship)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Copyright (c) 2023 spdx contributors
2+
# Licensed under the Apache License, Version 2.0 (the "License");
3+
# you may not use this file except in compliance with the License.
4+
# You may obtain a copy of the License at
5+
# http://www.apache.org/licenses/LICENSE-2.0
6+
# Unless required by applicable law or agreed to in writing, software
7+
# distributed under the License is distributed on an "AS IS" BASIS,
8+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9+
# See the License for the specific language governing permissions and
10+
# limitations under the License.
11+
from spdx.model.relationship import RelationshipType
12+
from spdx.writer.tagvalue.tagvalue_writer_helper_functions import scan_relationships
13+
from tests.spdx.fixtures import package_fixture, file_fixture, relationship_fixture
14+
15+
16+
def test_scan_relationships():
17+
first_package_spdx_id = "SPDXRef-Package1"
18+
second_package_spdx_id = "SPDXRef-Package2"
19+
packages = [package_fixture(spdx_id=first_package_spdx_id), package_fixture(spdx_id=second_package_spdx_id)]
20+
file_spdx_id = "SPDXRef-File"
21+
files = [file_fixture(spdx_id=file_spdx_id)]
22+
relationships = [
23+
relationship_fixture(spdx_element_id=first_package_spdx_id, relationship_type=RelationshipType.CONTAINS,
24+
related_spdx_element_id=file_spdx_id, comment=None),
25+
relationship_fixture(spdx_element_id=second_package_spdx_id, relationship_type=RelationshipType.CONTAINS,
26+
related_spdx_element_id=file_spdx_id, comment=None)
27+
]
28+
29+
relationships_to_write, contained_files_by_package_id = scan_relationships(relationships, packages, files)
30+
31+
assert relationships_to_write == []
32+
assert contained_files_by_package_id == {first_package_spdx_id: files,
33+
second_package_spdx_id: files}

0 commit comments

Comments
 (0)
0