Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions scanpipe/pipes/benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,18 @@ def get_expected_purls(project):
return sorted(set(expected_purls))


def get_unique_project_purls(project):
"""
Return the sorted list of unique Package URLs (PURLs) discovered in the project.

Extracts the ``purl`` field from all discovered packages, removes duplicates,
and sorts the result to provide a deterministic list of project PURLs.
"""
project_packages = project.discoveredpackages.only_package_url_fields()
sorted_unique_purls = sorted({package.purl for package in project_packages})
return sorted_unique_purls


def compare_purls(project, expected_purls):
"""
Compare discovered project PURLs against the expected PURLs.
Expand All @@ -57,10 +69,10 @@ def compare_purls(project, expected_purls):
- Lines starting with '-' are missing from the project.
- Lines starting with '+' are unexpected in the project.
"""
project_packages = project.discoveredpackages.only_package_url_fields()
sorted_unique_purls = sorted({package.purl for package in project_packages})
sorted_project_purls = get_unique_project_purls(project)
print(sorted_project_purls)

diff_result = difflib.ndiff(sorted_unique_purls, expected_purls)
diff_result = difflib.ndiff(sorted_project_purls, expected_purls)

# Keep only lines that are diffs (- or +)
filtered_diff = [line for line in diff_result if line.startswith(("-", "+"))]
Expand Down
Loading