Page MenuHomeSoftware Heritage

D6744.id24496.diff
No OneTemporary

D6744.id24496.diff

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
@@ -255,6 +255,15 @@
}
)
+ if self.listed_origins[origin_url].last_update is None or (
+ self.last_sources_update is not None
+ and self.last_sources_update # type: ignore
+ > self.listed_origins[origin_url].last_update
+ ):
+ # update debian package last update if current processed sources index
+ # has a greater modification date
+ self.listed_origins[origin_url].last_update = self.last_sources_update
+
# add package version key to the set of found versions
self.package_versions[package_name].add(package_version_key)
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,7 +4,8 @@
# See top-level LICENSE file for more information
from collections import defaultdict
-from email.utils import formatdate
+from datetime import datetime
+from email.utils import formatdate, parsedate_to_datetime
import os
from pathlib import Path
from typing import Dict, List, Set, Tuple
@@ -38,6 +39,7 @@
_mirror_url = "http://deb.debian.org/debian"
_suites = ["stretch", "buster", "bullseye"]
_components = ["main", "foo"]
+_last_modified = {}
SourcesText = str
@@ -70,19 +72,22 @@
suite_pkg_info: DebianSuitePkgSrcInfo = {}
- for suite, sources in debian_sources.items():
+ for i, (suite, sources) in enumerate(debian_sources.items()):
+ # ensure to generate a different date for each suite
+ last_modified = formatdate(timeval=datetime.now().timestamp() + i, usegmt=True)
suite_pkg_info[suite] = defaultdict(list)
for pkg_src in Sources.iter_paragraphs(sources):
suite_pkg_info[suite][pkg_src["Package"]].append(pkg_src)
+ # backup package last update date
+ global _last_modified
+ _last_modified[pkg_src["Package"]] = last_modified
for idx_url, compression in lister.debian_index_urls(suite, _components[0]):
if compression:
requests_mock.get(idx_url, status_code=404)
else:
requests_mock.get(
- idx_url,
- text=sources,
- headers={"Last-Modified": formatdate(usegmt=True)},
+ idx_url, text=sources, headers={"Last-Modified": last_modified},
)
for idx_url, _ in lister.debian_index_urls(suite, _components[1]):
@@ -127,7 +132,10 @@
]
assert filtered_origins
- assert filtered_origins[0].last_update is not None
+ expected_last_update = parsedate_to_datetime(
+ _last_modified[pkg_src["Package"]]
+ )
+ assert filtered_origins[0].last_update == expected_last_update
packages = filtered_origins[0].extra_loader_arguments["packages"]
# check the version info are available
assert package_version_key in packages

File Metadata

Mime Type
text/plain
Expires
Dec 21 2024, 9:58 AM (11 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3219164

Event Timeline