From db22d298e34fdd79d594be73a730ce3f2e13c5be Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 14 Aug 2024 09:53:44 -0700 Subject: [PATCH] feat: Add comprehensive test for YAML config file loading The commit message is: feat: Add comprehensive test for YAML config file loading --- tests/basic/test_main.py | 54 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/tests/basic/test_main.py b/tests/basic/test_main.py index 1560894a0..e24ccc9de 100644 --- a/tests/basic/test_main.py +++ b/tests/basic/test_main.py @@ -373,6 +373,60 @@ class TestMain(TestCase): self.assertRegex(relevant_output, r"AIDER_DARK_MODE:\s+on") self.assertRegex(relevant_output, r"dark_mode:\s+True") + def test_yaml_config_file_loading(self): + with GitTemporaryDirectory() as git_dir: + git_dir = Path(git_dir) + + # Create fake home directory + fake_home = git_dir / "fake_home" + fake_home.mkdir() + os.environ["HOME"] = str(fake_home) + + # Create subdirectory as current working directory + cwd = git_dir / "subdir" + cwd.mkdir() + os.chdir(cwd) + + # Create .aider.conf.yml files in different locations + home_config = fake_home / ".aider.conf.yml" + git_config = git_dir / ".aider.conf.yml" + cwd_config = cwd / ".aider.conf.yml" + named_config = git_dir / "named.aider.conf.yml" + + home_config.write_text("model: gpt-3.5-turbo\nmap-tokens: 1024\n") + git_config.write_text("model: gpt-4\nmap-tokens: 2048\n") + cwd_config.write_text("model: gpt-4-32k\nmap-tokens: 4096\n") + named_config.write_text("model: gpt-4-1106-preview\nmap-tokens: 8192\n") + + with patch("pathlib.Path.home", return_value=fake_home), \ + patch("aider.coders.Coder.create") as MockCoder: + + # Test loading from current working directory + main(["--yes", "--exit"], input=DummyInput(), output=DummyOutput()) + _, kwargs = MockCoder.call_args + self.assertEqual(kwargs["model"], "gpt-4-32k") + self.assertEqual(kwargs["map_tokens"], 4096) + + # Test loading from git root + cwd_config.unlink() + main(["--yes", "--exit"], input=DummyInput(), output=DummyOutput()) + _, kwargs = MockCoder.call_args + self.assertEqual(kwargs["model"], "gpt-4") + self.assertEqual(kwargs["map_tokens"], 2048) + + # Test loading from home directory + git_config.unlink() + main(["--yes", "--exit"], input=DummyInput(), output=DummyOutput()) + _, kwargs = MockCoder.call_args + self.assertEqual(kwargs["model"], "gpt-3.5-turbo") + self.assertEqual(kwargs["map_tokens"], 1024) + + # Test loading from specified config file + main(["--yes", "--exit", "--config", str(named_config)], input=DummyInput(), output=DummyOutput()) + _, kwargs = MockCoder.call_args + self.assertEqual(kwargs["model"], "gpt-4-1106-preview") + self.assertEqual(kwargs["map_tokens"], 8192) + def test_map_tokens_option(self): with GitTemporaryDirectory(): with patch("aider.coders.base_coder.RepoMap") as MockRepoMap: