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

Commit b09d63c

Browse files
authored
add --toc-recurse-submodules argument (#650)
1 parent b8e5fc6 commit b09d63c

File tree

15 files changed

+83
-13
lines changed

15 files changed

+83
-13
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ Codecov-cli supports user input. These inputs, along with their descriptions and
170170
|-s, --dir, --coverage-files-search-root-folder | Folder where to search for coverage files default: (Current Working Directory) | Optional
171171
|--exclude, --coverage-files-search-exclude-folder | Folders to exclude from search | Optional
172172
|-f, --file, --coverage-files-search-direct-file | Explicit files to upload | Optional
173+
|--recurse-submodules | Whether to enumerate files inside of submodules for path-fixing purposes. Off by default. | Optional
173174
|--disable-search | Disable search for coverage files. This is helpful when specifying what files you want to upload with the --file option.| Optional
174175
|-b, --build, --build-code | Specify the build number manually | Optional
175176
|--build-url | The URL of the build where this is running | Optional

codecov_cli/commands/upload.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ def _turn_env_vars_into_dict(ctx, params, value):
6666
multiple=True,
6767
default=[],
6868
),
69+
click.option(
70+
"--recurse-submodules",
71+
help="Whether to enumerate files inside of submodules for path-fixing purposes. Off by default.",
72+
is_flag=True,
73+
default=False,
74+
),
6975
click.option(
7076
"--disable-search",
7177
help="Disable search for coverage files. This is helpful when specifying what files you want to upload with the --file option.",
@@ -242,6 +248,7 @@ def do_upload(
242248
network_root_folder: pathlib.Path,
243249
plugin_names: typing.List[str],
244250
pull_request_number: typing.Optional[str],
251+
recurse_submodules: bool,
245252
report_type_str: str,
246253
slug: typing.Optional[str],
247254
swift_project: typing.Optional[str],
@@ -297,6 +304,7 @@ def do_upload(
297304
network_root_folder=network_root_folder,
298305
plugin_names=plugin_names,
299306
pull_request_number=pull_request_number,
307+
recurse_submodules=recurse_submodules,
300308
report_code=report_code,
301309
slug=slug,
302310
swift_project=swift_project,

codecov_cli/commands/upload_coverage.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def upload_coverage(
5656
parent_sha: typing.Optional[str],
5757
plugin_names: typing.List[str],
5858
pull_request_number: typing.Optional[str],
59+
recurse_submodules: bool,
5960
report_code: str,
6061
report_type_str: str,
6162
slug: typing.Optional[str],
@@ -115,6 +116,7 @@ def upload_coverage(
115116
parent_sha=parent_sha,
116117
plugin_names=plugin_names,
117118
pull_request_number=pull_request_number,
119+
recurse_submodules=recurse_submodules,
118120
report_code=report_code,
119121
slug=slug,
120122
swift_project=swift_project,
@@ -173,6 +175,7 @@ def upload_coverage(
173175
network_root_folder=network_root_folder,
174176
plugin_names=plugin_names,
175177
pull_request_number=pull_request_number,
178+
recurse_submodules=recurse_submodules,
176179
report_code=report_code,
177180
report_type_str=report_type_str,
178181
slug=slug,

codecov_cli/commands/upload_process.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def upload_process(
5454
parent_sha: typing.Optional[str],
5555
plugin_names: typing.List[str],
5656
pull_request_number: typing.Optional[str],
57+
recurse_submodules: bool,
5758
report_code: str,
5859
report_type_str: str,
5960
slug: typing.Optional[str],
@@ -122,6 +123,7 @@ def upload_process(
122123
network_root_folder=network_root_folder,
123124
plugin_names=plugin_names,
124125
pull_request_number=pull_request_number,
126+
recurse_submodules=recurse_submodules,
125127
report_code=report_code,
126128
report_type_str=report_type_str,
127129
slug=slug,

codecov_cli/helpers/versioning_systems.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def get_network_root(self) -> t.Optional[Path]:
2525

2626
@abstractmethod
2727
def list_relevant_files(
28-
self, directory: t.Optional[Path] = None
28+
self, directory: t.Optional[Path] = None, recurse_submodules: bool = False
2929
) -> t.Optional[t.List[str]]:
3030
pass
3131

@@ -125,14 +125,17 @@ def get_network_root(self):
125125
return Path(p.stdout.decode().rstrip())
126126
return None
127127

128-
def list_relevant_files(self, directory: t.Optional[Path] = None) -> t.List[str]:
128+
def list_relevant_files(
129+
self, directory: t.Optional[Path] = None, recurse_submodules: bool = False
130+
) -> t.List[str]:
129131
dir_to_use = directory or self.get_network_root()
130132
if dir_to_use is None:
131133
raise ValueError("Can't determine root folder")
132134

133-
res = subprocess.run(
134-
["git", "-C", str(dir_to_use), "ls-files"], capture_output=True
135-
)
135+
cmd = ["git", "-C", str(dir_to_use), "ls-files"]
136+
if recurse_submodules:
137+
cmd.append("--recurse-submodules")
138+
res = subprocess.run(cmd, capture_output=True)
136139

137140
return [
138141
(
@@ -155,5 +158,7 @@ def get_network_root(self):
155158
def get_fallback_value(self, fallback_field: FallbackFieldEnum):
156159
return None
157160

158-
def list_relevant_files(self, directory: t.Optional[Path] = None) -> t.List[str]:
161+
def list_relevant_files(
162+
self, directory: t.Optional[Path] = None, recurse_submodules: bool = False
163+
) -> t.List[str]:
159164
return []

codecov_cli/services/upload/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def do_upload_logic(
5656
parent_sha: typing.Optional[str] = None,
5757
plugin_names: typing.List[str],
5858
pull_request_number: typing.Optional[str],
59+
recurse_submodules: bool = False,
5960
report_code: str,
6061
slug: typing.Optional[str],
6162
swift_project: typing.Optional[str],
@@ -87,6 +88,7 @@ def do_upload_logic(
8788
)
8889
network_finder = select_network_finder(
8990
versioning_system,
91+
recurse_submodules=recurse_submodules,
9092
network_filter=network_filter,
9193
network_prefix=network_prefix,
9294
network_root_folder=network_root_folder,

codecov_cli/services/upload/network_finder.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,21 @@ class NetworkFinder(object):
88
def __init__(
99
self,
1010
versioning_system: VersioningSystemInterface,
11+
recurse_submodules: bool,
1112
network_filter: typing.Optional[str],
1213
network_prefix: typing.Optional[str],
1314
network_root_folder: pathlib.Path,
1415
):
1516
self.versioning_system = versioning_system
17+
self.recurse_submodules = recurse_submodules
1618
self.network_filter = network_filter
1719
self.network_prefix = network_prefix
1820
self.network_root_folder = network_root_folder
1921

2022
def find_files(self, ignore_filters=False) -> typing.List[str]:
21-
files = self.versioning_system.list_relevant_files(self.network_root_folder)
23+
files = self.versioning_system.list_relevant_files(
24+
self.network_root_folder, self.recurse_submodules
25+
)
2226

2327
if files and not ignore_filters:
2428
if self.network_filter:
@@ -31,12 +35,14 @@ def find_files(self, ignore_filters=False) -> typing.List[str]:
3135

3236
def select_network_finder(
3337
versioning_system: VersioningSystemInterface,
38+
recurse_submodules: bool,
3439
network_filter: typing.Optional[str],
3540
network_prefix: typing.Optional[str],
3641
network_root_folder: pathlib.Path,
3742
):
3843
return NetworkFinder(
3944
versioning_system,
45+
recurse_submodules,
4046
network_filter,
4147
network_prefix,
4248
network_root_folder,

codecov_cli/services/upload_coverage/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def upload_coverage_logic(
1616
build_code: typing.Optional[str],
1717
build_url: typing.Optional[str],
1818
commit_sha: str,
19+
recurse_submodules: bool,
1920
disable_file_fixes: bool,
2021
disable_search: bool,
2122
dry_run: bool,
@@ -58,6 +59,7 @@ def upload_coverage_logic(
5859
build_code=build_code,
5960
build_url=build_url,
6061
commit_sha=commit_sha,
62+
recurse_submodules=recurse_submodules,
6163
disable_file_fixes=disable_file_fixes,
6264
disable_search=disable_search,
6365
dry_run=dry_run,

codecovcli_commands

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ Options:
9393
specified files, please consider using
9494
--disable-search to disable uploading other
9595
files.
96+
--recurse-submodules Whether to enumerate files inside of
97+
submodules for path-fixing purposes. Off by
98+
default.
9699
--disable-search Disable search for coverage files. This is
97100
helpful when specifying what files you want
98101
to upload with the --file option.
@@ -274,6 +277,9 @@ Options:
274277
specified files, please consider using
275278
--disable-search to disable uploading other
276279
files.
280+
--recurse-submodules Whether to enumerate files inside of
281+
submodules for path-fixing purposes. Off by
282+
default.
277283
--disable-search Disable search for coverage files. This is
278284
helpful when specifying what files you want
279285
to upload with the --file option.
@@ -347,6 +353,9 @@ Options:
347353
specified files, please consider using
348354
--disable-search to disable uploading other
349355
files.
356+
--recurse-submodules Whether to enumerate files inside of
357+
submodules for path-fixing purposes. Off by
358+
default.
350359
--disable-search Disable search for coverage files. This is
351360
helpful when specifying what files you want
352361
to upload with the --file option.

tests/commands/test_invoke_upload_coverage.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ def test_upload_coverage_options(mocker):
9191
" wish to only upload the specified files,",
9292
" please consider using --disable-search to",
9393
" disable uploading other files.",
94+
" --recurse-submodules Whether to enumerate files inside of",
95+
" submodules for path-fixing purposes. Off by",
96+
" default.",
9497
" --disable-search Disable search for coverage files. This is",
9598
" helpful when specifying what files you want to",
9699
" upload with the --file option.",

0 commit comments

Comments
 (0)