From fb7413436ca65f6da44de4789c0b283a07fdf250 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 12 Mar 2025 15:34:24 -0700 Subject: [PATCH] refactor: Split language tests into individual test methods --- tests/basic/test_repomap.py | 169 +++++++++++++++++++++++++++--------- 1 file changed, 126 insertions(+), 43 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 16b39cfcc..751081d39 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -283,50 +283,133 @@ class TestRepoMapAllLanguages(unittest.TestCase): def setUp(self): self.GPT35 = Model("gpt-3.5-turbo") - # instead of one giant test with a loop, make each language have its own - # test_xxx case that calls self._test_language_repo_map ai! - def test_get_repo_map_all_languages(self): - language_files = { - "c": ("c", "main"), - "cpp": ("cpp", "main"), - "d": ("d", "main"), - "dart": ("dart", "Person"), - "elixir": ("ex", "Greeter"), - "gleam": ("gleam", "greet"), - "java": ("java", "Greeting"), - "javascript": ("js", "Person"), - "kotlin": ("kt", "Greeting"), - "lua": ("lua", "greet"), - # "ocaml": ("ml", "Greeter"), # not supported in tsl-pack (yet?) - "php": ("php", "greet"), - "python": ("py", "Person"), - # "ql": ("ql", "greet"), # not supported in tsl-pack (yet?) - "ruby": ("rb", "greet"), - "rust": ("rs", "Person"), - "typescript": ("ts", "greet"), - "tsx": ("tsx", "UserProps"), - "csharp": ("cs", "IGreeter"), - "elisp": ("el", "greeter"), - "elm": ("elm", "Person"), - "go": ("go", "Greeter"), - "hcl": ("tf", "aws_vpc"), - "arduino": ("ino", "setup"), - "chatito": ("chatito", "intent"), - "commonlisp": ("lisp", "greet"), - "pony": ("pony", "Greeter"), - "properties": ("properties", "database.url"), - "r": ("r", "calculate"), - "racket": ("rkt", "greet"), - "solidity": ("sol", "SimpleStorage"), - "swift": ("swift", "Greeter"), - "udev": ("rules", "USB_DRIVER"), - } - + def test_language_c(self): fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" - - dump(len(language_files)) - for lang, key_symbol in language_files.items(): - self._test_language_repo_map(lang, key_symbol, fixtures_dir) + self._test_language_repo_map("c", ("c", "main"), fixtures_dir) + + def test_language_cpp(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("cpp", ("cpp", "main"), fixtures_dir) + + def test_language_d(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("d", ("d", "main"), fixtures_dir) + + def test_language_dart(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("dart", ("dart", "Person"), fixtures_dir) + + def test_language_elixir(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("elixir", ("ex", "Greeter"), fixtures_dir) + + def test_language_gleam(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("gleam", ("gleam", "greet"), fixtures_dir) + + def test_language_java(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("java", ("java", "Greeting"), fixtures_dir) + + def test_language_javascript(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("javascript", ("js", "Person"), fixtures_dir) + + def test_language_kotlin(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("kotlin", ("kt", "Greeting"), fixtures_dir) + + def test_language_lua(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("lua", ("lua", "greet"), fixtures_dir) + + # "ocaml": ("ml", "Greeter"), # not supported in tsl-pack (yet?) + + def test_language_php(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("php", ("php", "greet"), fixtures_dir) + + def test_language_python(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("python", ("py", "Person"), fixtures_dir) + + # "ql": ("ql", "greet"), # not supported in tsl-pack (yet?) + + def test_language_ruby(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("ruby", ("rb", "greet"), fixtures_dir) + + def test_language_rust(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("rust", ("rs", "Person"), fixtures_dir) + + def test_language_typescript(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("typescript", ("ts", "greet"), fixtures_dir) + + def test_language_tsx(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("tsx", ("tsx", "UserProps"), fixtures_dir) + + def test_language_csharp(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("csharp", ("cs", "IGreeter"), fixtures_dir) + + def test_language_elisp(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("elisp", ("el", "greeter"), fixtures_dir) + + def test_language_elm(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("elm", ("elm", "Person"), fixtures_dir) + + def test_language_go(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("go", ("go", "Greeter"), fixtures_dir) + + def test_language_hcl(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("hcl", ("tf", "aws_vpc"), fixtures_dir) + + def test_language_arduino(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("arduino", ("ino", "setup"), fixtures_dir) + + def test_language_chatito(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("chatito", ("chatito", "intent"), fixtures_dir) + + def test_language_commonlisp(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("commonlisp", ("lisp", "greet"), fixtures_dir) + + def test_language_pony(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("pony", ("pony", "Greeter"), fixtures_dir) + + def test_language_properties(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("properties", ("properties", "database.url"), fixtures_dir) + + def test_language_r(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("r", ("r", "calculate"), fixtures_dir) + + def test_language_racket(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("racket", ("rkt", "greet"), fixtures_dir) + + def test_language_solidity(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("solidity", ("sol", "SimpleStorage"), fixtures_dir) + + def test_language_swift(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("swift", ("swift", "Greeter"), fixtures_dir) + + def test_language_udev(self): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + self._test_language_repo_map("udev", ("rules", "USB_DRIVER"), fixtures_dir) def _test_language_repo_map(self, lang, key_symbol, fixtures_dir): """Helper method to test repo map generation for a specific language."""