Skip to content

Commit 5d1f75c

Browse files
authored
Add support for more fields in ScanCode.io scan results to package #255 (#319)
Signed-off-by: tdruez <[email protected]>
1 parent 65b6449 commit 5d1f75c

File tree

5 files changed

+62
-18
lines changed

5 files changed

+62
-18
lines changed

CHANGELOG.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ Release notes
1919
When a Product is locked through his status, its inventory cannot be modified.
2020
https://github.com/aboutcode-org/dejacode/issues/189
2121

22+
- Add support for the following fields in ScanCode.io scan results to package:
23+
download_url, repository_download_url, repository_homepage_url, bug_tracking_url,
24+
code_view_url, vcs_url, api_data_url, size, md5, sha1, sha256, sha512.
25+
https://github.com/aboutcode-org/dejacode/issues/255
26+
2227
### Version 5.3.0
2328

2429
- Rename ProductDependency is_resolved to is_pinned.

component_catalog/forms.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,10 +490,22 @@ class Meta:
490490
"copyright",
491491
"primary_language",
492492
"description",
493+
"download_url",
494+
"repository_download_url",
493495
"homepage_url",
496+
"repository_homepage_url",
497+
"bug_tracking_url",
498+
"code_view_url",
499+
"vcs_url",
500+
"api_data_url",
501+
"size",
494502
"release_date",
495503
"notice_text",
496504
"dependencies",
505+
"md5",
506+
"sha1",
507+
"sha256",
508+
"sha512",
497509
]
498510
widgets = {
499511
"copyright": forms.Textarea(attrs={"rows": 2}),

component_catalog/tests/test_scancodeio.py

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,12 @@ def test_scancodeio_update_from_scan(self, mock_fetch_scan_data, mock_get_projec
202202
"primary_language",
203203
"other_license_expression",
204204
"description",
205+
"repository_download_url",
205206
"homepage_url",
207+
"repository_homepage_url",
208+
"bug_tracking_url",
209+
"vcs_url",
210+
"api_data_url",
206211
"keywords",
207212
"copyright",
208213
]
@@ -227,9 +232,11 @@ def test_scancodeio_update_from_scan(self, mock_fetch_scan_data, mock_get_projec
227232
self.assertEqual(self.super_user, self.package1.last_modified_by)
228233
history_entry = History.objects.get_for_object(self.package1).get()
229234
expected = (
230-
"Automatically updated license_expression, declared_license_expression, holder, "
231-
"primary_language, other_license_expression, description, homepage_url, "
232-
"keywords, copyright from scan results"
235+
"Automatically updated license_expression, declared_license_expression, "
236+
"holder, primary_language, other_license_expression, description, "
237+
"repository_download_url, homepage_url, repository_homepage_url, "
238+
"bug_tracking_url, vcs_url, api_data_url, keywords, copyright from scan "
239+
"results"
233240
)
234241
self.assertEqual(expected, history_entry.change_message)
235242

@@ -262,25 +269,32 @@ def test_scancodeio_map_detected_package_data(self):
262269
"Development Status :: 5 - Production/Stable",
263270
"Operating System :: OS Independent",
264271
],
272+
"homepage_url": "https://www.djangoproject.com/",
273+
"repository_homepage_url": "https://www.djangoproject.com/",
274+
"bug_tracking_url": "https://code.djangoproject.com/",
275+
"code_view_url": "https://github.com/django/django",
276+
"vcs_url": "https://github.com/django/django.git",
277+
"download_url": "https://www.djangoproject.com/file.zip",
278+
"repository_download_url": "https://www.djangoproject.com/file.zip",
279+
"copyright": "Copyright",
280+
"notice_text": "Notice",
281+
"api_data_url": "https://www.djangoproject.com/api/data",
265282
# skipped, no values
266283
"description": "",
267284
# skipped, not a SCAN_PACKAGE_FIELD
268285
"is_key_file": 1,
269286
}
270287

271-
expected = {
272-
"package_url": "pkg:maven/aopalliance/[email protected]",
273-
"purl": "pkg:maven/aopalliance/[email protected]",
274-
"license_expression": "mit",
275-
"declared_license_expression": "mit",
276-
"other_license_expression": "apache-2.0",
277-
"primary_language": "Java",
278-
"keywords": [
279-
"json",
280-
"Development Status :: 5 - Production/Stable",
281-
"Operating System :: OS Independent",
282-
],
283-
}
288+
expected = detected_package.copy()
289+
expected["package_url"] = "pkg:maven/aopalliance/[email protected]"
290+
# Licenses are simplified
291+
expected["license_expression"] = "mit"
292+
expected["declared_license_expression"] = "mit"
293+
expected["other_license_expression"] = "apache-2.0"
294+
# Skipped
295+
del expected["description"]
296+
del expected["is_key_file"]
297+
284298
mapped_data = ScanCodeIO.map_detected_package_data(detected_package)
285299
self.assertEqual(expected, mapped_data)
286300

component_catalog/tests/test_views.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2649,7 +2649,8 @@ def test_package_details_view_scan_to_package(self, mock_fetch_scan_info, mock_f
26492649
messages = list(response.context["messages"])
26502650
expected = (
26512651
"Values for package_url, license_expression, copyright, primary_language, "
2652-
"description, homepage_url, release_date, notice_text assigned to the package."
2652+
"description, download_url, homepage_url, release_date, notice_text "
2653+
"assigned to the package."
26532654
)
26542655
self.assertEqual(expected, str(messages[0]))
26552656

@@ -2665,7 +2666,7 @@ def test_package_details_view_scan_to_package(self, mock_fetch_scan_info, mock_f
26652666
history = History.objects.get_for_object(self.package1, action_flag=History.CHANGE).get()
26662667
expected = (
26672668
"Changed Package URL, Concluded license expression, Copyright, Primary language, "
2668-
"Description, Homepage URL, Release date and Notice text."
2669+
"Description, Download URL, Homepage URL, Release date and Notice text."
26692670
)
26702671
self.assertEqual(expected, history.get_change_message())
26712672

dejacode_toolkit/scancodeio.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,10 +300,22 @@ def scan_data_as_zip(self, project_uuid, filename):
300300
("Holder", "holder"),
301301
("Description", "description"),
302302
("Primary language", "primary_language"),
303+
("Download URL", "download_url"),
304+
("Repository download URL", "repository_download_url"),
303305
("Homepage URL", "homepage_url"),
306+
("Repository homepage URL", "repository_homepage_url"),
307+
("Bug tracking URL", "bug_tracking_url"),
308+
("Code view URL", "code_view_url"),
309+
("VCS URL", "vcs_url"),
310+
("API data URL", "api_data_url"),
311+
("Size", "size"),
304312
("Keywords", "keywords"),
305313
("Release date", "release_date"),
306314
("Notice text", "notice_text"),
315+
("MD5", "md5"),
316+
("SHA1", "sha1"),
317+
("SHA256", "sha256"),
318+
("SHA512", "sha512"),
307319
# ('Dependencies', 'dependencies'),
308320
]
309321

0 commit comments

Comments
 (0)