Skip to content

Commit bf302fc

Browse files
evgenipirat89
authored andcommitted
properly scope try/except when loading obsoleted keys
We want to load all possible keys, even *after* a KeyError happenend Fixes: 7e0fb44
1 parent 9f2f172 commit bf302fc

File tree

2 files changed

+54
-4
lines changed

2 files changed

+54
-4
lines changed

repos/system_upgrade/common/actors/removeobsoletegpgkeys/libraries/removeobsoleterpmgpgkeys.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ def _get_obsolete_keys():
1212
distribution = api.current_actor().configuration.os_release.release_id
1313
obsoleted_keys_map = get_distribution_data(distribution).get('obsoleted-keys', {})
1414
keys = []
15-
try:
16-
for version in range(7, int(get_target_major_version()) + 1):
15+
for version in range(7, int(get_target_major_version()) + 1):
16+
try:
1717
for key in obsoleted_keys_map[str(version)]:
1818
name, version, release = key.rsplit("-", 2)
1919
if has_package(InstalledRPM, name, version=version, release=release):
2020
keys.append(key)
21-
except KeyError:
22-
pass
21+
except KeyError:
22+
pass
2323

2424
return keys
2525

repos/system_upgrade/common/actors/removeobsoletegpgkeys/tests/test_removeobsoleterpmgpgkeys.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,56 @@ def get_target_major_version_mocked():
7676
assert set(keys) == set(expected)
7777

7878

79+
@pytest.mark.parametrize(
80+
"version, obsoleted_keys, expected",
81+
[
82+
(10, None, []),
83+
(10, {}, []),
84+
(10, {"8": ["gpg-pubkey-888-abc"], "10": ["gpg-pubkey-10-10"]}, ["gpg-pubkey-888-abc", "gpg-pubkey-10-10"]),
85+
(9, {"8": ["gpg-pubkey-888-abc"], "9": ["gpg-pubkey-999-def"]}, ["gpg-pubkey-999-def", "gpg-pubkey-888-abc"]),
86+
(8, {"8": ["gpg-pubkey-888-abc"], "9": ["gpg-pubkey-999-def"]}, ["gpg-pubkey-888-abc"])
87+
]
88+
)
89+
def test_get_obsolete_keys_incomplete_data(monkeypatch, version, obsoleted_keys, expected):
90+
def get_target_major_version_mocked():
91+
return version
92+
93+
def get_distribution_data_mocked(_distro):
94+
if obsoleted_keys is None:
95+
return {}
96+
return {'obsoleted-keys': obsoleted_keys}
97+
98+
def has_package_mocked(*args, **kwargs):
99+
return True
100+
101+
monkeypatch.setattr(
102+
removeobsoleterpmgpgkeys,
103+
"get_target_major_version",
104+
get_target_major_version_mocked,
105+
)
106+
107+
monkeypatch.setattr(
108+
removeobsoleterpmgpgkeys,
109+
"get_distribution_data",
110+
get_distribution_data_mocked,
111+
)
112+
113+
monkeypatch.setattr(
114+
removeobsoleterpmgpgkeys,
115+
"has_package",
116+
has_package_mocked,
117+
)
118+
119+
monkeypatch.setattr(
120+
api,
121+
"current_actor",
122+
CurrentActorMocked(),
123+
)
124+
125+
keys = removeobsoleterpmgpgkeys._get_obsolete_keys()
126+
assert set(keys) == set(expected)
127+
128+
79129
@pytest.mark.parametrize(
80130
"keys, should_register",
81131
[

0 commit comments

Comments
 (0)