diff --git a/src/packagedcode/debian.py b/src/packagedcode/debian.py index e49ade1c232..c6dd5420b1a 100644 --- a/src/packagedcode/debian.py +++ b/src/packagedcode/debian.py @@ -127,7 +127,7 @@ def assign_package_to_resources(cls, package, resource, codebase, package_adder) class DebianControlFileInExtractedDebHandler(models.DatafileHandler): datasource_id = 'debian_control_extracted_deb' default_package_type = 'deb' - path_patterns = ('*/control.tar.gz-extract/control',) + path_patterns = ('*/control.tar.gz-extract/control','*/control.tar.xz-extract/control') description = 'Debian control file - extracted layout' documentation_url = 'https://www.debian.org/doc/debian-policy/ch-controlfields.html' @@ -590,7 +590,7 @@ def parse_debian_files_list(location, datasource_id, package_type): else: name = None # For DebianMd5sumFilelistInPackageHandler we cannot infer name - if not name == "md5sums": + if not filename == "md5sums": name = filename file_references = [] @@ -663,6 +663,19 @@ def build_package_data(debian_data, datasource_id, package_type='deb', distro=No party = models.Party(role='maintainer', name=maintainer_name, email=maintainer_email) parties.append(party) + uploaders = debian_data.get('uploaders') + if uploaders: + for uploader in uploaders.split(", "): + uploader_name, uploader_email = parse_debian_maintainers(uploader) + party = models.Party(role='uploader', name=uploader_name, email=uploader_email) + parties.append(party) + + vcs_url = debian_data.get('vcs-git') + if vcs_url and ' ' in vcs_url: + vcs_url = vcs_url.split(' ')[0] + + code_view_url = debian_data.get('vcs-browser') + keywords = [] keyword = debian_data.get('section') if keyword: @@ -712,6 +725,8 @@ def build_package_data(debian_data, datasource_id, package_type='deb', distro=No qualifiers=qualifiers, description=description, homepage_url=homepage_url, + vcs_url=vcs_url, + code_view_url=code_view_url, size=size, source_packages=source_packages, keywords=keywords, diff --git a/tests/packagedcode/data/debian/control.expected.json b/tests/packagedcode/data/debian/control.expected.json index df08c8f5d94..67658e73462 100644 --- a/tests/packagedcode/data/debian/control.expected.json +++ b/tests/packagedcode/data/debian/control.expected.json @@ -140,6 +140,13 @@ "name": "Bdale Garbee", "email": "bdale@gag.com", "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Carl Worth", + "email": "cworth@cworth.org", + "url": null } ], "keywords": [ @@ -153,8 +160,8 @@ "sha256": null, "sha512": null, "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, + "code_view_url": "https://salsa.debian.org/debian/gzip", + "vcs_url": "https://salsa.debian.org/debian/gzip.git", "copyright": null, "holder": null, "declared_license_expression": null, diff --git a/tests/packagedcode/data/debian/dsc_files/adduser_3.118+deb11u1.dsc.expected.json b/tests/packagedcode/data/debian/dsc_files/adduser_3.118+deb11u1.dsc.expected.json index 14a9dde0b06..f7e46b817d0 100644 --- a/tests/packagedcode/data/debian/dsc_files/adduser_3.118+deb11u1.dsc.expected.json +++ b/tests/packagedcode/data/debian/dsc_files/adduser_3.118+deb11u1.dsc.expected.json @@ -19,6 +19,13 @@ "name": "Debian Adduser Developers", "email": "adduser@packages.debian.org", "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Marc Haber", + "email": "mh+debian-packages@zugschlus.de", + "url": null } ], "keywords": [], @@ -30,8 +37,8 @@ "sha256": null, "sha512": null, "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, + "code_view_url": "https://salsa.debian.org/debian/adduser", + "vcs_url": "https://salsa.debian.org/debian/adduser.git", "copyright": null, "holder": null, "declared_license_expression": null, @@ -84,6 +91,13 @@ "name": "Debian Adduser Developers", "email": "adduser@packages.debian.org", "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Marc Haber", + "email": "mh+debian-packages@zugschlus.de", + "url": null } ], "keywords": [], @@ -95,8 +109,8 @@ "sha256": null, "sha512": null, "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, + "code_view_url": "https://salsa.debian.org/debian/adduser", + "vcs_url": "https://salsa.debian.org/debian/adduser.git", "copyright": null, "holder": null, "declared_license_expression": null, diff --git a/tests/packagedcode/data/debian/dsc_files/zsh_5.7.1-1+deb10u1.dsc b/tests/packagedcode/data/debian/dsc_files/zsh_5.7.1-1+deb10u1.dsc new file mode 100644 index 00000000000..f9f3dcb339f --- /dev/null +++ b/tests/packagedcode/data/debian/dsc_files/zsh_5.7.1-1+deb10u1.dsc @@ -0,0 +1,49 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +Format: 3.0 (quilt) +Source: zsh +Binary: zsh-common, zsh, zsh-doc, zsh-static, zsh-dev +Architecture: any all +Version: 5.7.1-1+deb10u1 +Maintainer: Debian Zsh Maintainers +Uploaders: Michael Prokop , Axel Beckert , Frank Terbeck , Richard Hartmann +Homepage: https://www.zsh.org/ +Standards-Version: 4.3.0 +Vcs-Browser: https://salsa.debian.org/debian/zsh +Vcs-Git: https://salsa.debian.org/debian/zsh.git -b debian +Testsuite: autopkgtest +Testsuite-Triggers: adequate +Build-Depends: bsdmainutils, cm-super-minimal, debhelper-compat (= 12), dpkg-dev (>= 1.16.2~), ghostscript, groff, groff-base, libcap-dev [linux-any], libncursesw5-dev, libpcre3-dev, texinfo (>= 5~), texlive-fonts-recommended, texlive-latex-base, texlive-latex-recommended, yodl (>= 3.08.01) | yodl (<< 3.08.00) +Package-List: + zsh deb shells optional arch=any + zsh-common deb shells optional arch=all + zsh-dev deb libdevel optional arch=any + zsh-doc deb doc optional arch=all + zsh-static deb shells optional arch=any +Checksums-Sha1: + b2fd47fdb878aa681edc974864e37baae9b0d6b7 2776796 zsh_5.7.1.orig.tar.xz + 14a8d38d3fae5b8eec0b124be5c943a60c4e8fec 87028 zsh_5.7.1-1+deb10u1.debian.tar.xz +Checksums-Sha256: + 439aafb4341522c307a67a2680e95fadb1b35a5c7f332089b9cc5154496570ca 2776796 zsh_5.7.1.orig.tar.xz + ecbe22ed6a2b8dcaf10eff02b6b66583ce8d108a936624fc424c72188dea1ddd 87028 zsh_5.7.1-1+deb10u1.debian.tar.xz +Files: + acc1a32ef5b3120ead5c6f0d011ceb76 2776796 zsh_5.7.1.orig.tar.xz + d0f5fe26d9548331d9757e26b95c7aaf 87028 zsh_5.7.1-1+deb10u1.debian.tar.xz + +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCgAdFiEERoyJeTtCmBnp12Ema+Zjx1o1yXUFAmIMYK4ACgkQa+Zjx1o1 +yXWTgw//SzaiMwbl8gSiQ/mB7+KPCeqL0o44q8oVAbj0WWhlh6yVUdjIcoHk6Zr3 +Om4b3C5pU1l64jQ/JH5GP4i/7NnHAttobDL5zh9yvXAjUkUSfhBB6mJPeKT2QlHY +3SsvWiwtZOU8hPdwW48ATFiSSiYka+hKEM5nr5f/kI++yg2Rg7d1b5svaD3BMytI +Hl25comMwLgPeL4aIB7j8UL0sQT2zb/O5CK4aZr3CPUxy9OzBAwpQuukNNsJJ3Zg +g+a6Y6ADLAdhkav1JeZIF6LQ4Q9sk4Cqkp+CFenvRtDv2BDdosOXwOnBUBlm1A2j +yPuOcPdgSDqctMohSWVehDqGZK8dPjIOVq/sX3yKzwtNWdil9aErjGWxQVRSMyfg +fqEaCHYdpRpfrE8QWk+7TqovRqv3PaAmY6wahEAd5buniRScDF2yobT95qDOMnfj +fR1YDDH0cRkePHt+VHQUzM1mO4c/5Obhxfd8uExR+8KpO4SnsT8z7wa1J1O+jWGg +88zuhJ2HUCDGHdVlpgksagnNkmbT1Oohml6YfTAtDO4eXXJeTPmSpOYNzRCMsN0D +V1tY+awJuR0VSNjo+3X7DKyC/pKJiCzk+MBVogmFvzfBwJhYiLbVnVElNic/2J2J +Rz6VMPKIYqKUTyIgsQML0IkK8D9Lpp1LHqLNbUVt2aWcYlqgPBU= +=cPZC +-----END PGP SIGNATURE----- \ No newline at end of file diff --git a/tests/packagedcode/data/debian/dsc_files/zsh_5.7.1-1+deb10u1.dsc.expected.json b/tests/packagedcode/data/debian/dsc_files/zsh_5.7.1-1+deb10u1.dsc.expected.json new file mode 100644 index 00000000000..4989d1b753a --- /dev/null +++ b/tests/packagedcode/data/debian/dsc_files/zsh_5.7.1-1+deb10u1.dsc.expected.json @@ -0,0 +1,185 @@ +{ + "packages": [ + { + "type": "deb", + "namespace": "debian", + "name": "zsh", + "version": "5.7.1-1+deb10u1", + "qualifiers": { + "arch": "any all" + }, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [ + { + "type": null, + "role": "maintainer", + "name": "Debian Zsh Maintainers", + "email": "pkg-zsh-devel@lists.alioth.debian.org", + "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Michael Prokop", + "email": "mika@debian.org", + "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Axel Beckert", + "email": "abe@debian.org", + "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Frank Terbeck", + "email": "ft@bewatermyfriend.org", + "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Richard Hartmann", + "email": "richih@debian.org", + "url": null + } + ], + "keywords": [], + "homepage_url": "https://www.zsh.org/", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": "https://salsa.debian.org/debian/zsh", + "vcs_url": "https://salsa.debian.org/debian/zsh.git", + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [ + "pkg:deb/debian/zsh" + ], + "extra_data": {}, + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "package_uid": "pkg:deb/debian/zsh@5.7.1-1%2Bdeb10u1?arch=any%20all&uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_paths": [ + "zsh_5.7.1-1+deb10u1.dsc" + ], + "datasource_ids": [ + "debian_source_control_dsc" + ], + "purl": "pkg:deb/debian/zsh@5.7.1-1%2Bdeb10u1?arch=any%20all" + } + ], + "dependencies": [], + "files": [ + { + "path": "zsh_5.7.1-1+deb10u1.dsc", + "type": "file", + "package_data": [ + { + "type": "deb", + "namespace": "debian", + "name": "zsh", + "version": "5.7.1-1+deb10u1", + "qualifiers": { + "arch": "any all" + }, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [ + { + "type": null, + "role": "maintainer", + "name": "Debian Zsh Maintainers", + "email": "pkg-zsh-devel@lists.alioth.debian.org", + "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Michael Prokop", + "email": "mika@debian.org", + "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Axel Beckert", + "email": "abe@debian.org", + "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Frank Terbeck", + "email": "ft@bewatermyfriend.org", + "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Richard Hartmann", + "email": "richih@debian.org", + "url": null + } + ], + "keywords": [], + "homepage_url": "https://www.zsh.org/", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": "https://salsa.debian.org/debian/zsh", + "vcs_url": "https://salsa.debian.org/debian/zsh.git", + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [ + "pkg:deb/debian/zsh" + ], + "file_references": [], + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "debian_source_control_dsc", + "purl": "pkg:deb/debian/zsh@5.7.1-1%2Bdeb10u1?arch=any%20all" + } + ], + "for_packages": [ + "pkg:deb/debian/zsh@5.7.1-1%2Bdeb10u1?arch=any%20all&uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/data/debian/files-md5sums/python-tenacity-doc.json b/tests/packagedcode/data/debian/files-md5sums/python-tenacity-doc.json new file mode 100644 index 00000000000..bd13f0386ad --- /dev/null +++ b/tests/packagedcode/data/debian/files-md5sums/python-tenacity-doc.json @@ -0,0 +1,424 @@ +{ + "packages": [ + { + "type": "deb", + "namespace": "debian", + "name": "python-tenacity-doc", + "version": "8.2.1-1", + "qualifiers": { + "arch": "all" + }, + "subpath": null, + "primary_language": null, + "description": "retry code until it succeeeds - doc\n Tenacity is a general-purpose retrying library to simplify the task of adding\n retry behavior to just about anything. It originates from a fork of Retrying.\n .\n Features:\n * Generic Decorator API\n * Specify stop condition (i.e. limit by number of attempts)\n * Specify wait condition (i.e. exponential backoff sleeping between attempts)\n * Customize retrying on Exceptions\n * Customize retrying on expected returned result\n .\n This package contains the documentation.", + "release_date": null, + "parties": [ + { + "type": null, + "role": "maintainer", + "name": "Debian Python Team", + "email": "team+python@tracker.debian.org", + "url": null + } + ], + "keywords": [ + "doc" + ], + "homepage_url": "https://github.com/jd/tenacity", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [ + "pkg:deb/debian/python-tenacity" + ], + "extra_data": { + "multi_arch": "foreign" + }, + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "package_uid": "pkg:deb/debian/python-tenacity-doc@8.2.1-1?arch=all&uuid=fixed-uid-done-for-testing-5642512d1758", + "datafile_paths": [ + "python-tenacity-doc/control.tar.xz-extract/control" + ], + "datasource_ids": [ + "debian_control_extracted_deb" + ], + "purl": "pkg:deb/debian/python-tenacity-doc@8.2.1-1?arch=all" + } + ], + "dependencies": [], + "files": [ + { + "path": "python-tenacity-doc", + "type": "directory", + "package_data": [], + "for_packages": [ + "pkg:deb/debian/python-tenacity-doc@8.2.1-1?arch=all&uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "python-tenacity-doc/control.tar.xz-extract", + "type": "directory", + "package_data": [], + "for_packages": [ + "pkg:deb/debian/python-tenacity-doc@8.2.1-1?arch=all&uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "python-tenacity-doc/control.tar.xz-extract/control", + "type": "file", + "package_data": [ + { + "type": "deb", + "namespace": "debian", + "name": "python-tenacity-doc", + "version": "8.2.1-1", + "qualifiers": { + "arch": "all" + }, + "subpath": null, + "primary_language": null, + "description": "retry code until it succeeeds - doc\n Tenacity is a general-purpose retrying library to simplify the task of adding\n retry behavior to just about anything. It originates from a fork of Retrying.\n .\n Features:\n * Generic Decorator API\n * Specify stop condition (i.e. limit by number of attempts)\n * Specify wait condition (i.e. exponential backoff sleeping between attempts)\n * Customize retrying on Exceptions\n * Customize retrying on expected returned result\n .\n This package contains the documentation.", + "release_date": null, + "parties": [ + { + "type": null, + "role": "maintainer", + "name": "Debian Python Team", + "email": "team+python@tracker.debian.org", + "url": null + } + ], + "keywords": [ + "doc" + ], + "homepage_url": "https://github.com/jd/tenacity", + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [ + "pkg:deb/debian/python-tenacity" + ], + "file_references": [], + "extra_data": { + "multi_arch": "foreign" + }, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "debian_control_extracted_deb", + "purl": "pkg:deb/debian/python-tenacity-doc@8.2.1-1?arch=all" + } + ], + "for_packages": [ + "pkg:deb/debian/python-tenacity-doc@8.2.1-1?arch=all&uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + }, + { + "path": "python-tenacity-doc/control.tar.xz-extract/md5sums", + "type": "file", + "package_data": [ + { + "type": "deb", + "namespace": null, + "name": null, + "version": null, + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [ + { + "path": "usr/share/doc-base/python-tenacity-doc.python-tenacity-doc", + "size": 0, + "sha1": null, + "md5": "94a76e8f536ddd647f1f7964987b32c0", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/changelog.Debian.gz", + "size": 0, + "sha1": null, + "md5": "68f71133503a76e52982b85d513d1136", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/changelog.gz", + "size": 0, + "sha1": null, + "md5": "183520b240797f3a649d98b7bb7be4e3", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/copyright", + "size": 0, + "sha1": null, + "md5": "ea5910f6f4196cc6ae8283511861ef2f", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_sources/api.rst.txt", + "size": 0, + "sha1": null, + "md5": "e8075284b8f70407416a1c1e05a6fdd2", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_sources/changelog.rst.txt", + "size": 0, + "sha1": null, + "md5": "743cea20a6b9c7bfd7a700b9dcbc5929", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_sources/index.rst.txt", + "size": 0, + "sha1": null, + "md5": "e46c2bcdbc79d117d61056a6c675a31c", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_static/alabaster.css", + "size": 0, + "sha1": null, + "md5": "4fc9d553e40384beedf38e21f205d2a7", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_static/basic.css", + "size": 0, + "sha1": null, + "md5": "23ffe661f835b08e157d492a86aae74d", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_static/custom.css", + "size": 0, + "sha1": null, + "md5": "dad0c9b31e59069c83018ce87594ed65", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_static/documentation_options.js", + "size": 0, + "sha1": null, + "md5": "e67b9e9b5788f18ade1fc41136b20c4c", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_static/file.png", + "size": 0, + "sha1": null, + "md5": "ba0c95766a77a6c598a7ca542f1db738", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_static/forkme_right_darkblue_121621.png", + "size": 0, + "sha1": null, + "md5": "5b6b3233153feca50a94aa6c60873a5f", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_static/minus.png", + "size": 0, + "sha1": null, + "md5": "36b1a4b05451c7acde7ced60b2f6bc21", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_static/plus.png", + "size": 0, + "sha1": null, + "md5": "0d7849fd4d4148b7f78cab60a087633a", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/_static/pygments.css", + "size": 0, + "sha1": null, + "md5": "4f81be1c1dd97a6ec76af15b8f926189", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/api.html", + "size": 0, + "sha1": null, + "md5": "9efe10054f499c0ada4c075a5fd7e63e", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/changelog.html.gz", + "size": 0, + "sha1": null, + "md5": "20c0cdca61e878f68105cf4a624ec55a", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/genindex.html", + "size": 0, + "sha1": null, + "md5": "2bbfe92b8b331100854c85a66d7b2992", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/index.html", + "size": 0, + "sha1": null, + "md5": "c6f4c086c870857ac7024f4eb078daa5", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/objects.inv", + "size": 0, + "sha1": null, + "md5": "f9ccc673686dc0ae4a40ca3efe962100", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/py-modindex.html", + "size": 0, + "sha1": null, + "md5": "1336b99369dc413651a3dcd86d689d9d", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/search.html", + "size": 0, + "sha1": null, + "md5": "388beed723ed2d5b32f4022e40e5fe5f", + "sha256": null, + "sha512": null, + "extra_data": {} + }, + { + "path": "usr/share/doc/python-tenacity-doc/html/searchindex.js", + "size": 0, + "sha1": null, + "md5": "f8a5d3d0e517ea312453a9670d66faba", + "sha256": null, + "sha512": null, + "extra_data": {} + } + ], + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": null, + "repository_download_url": null, + "api_data_url": null, + "datasource_id": "debian_md5sums_in_extracted_deb", + "purl": null + } + ], + "for_packages": [ + "pkg:deb/debian/python-tenacity-doc@8.2.1-1?arch=all&uuid=fixed-uid-done-for-testing-5642512d1758" + ], + "scan_errors": [] + } + ] +} \ No newline at end of file diff --git a/tests/packagedcode/data/debian/files-md5sums/python-tenacity-doc/control.tar.xz-extract/control b/tests/packagedcode/data/debian/files-md5sums/python-tenacity-doc/control.tar.xz-extract/control new file mode 100644 index 00000000000..2fd6892f918 --- /dev/null +++ b/tests/packagedcode/data/debian/files-md5sums/python-tenacity-doc/control.tar.xz-extract/control @@ -0,0 +1,23 @@ +Package: python-tenacity-doc +Source: python-tenacity +Version: 8.2.1-1 +Architecture: all +Maintainer: Debian Python Team +Installed-Size: 287 +Depends: libjs-sphinxdoc (>= 5.2) +Section: doc +Priority: optional +Multi-Arch: foreign +Homepage: https://github.com/jd/tenacity +Description: retry code until it succeeeds - doc + Tenacity is a general-purpose retrying library to simplify the task of adding + retry behavior to just about anything. It originates from a fork of Retrying. + . + Features: + * Generic Decorator API + * Specify stop condition (i.e. limit by number of attempts) + * Specify wait condition (i.e. exponential backoff sleeping between attempts) + * Customize retrying on Exceptions + * Customize retrying on expected returned result + . + This package contains the documentation. diff --git a/tests/packagedcode/data/debian/files-md5sums/python-tenacity-doc/control.tar.xz-extract/md5sums b/tests/packagedcode/data/debian/files-md5sums/python-tenacity-doc/control.tar.xz-extract/md5sums new file mode 100644 index 00000000000..0df5e85dbd0 --- /dev/null +++ b/tests/packagedcode/data/debian/files-md5sums/python-tenacity-doc/control.tar.xz-extract/md5sums @@ -0,0 +1,24 @@ +94a76e8f536ddd647f1f7964987b32c0 usr/share/doc-base/python-tenacity-doc.python-tenacity-doc +68f71133503a76e52982b85d513d1136 usr/share/doc/python-tenacity-doc/changelog.Debian.gz +183520b240797f3a649d98b7bb7be4e3 usr/share/doc/python-tenacity-doc/changelog.gz +ea5910f6f4196cc6ae8283511861ef2f usr/share/doc/python-tenacity-doc/copyright +e8075284b8f70407416a1c1e05a6fdd2 usr/share/doc/python-tenacity-doc/html/_sources/api.rst.txt +743cea20a6b9c7bfd7a700b9dcbc5929 usr/share/doc/python-tenacity-doc/html/_sources/changelog.rst.txt +e46c2bcdbc79d117d61056a6c675a31c usr/share/doc/python-tenacity-doc/html/_sources/index.rst.txt +4fc9d553e40384beedf38e21f205d2a7 usr/share/doc/python-tenacity-doc/html/_static/alabaster.css +23ffe661f835b08e157d492a86aae74d usr/share/doc/python-tenacity-doc/html/_static/basic.css +dad0c9b31e59069c83018ce87594ed65 usr/share/doc/python-tenacity-doc/html/_static/custom.css +e67b9e9b5788f18ade1fc41136b20c4c usr/share/doc/python-tenacity-doc/html/_static/documentation_options.js +ba0c95766a77a6c598a7ca542f1db738 usr/share/doc/python-tenacity-doc/html/_static/file.png +5b6b3233153feca50a94aa6c60873a5f usr/share/doc/python-tenacity-doc/html/_static/forkme_right_darkblue_121621.png +36b1a4b05451c7acde7ced60b2f6bc21 usr/share/doc/python-tenacity-doc/html/_static/minus.png +0d7849fd4d4148b7f78cab60a087633a usr/share/doc/python-tenacity-doc/html/_static/plus.png +4f81be1c1dd97a6ec76af15b8f926189 usr/share/doc/python-tenacity-doc/html/_static/pygments.css +9efe10054f499c0ada4c075a5fd7e63e usr/share/doc/python-tenacity-doc/html/api.html +20c0cdca61e878f68105cf4a624ec55a usr/share/doc/python-tenacity-doc/html/changelog.html.gz +2bbfe92b8b331100854c85a66d7b2992 usr/share/doc/python-tenacity-doc/html/genindex.html +c6f4c086c870857ac7024f4eb078daa5 usr/share/doc/python-tenacity-doc/html/index.html +f9ccc673686dc0ae4a40ca3efe962100 usr/share/doc/python-tenacity-doc/html/objects.inv +1336b99369dc413651a3dcd86d689d9d usr/share/doc/python-tenacity-doc/html/py-modindex.html +388beed723ed2d5b32f4022e40e5fe5f usr/share/doc/python-tenacity-doc/html/search.html +f8a5d3d0e517ea312453a9670d66faba usr/share/doc/python-tenacity-doc/html/searchindex.js diff --git a/tests/packagedcode/data/license_detection/reference-to-package/fusiondirectory.expected.json b/tests/packagedcode/data/license_detection/reference-to-package/fusiondirectory.expected.json index 5482c462cef..5e314a3307a 100644 --- a/tests/packagedcode/data/license_detection/reference-to-package/fusiondirectory.expected.json +++ b/tests/packagedcode/data/license_detection/reference-to-package/fusiondirectory.expected.json @@ -5913,6 +5913,13 @@ "name": "FusionDirectory Packagers", "email": "team+fusiondirectory@tracker.debian.org", "url": null + }, + { + "type": null, + "role": "uploader", + "name": "Benoit Mortier ,\n Mike Gabriel", + "email": "sunweaver@debian.org>,", + "url": null } ], "keywords": [ @@ -5926,8 +5933,8 @@ "sha256": null, "sha512": null, "bug_tracking_url": null, - "code_view_url": null, - "vcs_url": null, + "code_view_url": "https://salsa.debian.org/debian/fusiondirectory/", + "vcs_url": "https://salsa.debian.org/debian/fusiondirectory.git", "copyright": null, "holder": null, "declared_license_expression": "gpl-2.0-plus AND free-unknown AND bsd-new AND lgpl-3.0-plus AND public-domain AND mit AND bsd-original AND (gpl-2.0-plus AND gpl-3.0-plus AND lgpl-2.1-plus AND lgpl-3.0-plus AND bsd-new AND bsd-original AND mit AND public-domain AND other-permissive) AND bsd-simplified", diff --git a/tests/packagedcode/data/plugin/help.txt b/tests/packagedcode/data/plugin/help.txt index fe29236a39c..839a91fcefc 100755 --- a/tests/packagedcode/data/plugin/help.txt +++ b/tests/packagedcode/data/plugin/help.txt @@ -242,7 +242,7 @@ Package type: deb documentation URL: https://www.debian.org/doc/debian-policy/ch-controlfields.html primary language: None description: Debian control file - extracted layout - path_patterns: '*/control.tar.gz-extract/control' + path_patterns: '*/control.tar.gz-extract/control', '*/control.tar.xz-extract/control' -------------------------------------------- Package type: deb datasource_id: debian_control_in_source diff --git a/tests/packagedcode/test_debian.py b/tests/packagedcode/test_debian.py index d185a5c8c53..e5a924d31cb 100644 --- a/tests/packagedcode/test_debian.py +++ b/tests/packagedcode/test_debian.py @@ -113,6 +113,13 @@ def test_parse_control_file_basic(self): run_scan_click(['--package', test_dir, '--json-pp', result_file]) check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) + def test_debian_control_and_md5sums_file(self): + test_dir = self.get_test_loc('debian/files-md5sums/python-tenacity-doc') + expected_file = self.get_test_loc('debian/files-md5sums/python-tenacity-doc.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', '--system-package', test_dir, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) + def test_parse_dsc_file_basic(self): test_dir = self.get_test_loc('debian/dsc_files/adduser_3.118+deb11u1.dsc') expected_file = self.get_test_loc('debian/dsc_files/adduser_3.118+deb11u1.dsc.expected.json') @@ -120,6 +127,12 @@ def test_parse_dsc_file_basic(self): run_scan_click(['--package', test_dir, '--json-pp', result_file]) check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) + def test_parse_dsc_file_vcs_with_extra_info(self): + test_dir = self.get_test_loc('debian/dsc_files/zsh_5.7.1-1+deb10u1.dsc') + expected_file = self.get_test_loc('debian/dsc_files/zsh_5.7.1-1+deb10u1.dsc.expected.json') + result_file = self.get_temp_file('results.json') + run_scan_click(['--package', test_dir, '--json-pp', result_file]) + check_json_scan(expected_file, result_file, regen=REGEN_TEST_FIXTURES) class TestDebianGetListOfInstalledFiles(PackageTester):