101 lines
3.7 KiB
Diff
101 lines
3.7 KiB
Diff
|
From bf302fc794957a88bc4785f4dd2505b8d71012e0 Mon Sep 17 00:00:00 2001
|
||
|
From: Evgeni Golov <evgeni@golov.de>
|
||
|
Date: Wed, 21 Aug 2024 07:52:02 +0200
|
||
|
Subject: [PATCH 04/40] properly scope try/except when loading obsoleted keys
|
||
|
|
||
|
We want to load all possible keys, even *after* a KeyError happenend
|
||
|
|
||
|
Fixes: 7e0fb44bb673893d0409903f6a441d0eb2829d22
|
||
|
---
|
||
|
.../libraries/removeobsoleterpmgpgkeys.py | 8 +--
|
||
|
.../tests/test_removeobsoleterpmgpgkeys.py | 50 +++++++++++++++++++
|
||
|
2 files changed, 54 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/repos/system_upgrade/common/actors/removeobsoletegpgkeys/libraries/removeobsoleterpmgpgkeys.py b/repos/system_upgrade/common/actors/removeobsoletegpgkeys/libraries/removeobsoleterpmgpgkeys.py
|
||
|
index bda7efa3..198c4368 100644
|
||
|
--- a/repos/system_upgrade/common/actors/removeobsoletegpgkeys/libraries/removeobsoleterpmgpgkeys.py
|
||
|
+++ b/repos/system_upgrade/common/actors/removeobsoletegpgkeys/libraries/removeobsoleterpmgpgkeys.py
|
||
|
@@ -12,14 +12,14 @@ def _get_obsolete_keys():
|
||
|
distribution = api.current_actor().configuration.os_release.release_id
|
||
|
obsoleted_keys_map = get_distribution_data(distribution).get('obsoleted-keys', {})
|
||
|
keys = []
|
||
|
- try:
|
||
|
- for version in range(7, int(get_target_major_version()) + 1):
|
||
|
+ for version in range(7, int(get_target_major_version()) + 1):
|
||
|
+ try:
|
||
|
for key in obsoleted_keys_map[str(version)]:
|
||
|
name, version, release = key.rsplit("-", 2)
|
||
|
if has_package(InstalledRPM, name, version=version, release=release):
|
||
|
keys.append(key)
|
||
|
- except KeyError:
|
||
|
- pass
|
||
|
+ except KeyError:
|
||
|
+ pass
|
||
|
|
||
|
return keys
|
||
|
|
||
|
diff --git a/repos/system_upgrade/common/actors/removeobsoletegpgkeys/tests/test_removeobsoleterpmgpgkeys.py b/repos/system_upgrade/common/actors/removeobsoletegpgkeys/tests/test_removeobsoleterpmgpgkeys.py
|
||
|
index 4d9a0e84..b78174cc 100644
|
||
|
--- a/repos/system_upgrade/common/actors/removeobsoletegpgkeys/tests/test_removeobsoleterpmgpgkeys.py
|
||
|
+++ b/repos/system_upgrade/common/actors/removeobsoletegpgkeys/tests/test_removeobsoleterpmgpgkeys.py
|
||
|
@@ -76,6 +76,56 @@ def test_get_obsolete_keys(monkeypatch, version, expected):
|
||
|
assert set(keys) == set(expected)
|
||
|
|
||
|
|
||
|
+@pytest.mark.parametrize(
|
||
|
+ "version, obsoleted_keys, expected",
|
||
|
+ [
|
||
|
+ (10, None, []),
|
||
|
+ (10, {}, []),
|
||
|
+ (10, {"8": ["gpg-pubkey-888-abc"], "10": ["gpg-pubkey-10-10"]}, ["gpg-pubkey-888-abc", "gpg-pubkey-10-10"]),
|
||
|
+ (9, {"8": ["gpg-pubkey-888-abc"], "9": ["gpg-pubkey-999-def"]}, ["gpg-pubkey-999-def", "gpg-pubkey-888-abc"]),
|
||
|
+ (8, {"8": ["gpg-pubkey-888-abc"], "9": ["gpg-pubkey-999-def"]}, ["gpg-pubkey-888-abc"])
|
||
|
+ ]
|
||
|
+)
|
||
|
+def test_get_obsolete_keys_incomplete_data(monkeypatch, version, obsoleted_keys, expected):
|
||
|
+ def get_target_major_version_mocked():
|
||
|
+ return version
|
||
|
+
|
||
|
+ def get_distribution_data_mocked(_distro):
|
||
|
+ if obsoleted_keys is None:
|
||
|
+ return {}
|
||
|
+ return {'obsoleted-keys': obsoleted_keys}
|
||
|
+
|
||
|
+ def has_package_mocked(*args, **kwargs):
|
||
|
+ return True
|
||
|
+
|
||
|
+ monkeypatch.setattr(
|
||
|
+ removeobsoleterpmgpgkeys,
|
||
|
+ "get_target_major_version",
|
||
|
+ get_target_major_version_mocked,
|
||
|
+ )
|
||
|
+
|
||
|
+ monkeypatch.setattr(
|
||
|
+ removeobsoleterpmgpgkeys,
|
||
|
+ "get_distribution_data",
|
||
|
+ get_distribution_data_mocked,
|
||
|
+ )
|
||
|
+
|
||
|
+ monkeypatch.setattr(
|
||
|
+ removeobsoleterpmgpgkeys,
|
||
|
+ "has_package",
|
||
|
+ has_package_mocked,
|
||
|
+ )
|
||
|
+
|
||
|
+ monkeypatch.setattr(
|
||
|
+ api,
|
||
|
+ "current_actor",
|
||
|
+ CurrentActorMocked(),
|
||
|
+ )
|
||
|
+
|
||
|
+ keys = removeobsoleterpmgpgkeys._get_obsolete_keys()
|
||
|
+ assert set(keys) == set(expected)
|
||
|
+
|
||
|
+
|
||
|
@pytest.mark.parametrize(
|
||
|
"keys, should_register",
|
||
|
[
|
||
|
--
|
||
|
2.47.0
|
||
|
|