Fix issue when updating game support on multiple dependers

This commit is contained in:
rubenwardy 2024-06-23 11:12:49 +01:00
parent 0c4698ec0d
commit aecde93310
2 changed files with 12 additions and 3 deletions

@ -228,8 +228,6 @@ class GameSupport:
while len(to_update) > 0: while len(to_update) > 0:
current_package = to_update.pop() current_package = to_update.pop()
if current_package.id_ in self.packages and current_package.type != PackageType.GAME: if current_package.id_ in self.packages and current_package.type != PackageType.GAME:
current_package.is_confirmed = False
current_package.detected_supported_games = []
self._get_supported_games(current_package, []) self._get_supported_games(current_package, [])
provides = current_package.provides provides = current_package.provides
@ -239,6 +237,10 @@ class GameSupport:
for modname in provides: for modname in provides:
for depending_package in self.get_all_that_depend_on(modname): for depending_package in self.get_all_that_depend_on(modname):
if depending_package not in checked: if depending_package not in checked:
if depending_package.id_ in self.packages and depending_package.type != PackageType.GAME:
depending_package.is_confirmed = False
depending_package.detected_supported_games = []
to_update.add(depending_package) to_update.add(depending_package)
checked.add(depending_package) checked.add(depending_package)

@ -285,7 +285,8 @@ def test_update_new_mod():
support.add(make_game("game1", ["default"])) support.add(make_game("game1", ["default"]))
support.add(make_game("game2", ["core", "mod_b"])) support.add(make_game("game2", ["core", "mod_b"]))
lib = support.add(make_mod("lib", ["lib"], [])) lib = support.add(make_mod("lib", ["lib"], []))
modA = support.add(make_mod("mod_a", ["mod_a"], ["mod_b", "lib"])) modC = support.add(make_mod("mod_c", ["mod_c"], ["mod_b"]))
modA = support.add(make_mod("mod_a", ["mod_a"], ["mod_b", "mod_c", "lib"]))
support.on_update(modA) support.on_update(modA)
assert not support.has_errors assert not support.has_errors
@ -293,6 +294,9 @@ def test_update_new_mod():
assert modA.is_confirmed assert modA.is_confirmed
assert modA.detected_supported_games == {"game2"} assert modA.detected_supported_games == {"game2"}
assert modC.is_confirmed
assert modC.detected_supported_games == {"game2"}
assert lib.is_confirmed assert lib.is_confirmed
assert len(lib.detected_supported_games) == 0 assert len(lib.detected_supported_games) == 0
@ -307,6 +311,9 @@ def test_update_new_mod():
assert modB.is_confirmed assert modB.is_confirmed
assert modB.detected_supported_games == {"game1"} assert modB.detected_supported_games == {"game1"}
assert modC.is_confirmed
assert modC.detected_supported_games == {"game1", "game2"}
assert lib.is_confirmed assert lib.is_confirmed
assert len(lib.detected_supported_games) == 0 assert len(lib.detected_supported_games) == 0