Skip to content
Snippets Groups Projects
Commit 9f8bdcee authored by Franck Bret's avatar Franck Bret
Browse files

Arch: Adapt the loader to manage 'arch_metadata' from 'extra_loader_arguments'

Adapt code, test fixture and tests after the lister split its artifacts
data to artifacts and arch_metadata (see D8259)

Related T4233
parent 9493891b
No related branches found
No related tags found
1 merge request!435Arch: Adapt the loader to manage 'arch_metadata' from 'extra_loader_arguments'
......@@ -27,7 +27,7 @@ Here is an overview of the fields (+ internal version name + branch name) used b
- Synthetic release for Arch Linux source package {p_info.name} version {p_info.version} {description}
- true
- from intrinsic metadata
- from extra_loader_arguments['artifacts']
- from extra_loader_arguments['arch_metadata']
- Intrinsic metadata extracted from .PKGINFO file of the package
* - archive
- passed as arg
......
......@@ -57,6 +57,7 @@ class ArchLoader(PackageLoader[ArchPackageInfo]):
storage: StorageInterface,
url: str,
artifacts: List[Dict[str, Any]],
arch_metadata: List[Dict[str, Any]],
**kwargs,
):
......@@ -65,6 +66,9 @@ class ArchLoader(PackageLoader[ArchPackageInfo]):
self.artifacts: Dict[str, Dict] = {
artifact["version"]: artifact for artifact in artifacts
}
self.arch_metadata: Dict[str, Dict] = {
metadata["version"]: metadata for metadata in arch_metadata
}
def get_versions(self) -> Sequence[str]:
"""Get all released versions of an Arch Linux package
......@@ -102,14 +106,15 @@ class ArchLoader(PackageLoader[ArchPackageInfo]):
Iterator of tuple (release_name, p_info)
"""
artifact = self.artifacts[version]
assert version == artifact["version"]
metadata = self.arch_metadata[version]
assert version == artifact["version"] == metadata["version"]
p_info = ArchPackageInfo(
name=artifact["name"],
name=metadata["name"],
filename=artifact["filename"],
url=artifact["url"],
version=version,
last_modified=artifact["last_modified"],
last_modified=metadata["last_modified"],
)
yield release_name(version, artifact["filename"]), p_info
......
......@@ -23,22 +23,30 @@ EXPECTED_PACKAGES = [
"artifacts": [
{
"url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz", # noqa: B950
"version": "1:1.3_20190211-1",
"length": 180000,
"filename": "dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz",
},
{
"url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst", # noqa: B950
"version": "1:1.3_20220414-1",
"length": 198000,
"filename": "dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst",
},
],
"arch_metadata": [
{
"arch": "x86_64",
"repo": "core",
"name": "dialog",
"version": "1:1.3_20190211-1",
"length": 180000,
"filename": "dialog-1:1.3_20190211-1-x86_64.pkg.tar.xz",
"last_modified": "2019-02-13T08:36:00",
},
{
"url": "https://archive.archlinux.org/packages/d/dialog/dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst", # noqa: B950
"arch": "x86_64",
"repo": "core",
"name": "dialog",
"version": "1:1.3_20220414-1",
"length": 198000,
"filename": "dialog-1:1.3_20220414-1-x86_64.pkg.tar.zst",
"last_modified": "2022-04-16T03:59:00",
},
],
......@@ -48,12 +56,17 @@ EXPECTED_PACKAGES = [
"artifacts": [
{
"url": "https://uk.mirror.archlinuxarm.org/aarch64/core/gzip-1.12-1-aarch64.pkg.tar.xz", # noqa: B950
"length": 79640,
"version": "1.12-1",
"filename": "gzip-1.12-1-aarch64.pkg.tar.xz",
}
],
"arch_metadata": [
{
"arch": "aarch64",
"name": "gzip",
"repo": "core",
"length": 79640,
"version": "1.12-1",
"filename": "gzip-1.12-1-aarch64.pkg.tar.xz",
"last_modified": "2022-04-07T21:08:14",
}
],
......@@ -66,6 +79,7 @@ def test_get_versions(swh_storage):
swh_storage,
url=EXPECTED_PACKAGES[0]["url"],
artifacts=EXPECTED_PACKAGES[0]["artifacts"],
arch_metadata=EXPECTED_PACKAGES[0]["arch_metadata"],
)
assert loader.get_versions() == [
......@@ -79,6 +93,7 @@ def test_get_default_version(requests_mock_datadir, swh_storage):
swh_storage,
url=EXPECTED_PACKAGES[0]["url"],
artifacts=EXPECTED_PACKAGES[0]["artifacts"],
arch_metadata=EXPECTED_PACKAGES[0]["arch_metadata"],
)
assert loader.get_default_version() == "1:1.3_20220414-1"
......@@ -88,6 +103,7 @@ def test_arch_loader_load_one_version(datadir, requests_mock_datadir, swh_storag
swh_storage,
url=EXPECTED_PACKAGES[1]["url"],
artifacts=EXPECTED_PACKAGES[1]["artifacts"],
arch_metadata=EXPECTED_PACKAGES[1]["arch_metadata"],
)
actual_load_status = loader.load()
assert actual_load_status["status"] == "eventful"
......@@ -154,6 +170,7 @@ def test_arch_loader_load_n_versions(datadir, requests_mock_datadir, swh_storage
swh_storage,
url=EXPECTED_PACKAGES[0]["url"],
artifacts=EXPECTED_PACKAGES[0]["artifacts"],
arch_metadata=EXPECTED_PACKAGES[0]["arch_metadata"],
)
actual_load_status = loader.load()
assert actual_load_status["status"] == "eventful"
......@@ -215,11 +232,16 @@ def test_arch_invalid_origin_archive_not_found(swh_storage, requests_mock_datadi
{
"filename": "42-0.0.1.pkg.xz",
"url": "https://mirror2.nowhere/pkg/42-0.0.1.pkg.xz",
"version": "0.0.1",
"length": 42,
},
],
arch_metadata=[
{
"version": "0.0.1",
"arch": "aarch64",
"name": "42",
"repo": "community",
"length": 42,
"last_modified": "2022-04-07T21:08:14",
},
],
......
......@@ -19,10 +19,15 @@ def test_tasks_arch_loader(
"version": "0.0.1",
"url": "https://somewhere/some-package-0.0.1.pkg.xz",
"filename": "some-package-0.0.1.pkg.xz",
"length": 42,
}
],
arch_metadata=[
{
"version": "0.0.1",
"arch": "aarch64",
"name": "some-package",
"repo": "community",
"length": 42,
"last_modified": "1970-01-01T21:08:14",
}
],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment