(self)
| 173 | self.assertEqual(coder.abs_fnames, set([str(fname.resolve())])) |
| 174 | |
| 175 | def test_skip_duplicate_basename_mentions(self): |
| 176 | with GitTemporaryDirectory(): |
| 177 | io = InputOutput(pretty=False, yes=True) |
| 178 | coder = Coder.create(self.GPT35, None, io) |
| 179 | |
| 180 | # Create files with same basename in different directories |
| 181 | fname1 = Path("dir1") / "file.txt" |
| 182 | fname2 = Path("dir2") / "file.txt" |
| 183 | fname3 = Path("dir3") / "unique.txt" |
| 184 | |
| 185 | for fname in [fname1, fname2, fname3]: |
| 186 | fname.parent.mkdir(parents=True, exist_ok=True) |
| 187 | fname.touch() |
| 188 | |
| 189 | # Add one file to chat |
| 190 | coder.add_rel_fname(str(fname1)) |
| 191 | |
| 192 | # Mock get_tracked_files to return all files |
| 193 | mock = MagicMock() |
| 194 | mock.return_value = set([str(fname1), str(fname2), str(fname3)]) |
| 195 | coder.repo.get_tracked_files = mock |
| 196 | |
| 197 | # Check that file mentions of a pure basename skips files with duplicate basenames |
| 198 | mentioned = coder.get_file_mentions(f"Check {fname2.name} and {fname3}") |
| 199 | self.assertEqual(mentioned, {str(fname3)}) |
| 200 | |
| 201 | # Add a read-only file with same basename |
| 202 | coder.abs_read_only_fnames.add(str(fname2.resolve())) |
| 203 | mentioned = coder.get_file_mentions(f"Check {fname1} and {fname3}") |
| 204 | self.assertEqual(mentioned, {str(fname3)}) |
| 205 | |
| 206 | def test_check_for_file_mentions_read_only(self): |
| 207 | with GitTemporaryDirectory(): |
nothing calls this directly
no test coverage detected