Skip to content

Commit c590584

Browse files
fix: update user file search (#390)
1 parent 618a641 commit c590584

2 files changed

Lines changed: 48 additions & 6 deletions

File tree

codecov_cli/services/upload/file_finder.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,13 @@
180180
class FileFinder(object):
181181
def __init__(
182182
self,
183-
project_root: Path = None,
183+
search_root: Path = None,
184184
folders_to_ignore: typing.List[str] = None,
185185
explicitly_listed_files: typing.List[Path] = None,
186186
disable_search: bool = False,
187187
report_type: str = "coverage",
188188
):
189-
self.project_root = project_root or Path(os.getcwd())
189+
self.search_root = search_root or Path(os.getcwd())
190190
self.folders_to_ignore = folders_to_ignore or []
191191
self.explicitly_listed_files = explicitly_listed_files or None
192192
self.disable_search = disable_search
@@ -207,7 +207,7 @@ def find_files(self) -> typing.List[UploadCollectionResultFile]:
207207
if not self.disable_search:
208208
regex_patterns_to_include = globs_to_regex(files_patterns)
209209
files_paths = search_files(
210-
self.project_root,
210+
self.search_root,
211211
default_folders_to_ignore + self.folders_to_ignore,
212212
filename_include_regex=regex_patterns_to_include,
213213
filename_exclude_regex=regex_patterns_to_exclude,
@@ -243,16 +243,17 @@ def get_user_specified_files(self, regex_patterns_to_exclude):
243243
)
244244
user_files_paths = list(
245245
search_files(
246-
self.project_root,
247-
default_folders_to_ignore + self.folders_to_ignore,
246+
self.search_root,
247+
self.folders_to_ignore,
248248
filename_include_regex=regex_patterns_to_include,
249249
filename_exclude_regex=regex_patterns_to_exclude,
250250
multipart_include_regex=multipart_include_regex,
251251
)
252252
)
253253
not_found_files = []
254+
user_files_paths_resolved = [path.resolve() for path in user_files_paths]
254255
for filepath in self.explicitly_listed_files:
255-
if filepath.resolve() not in user_files_paths:
256+
if filepath.resolve() not in user_files_paths_resolved:
256257
not_found_files.append(filepath)
257258

258259
if not_found_files:

tests/services/upload/test_coverage_file_finder.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,10 @@ def test_find_coverage_files_with_existing_files(self):
179179
self.project_root / "coverage.xml",
180180
self.project_root / "subdirectory" / "test_coverage.xml",
181181
self.project_root / "other_file.txt",
182+
self.project_root / ".tox" / "another_file.abc",
182183
]
183184
(self.project_root / "subdirectory").mkdir()
185+
(self.project_root / ".tox").mkdir()
184186
for file in coverage_files:
185187
file.touch()
186188

@@ -208,8 +210,10 @@ def test_find_coverage_files_with_disabled_search(self):
208210
self.project_root / "subdirectory" / "another_file.abc",
209211
self.project_root / "subdirectory" / "test_coverage.xml",
210212
self.project_root / "other_file.txt",
213+
self.project_root / ".tox" / "another_file.abc",
211214
]
212215
(self.project_root / "subdirectory").mkdir()
216+
(self.project_root / ".tox").mkdir()
213217
for file in coverage_files:
214218
file.touch()
215219

@@ -237,8 +241,10 @@ def test_find_coverage_files_with_user_specified_files(self):
237241
self.project_root / "subdirectory" / "test_coverage.xml",
238242
self.project_root / "test_file.abc",
239243
self.project_root / "subdirectory" / "another_file.abc",
244+
self.project_root / ".tox" / "another_file.abc",
240245
]
241246
(self.project_root / "subdirectory").mkdir()
247+
(self.project_root / ".tox").mkdir()
242248
for file in coverage_files:
243249
file.touch()
244250

@@ -264,8 +270,10 @@ def test_find_coverage_files_with_user_specified_files_not_found(self):
264270
coverage_files = [
265271
self.project_root / "coverage.xml",
266272
self.project_root / "subdirectory" / "test_coverage.xml",
273+
self.project_root / ".tox" / "another_file.abc",
267274
]
268275
(self.project_root / "subdirectory").mkdir()
276+
(self.project_root / ".tox").mkdir()
269277
for file in coverage_files:
270278
file.touch()
271279

@@ -286,3 +294,36 @@ def test_find_coverage_files_with_user_specified_files_not_found(self):
286294
]
287295
expected_paths = sorted([file.get_filename() for file in expected])
288296
self.assertEqual(result, expected_paths)
297+
298+
def test_find_coverage_files_with_user_specified_files_in_default_ignored_folder(self):
299+
# Create some sample coverage files
300+
coverage_files = [
301+
self.project_root / "coverage.xml",
302+
self.project_root / "subdirectory" / "test_coverage.xml",
303+
self.project_root / "test_file.abc",
304+
self.project_root / "subdirectory" / "another_file.abc",
305+
self.project_root / ".tox" / "another_file.abc",
306+
]
307+
(self.project_root / "subdirectory").mkdir()
308+
(self.project_root / ".tox").mkdir()
309+
for file in coverage_files:
310+
file.touch()
311+
312+
self.coverage_file_finder.explicitly_listed_files = [
313+
self.project_root / ".tox" / "another_file.abc",
314+
]
315+
result = sorted(
316+
[file.get_filename() for file in self.coverage_file_finder.find_files()]
317+
)
318+
319+
expected = [
320+
UploadCollectionResultFile(Path(f"{self.project_root}/coverage.xml")),
321+
UploadCollectionResultFile(
322+
Path(f"{self.project_root}/subdirectory/test_coverage.xml")
323+
),
324+
UploadCollectionResultFile(
325+
Path(f"{self.project_root}/.tox/another_file.abc")
326+
),
327+
]
328+
expected_paths = sorted([file.get_filename() for file in expected])
329+
self.assertEqual(result, expected_paths)

0 commit comments

Comments
 (0)