Skip to content
This repository was archived by the owner on Jul 16, 2025. It is now read-only.

Commit f2b75b3

Browse files
fix: add list_relevant_files to NoVersioningSystem (#665)
* fix: add list_relevant_files to NoVersioningSystem * fix: address comments * fix: make it nicer looking * fix: unknown number of files * fix: make it more than 1 * fix: make constants
1 parent 6533a8c commit f2b75b3

File tree

2 files changed

+69
-6
lines changed

2 files changed

+69
-6
lines changed

codecov_cli/helpers/versioning_systems.py

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from itertools import chain
12
import logging
23
import subprocess
34
import typing as t
@@ -10,6 +11,41 @@
1011

1112
logger = logging.getLogger("codecovcli")
1213

14+
IGNORE_DIRS = [
15+
'*.egg-info',
16+
'.DS_Store',
17+
'.circleci',
18+
'.env',
19+
'.envs',
20+
'.git',
21+
'.gitignore',
22+
'.mypy_cache',
23+
'.nvmrc',
24+
'.nyc_output',
25+
'.ruff_cache',
26+
'.venv',
27+
'.venvns',
28+
'.virtualenv',
29+
'.virtualenvs',
30+
'__pycache__',
31+
'bower_components',
32+
'build/lib/',
33+
'jspm_packages',
34+
'node_modules',
35+
'vendor',
36+
'virtualenv',
37+
'virtualenvs',
38+
]
39+
40+
IGNORE_PATHS = [
41+
'*.gif',
42+
'*.jpeg',
43+
'*.jpg',
44+
'*.md',
45+
'*.png',
46+
'shunit2*',
47+
]
48+
1349

1450
class VersioningSystemInterface(ABC):
1551
def __repr__(self) -> str:
@@ -161,4 +197,18 @@ def get_fallback_value(self, fallback_field: FallbackFieldEnum):
161197
def list_relevant_files(
162198
self, directory: t.Optional[Path] = None, recurse_submodules: bool = False
163199
) -> t.List[str]:
164-
return []
200+
dir_to_use = directory or self.get_network_root()
201+
if dir_to_use is None:
202+
raise ValueError("Can't determine root folder")
203+
204+
cmd = [
205+
"find",
206+
dir_to_use,
207+
*chain.from_iterable(["-name", block, "-prune", "-o"] for block in IGNORE_DIRS),
208+
*chain.from_iterable(["-path", block, "-prune", "-o"] for block in IGNORE_PATHS),
209+
"-type",
210+
"f",
211+
"-print",
212+
]
213+
res = subprocess.run(cmd, capture_output=True)
214+
return [filename for filename in res.stdout.decode("unicode_escape").strip().split("\n") if filename]

tests/services/upload/test_upload_collector.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -194,13 +194,26 @@ def test_generate_upload_data_with_none_network(
194194
res = collector.generate_upload_data()
195195

196196
mock_logger.debug.assert_any_call("Collecting relevant files")
197-
mock_logger.debug.assert_any_call(
198-
"Found 0 network files to report, (0 without filtering)"
199-
)
200197

201198
mock_logger.info.assert_any_call("Found 1 coverage files to report")
202199
mock_logger.info.assert_any_call("> {}".format(tmp_path / "coverage.xml"))
203200

204-
assert res.network == []
201+
assert len(res.network) > 1
205202
assert len(res.files) == 1
206-
assert len(res.file_fixes) == 0
203+
assert len(res.file_fixes) > 1
204+
205+
@patch("codecov_cli.services.upload.upload_collector.logger")
206+
@patch.object(GitVersioningSystem, "get_network_root", return_value=None)
207+
def test_generate_network_with_no_versioning_system(
208+
mock_get_network_root, mock_logger, tmp_path
209+
):
210+
versioning_system = NoVersioningSystem()
211+
found_files = versioning_system.list_relevant_files()
212+
assert len(found_files) > 1
213+
214+
found_files = versioning_system.list_relevant_files(tmp_path)
215+
assert len(found_files) == 0
216+
217+
(tmp_path / "coverage.xml").touch()
218+
found_files = versioning_system.list_relevant_files(tmp_path)
219+
assert len(found_files) == 1

0 commit comments

Comments
 (0)