From 2ba3238a34b927eddb68ed024b58883eba66766e Mon Sep 17 00:00:00 2001 From: Xavier-Do Date: Wed, 21 Feb 2024 11:04:25 +0100 Subject: [PATCH] [FIX] runbot: fix repo.modules is False case --- runbot/models/build.py | 2 +- runbot/models/repo.py | 5 +++-- runbot/tests/test_build.py | 6 ++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/runbot/models/build.py b/runbot/models/build.py index f1f09ce4..03372ee3 100644 --- a/runbot/models/build.py +++ b/runbot/models/build.py @@ -929,7 +929,7 @@ class BuildResult(models.Model): modules = self._get_available_modules() params_patterns = (self.params_id.modules or '').split(',') modules_patterns = (modules_patterns or '').split(',') - return trigger._filter_modules_to_test(modules, params_patterns + modules_patterns) + return trigger._filter_modules_to_test(modules, params_patterns + modules_patterns) # we may switch params_patterns and modules_patterns order def _local_pg_dropdb(self, dbname): msg = '' diff --git a/runbot/models/repo.py b/runbot/models/repo.py index 20ed8b0a..df5dbd4a 100644 --- a/runbot/models/repo.py +++ b/runbot/models/repo.py @@ -127,8 +127,9 @@ class Trigger(models.Model): # repo specific filters for repo, repo_available_modules in modules.items(): - repo_modules = repo_available_modules - repo_modules = _filter_patterns(repo.modules.split(','), repo_modules, repo_available_modules) + repo_modules = set(repo_available_modules) + if repo.modules: + repo_modules = _filter_patterns(repo.modules.split(','), repo_modules, repo_available_modules) module_pattern = repo_module_patterns.get(repo) if module_pattern: repo_modules = _filter_patterns(module_pattern, repo_modules, repo_available_modules) diff --git a/runbot/tests/test_build.py b/runbot/tests/test_build.py index 02fbc361..7519142b 100644 --- a/runbot/tests/test_build.py +++ b/runbot/tests/test_build.py @@ -201,6 +201,12 @@ class TestBuildResult(RunbotCase): } self.repo_server.modules = '-bad_module,-hw_*,hw_explicit,-l10n_*' + + self.repo_addons.modules = False # no filter, should not crash + + modules_to_test = build._get_modules_to_test(modules_patterns='') + self.assertEqual(modules_to_test, sorted(['good_module', 'hwgood', 'other_good', 'hw_explicit', 'other_mod_1', 'other_mod_2'])) + self.repo_addons.modules = '-*' modules_to_test = build._get_modules_to_test(modules_patterns='')