diff --git a/tests/basic/test_editblock.py b/tests/basic/test_editblock.py index d4bcc89dc..1b099553c 100644 --- a/tests/basic/test_editblock.py +++ b/tests/basic/test_editblock.py @@ -16,6 +16,38 @@ class TestUtils(unittest.TestCase): def setUp(self): self.GPT35 = Model("gpt-3.5-turbo") + def test_find_filename(self): + fence = ("```", "```") + valid_fnames = ["file1.py", "file2.py", "dir/file3.py"] + + # Test with filename on a single line + lines = ["file1.py", "```"] + self.assertEqual(eb.find_filename(lines, fence, valid_fnames), "file1.py") + + # Test with filename and fence on separate lines + lines = ["file2.py", "```", "some content"] + self.assertEqual(eb.find_filename(lines, fence, valid_fnames), "file2.py") + + # Test with filename in fence + lines = ["```python", "file3.py", "```"] + self.assertEqual(eb.find_filename(lines, fence, valid_fnames), "dir/file3.py") + + # Test with no valid filename + lines = ["```", "invalid_file.py", "```"] + self.assertIsNone(eb.find_filename(lines, fence, valid_fnames)) + + # Test with multiple fences + lines = ["```python", "file1.py", "```", "```", "file2.py", "```"] + self.assertEqual(eb.find_filename(lines, fence, valid_fnames), "file2.py") + + # Test with filename having extra characters + lines = ["# file1.py", "```"] + self.assertEqual(eb.find_filename(lines, fence, valid_fnames), "file1.py") + + # Test with fuzzy matching + lines = ["file1_py", "```"] + self.assertEqual(eb.find_filename(lines, fence, valid_fnames), "file1.py") + # fuzzy logic disabled v0.11.2-dev def __test_replace_most_similar_chunk(self): whole = "This is a sample text.\nAnother line of text.\nYet another line.\n"