diff --git a/swh/lister/debian/lister.py b/swh/lister/debian/lister.py --- a/swh/lister/debian/lister.py +++ b/swh/lister/debian/lister.py @@ -11,6 +11,7 @@ from itertools import product import logging import lzma +import os from typing import Any, Callable, Dict, Iterator, List, Optional, Set, Tuple from urllib.parse import urljoin @@ -198,9 +199,12 @@ if field_ in src_pkg: for entry in src_pkg[field_]: name = entry["name"] - files[name]["name"] = entry["name"] + files[name]["name"] = name files[name]["size"] = int(entry["size"], 10) files[name][sum_name] = entry[sum_name] + files[name]["uri"] = os.path.join( + self.url, src_pkg["Directory"], name + ) # extract package name and version package_name = src_pkg["Package"] diff --git a/swh/lister/debian/tests/test_lister.py b/swh/lister/debian/tests/test_lister.py --- a/swh/lister/debian/tests/test_lister.py +++ b/swh/lister/debian/tests/test_lister.py @@ -4,6 +4,7 @@ # See top-level LICENSE file for more information from collections import defaultdict +import os from pathlib import Path from typing import Dict, List, Set, Tuple @@ -117,11 +118,19 @@ ] assert filtered_origins + packages = filtered_origins[0].extra_loader_arguments["packages"] # check the version info are available - assert ( - package_version_key - in filtered_origins[0].extra_loader_arguments["packages"] - ) + assert package_version_key in packages + + # check package files URIs are available + for file in pkg_src["files"]: + filename = file["name"] + file_uri = os.path.join( + _mirror_url, pkg_src["Directory"], filename + ) + package_files = packages[package_version_key]["files"] + assert filename in package_files + assert package_files[filename]["uri"] == file_uri # check listed package version is in lister state assert package_name in lister.state.package_versions