From 3ec5485da751ae0f4403ae2bf912298f291c8e29 Mon Sep 17 00:00:00 2001 From: mehmet turac Date: Sat, 16 May 2026 01:51:22 +0300 Subject: [PATCH] fix: handle empty projects config key --- src/serena/config/serena_config.py | 2 +- test/serena/config/test_serena_config.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/serena/config/serena_config.py b/src/serena/config/serena_config.py index fa754d8a..a0dc247e 100644 --- a/src/serena/config/serena_config.py +++ b/src/serena/config/serena_config.py @@ -871,7 +871,7 @@ class SerenaConfig(SharedConfig, ModeSelectionDefinitionWithBaseModes): if "projects" not in loaded_commented_yaml: raise SerenaConfigError("`projects` key not found in Serena configuration. Please update your `serena_config.yml` file.") instance.projects = [] - for path in loaded_commented_yaml["projects"]: + for path in loaded_commented_yaml["projects"] or []: path = Path(path).resolve() try: path_exists = path.exists() diff --git a/test/serena/config/test_serena_config.py b/test/serena/config/test_serena_config.py index 75c1e143..01b4c4d4 100644 --- a/test/serena/config/test_serena_config.py +++ b/test/serena/config/test_serena_config.py @@ -523,6 +523,20 @@ class TestSerenaConfigFromConfigFileRobustness: body_lines.append(f" - {p}") self.master_config_path.write_text("\n".join(body_lines) + "\n") + def test_empty_projects_key_is_treated_as_empty_list(self, monkeypatch): + """A bare ``projects:`` key should not abort config loading.""" + self.master_config_path.write_text("projects:\n") + + monkeypatch.setattr( + SerenaConfig, + "_determine_config_file_path", + classmethod(lambda cls: str(self.master_config_path)), + ) + + config = SerenaConfig.from_config_file(generate_if_missing=False) + + assert config.projects == [] + def test_malformed_project_is_skipped_with_warning(self, caplog, monkeypatch): """A malformed project.yml must not abort loading of the others.""" good_project = self._make_project_dir(