Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/package/debian/tests/test_debian.py
Show First 20 Lines • Show All 276 Lines • ▼ Show 20 Lines | assert actual_author == Person( | ||||
name=b"Someone Name", | name=b"Someone Name", | ||||
email=b"someone@orga.org", | email=b"someone@orga.org", | ||||
fullname=b"Someone Name <someone@orga.org>", | fullname=b"Someone Name <someone@orga.org>", | ||||
) | ) | ||||
def test_debian_download_package(datadir, tmpdir, requests_mock_datadir): | def test_debian_download_package(datadir, tmpdir, requests_mock_datadir): | ||||
tmpdir = str(tmpdir) # py3.5 work around (LocalPath issue) | tmpdir = str(tmpdir) # py3.5 work around (LocalPath issue) | ||||
p_info = DebianPackageInfo.from_metadata(PACKAGE_FILES, url=URL, version="0.7.2-3") | p_info = DebianPackageInfo.from_metadata( | ||||
PACKAGE_FILES, url=URL, version="stretch/contrib/0.7.2-3" | |||||
) | |||||
all_hashes = download_package(p_info, tmpdir) | all_hashes = download_package(p_info, tmpdir) | ||||
assert all_hashes == { | assert all_hashes == { | ||||
"cicero_0.7.2-3.diff.gz": { | "cicero_0.7.2-3.diff.gz": { | ||||
"checksums": { | "checksums": { | ||||
"md5": "a93661b6a48db48d59ba7d26796fc9ce", | "md5": "a93661b6a48db48d59ba7d26796fc9ce", | ||||
"sha1": "0815282053f21601b0ec4adf7a8fe47eace3c0bc", | "sha1": "0815282053f21601b0ec4adf7a8fe47eace3c0bc", | ||||
"sha256": "f039c9642fe15c75bed5254315e2a29f9f2700da0e29d9b0729b3ffc46c8971c", # noqa | "sha256": "f039c9642fe15c75bed5254315e2a29f9f2700da0e29d9b0729b3ffc46c8971c", # noqa | ||||
}, | }, | ||||
Show All 29 Lines | assert all_hashes == { | ||||
"cicero_0.7.2.orig.tar.gz" | "cicero_0.7.2.orig.tar.gz" | ||||
), | ), | ||||
}, | }, | ||||
} | } | ||||
def test_debian_dsc_information_ok(): | def test_debian_dsc_information_ok(): | ||||
fname = "cicero_0.7.2-3.dsc" | fname = "cicero_0.7.2-3.dsc" | ||||
p_info = DebianPackageInfo.from_metadata(PACKAGE_FILES, url=URL, version="0.7.2-3") | p_info = DebianPackageInfo.from_metadata( | ||||
PACKAGE_FILES, url=URL, version="stretch/contrib/0.7.2-3" | |||||
) | |||||
dsc_url, dsc_name = dsc_information(p_info) | dsc_url, dsc_name = dsc_information(p_info) | ||||
assert dsc_url == PACKAGE_FILES["files"][fname]["uri"] | assert dsc_url == PACKAGE_FILES["files"][fname]["uri"] | ||||
assert dsc_name == PACKAGE_FILES["files"][fname]["name"] | assert dsc_name == PACKAGE_FILES["files"][fname]["name"] | ||||
def test_debian_dsc_information_not_found(): | def test_debian_dsc_information_not_found(): | ||||
fname = "cicero_0.7.2-3.dsc" | fname = "cicero_0.7.2-3.dsc" | ||||
p_info = DebianPackageInfo.from_metadata(PACKAGE_FILES, url=URL, version="0.7.2-3") | p_info = DebianPackageInfo.from_metadata( | ||||
PACKAGE_FILES, url=URL, version="stretch/contrib/0.7.2-3" | |||||
) | |||||
p_info.files.pop(fname) | p_info.files.pop(fname) | ||||
dsc_url, dsc_name = dsc_information(p_info) | dsc_url, dsc_name = dsc_information(p_info) | ||||
assert dsc_url is None | assert dsc_url is None | ||||
assert dsc_name is None | assert dsc_name is None | ||||
def test_debian_dsc_information_missing_md5sum(): | def test_debian_dsc_information_missing_md5sum(): | ||||
package_files = deepcopy(PACKAGE_FILES) | package_files = deepcopy(PACKAGE_FILES) | ||||
for package_metadata in package_files["files"].values(): | for package_metadata in package_files["files"].values(): | ||||
del package_metadata["md5sum"] | del package_metadata["md5sum"] | ||||
p_info = DebianPackageInfo.from_metadata(package_files, url=URL, version="0.7.2-3") | p_info = DebianPackageInfo.from_metadata( | ||||
package_files, url=URL, version="stretch/contrib/0.7.2-3" | |||||
) | |||||
for debian_file_metadata in p_info.files.values(): | for debian_file_metadata in p_info.files.values(): | ||||
assert not debian_file_metadata.md5sum | assert not debian_file_metadata.md5sum | ||||
def test_debian_dsc_information_extra_sha1(requests_mock_datadir): | def test_debian_dsc_information_extra_sha1(requests_mock_datadir): | ||||
package_files = deepcopy(PACKAGE_FILES) | package_files = deepcopy(PACKAGE_FILES) | ||||
for package_metadata in package_files["files"].values(): | for package_metadata in package_files["files"].values(): | ||||
file_bytes = requests.get(package_metadata["uri"]).content | file_bytes = requests.get(package_metadata["uri"]).content | ||||
package_metadata["sha1"] = hashlib.sha1(file_bytes).hexdigest() | package_metadata["sha1"] = hashlib.sha1(file_bytes).hexdigest() | ||||
p_info = DebianPackageInfo.from_metadata(package_files, url=URL, version="0.7.2-3") | p_info = DebianPackageInfo.from_metadata( | ||||
package_files, url=URL, version="stretch/contrib/0.7.2-3" | |||||
) | |||||
for debian_file_metadata in p_info.files.values(): | for debian_file_metadata in p_info.files.values(): | ||||
assert debian_file_metadata.sha1 | assert debian_file_metadata.sha1 | ||||
def test_debian_dsc_information_too_many_dsc_entries(): | def test_debian_dsc_information_too_many_dsc_entries(): | ||||
# craft an extra dsc file | # craft an extra dsc file | ||||
fname = "cicero_0.7.2-3.dsc" | fname = "cicero_0.7.2-3.dsc" | ||||
p_info = DebianPackageInfo.from_metadata(PACKAGE_FILES, url=URL, version="0.7.2-3") | p_info = DebianPackageInfo.from_metadata( | ||||
PACKAGE_FILES, url=URL, version="stretch/contrib/0.7.2-3" | |||||
) | |||||
data = p_info.files[fname] | data = p_info.files[fname] | ||||
fname2 = fname.replace("cicero", "ciceroo") | fname2 = fname.replace("cicero", "ciceroo") | ||||
p_info.files[fname2] = data | p_info.files[fname2] = data | ||||
with pytest.raises( | with pytest.raises( | ||||
ValueError, | ValueError, | ||||
match="Package %s_%s references several dsc" | match="Package %s_%s references several dsc" | ||||
% (PACKAGE_FILES["name"], PACKAGE_FILES["version"]), | % (PACKAGE_FILES["name"], PACKAGE_FILES["version"]), | ||||
): | ): | ||||
dsc_information(p_info) | dsc_information(p_info) | ||||
def test_debian_get_intrinsic_package_metadata( | def test_debian_get_intrinsic_package_metadata( | ||||
requests_mock_datadir, datadir, tmp_path | requests_mock_datadir, datadir, tmp_path | ||||
): | ): | ||||
tmp_path = str(tmp_path) # py3.5 compat. | tmp_path = str(tmp_path) # py3.5 compat. | ||||
p_info = DebianPackageInfo.from_metadata(PACKAGE_FILES, url=URL, version="0.7.2-3") | p_info = DebianPackageInfo.from_metadata( | ||||
PACKAGE_FILES, url=URL, version="stretch/contrib/0.7.2-3" | |||||
) | |||||
logger.debug("p_info: %s", p_info) | logger.debug("p_info: %s", p_info) | ||||
# download the packages | # download the packages | ||||
all_hashes = download_package(p_info, tmp_path) | all_hashes = download_package(p_info, tmp_path) | ||||
# Retrieve information from package | # Retrieve information from package | ||||
_, dsc_name = dsc_information(p_info) | _, dsc_name = dsc_information(p_info) | ||||
▲ Show 20 Lines • Show All 120 Lines • Show Last 20 Lines |