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

Commit 098eb09

Browse files
Change default uploader + refactor upload service. (#99)
* Change default uploader + refactor upload service. The objective change in this commit is making the default value of `--use-new-uploader` option in the `do-upload` command `True` (so we use the new uploader by default). But it bothered me taht the upload logic - which is the same between new and old upload endpoints, differing only in the upload sender - was in a module `services.legacy_upload`. So I moved all files to `services.upload` and put the legacy upload sender in `services.upload.legacy_upload_sender`, and that is as of now the only truly legacy thing in the odecov-cli upload service process. * Make `use-legacy-upload` a flag option. Now adding `--use-legacy-uploader` to the `do-upload` command will use the legacy upload sender. Otherwise the upload sender will be used.
1 parent d1c8b16 commit 098eb09

File tree

13 files changed

+222
-135
lines changed

13 files changed

+222
-135
lines changed

codecov_cli/commands/upload.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from codecov_cli.fallbacks import CodecovOption, FallbackFieldEnum
1010
from codecov_cli.helpers.git import GitService
11-
from codecov_cli.services.legacy_upload import do_upload_logic
11+
from codecov_cli.services.upload import do_upload_logic
1212

1313
logger = logging.getLogger("codecovcli")
1414

@@ -161,7 +161,13 @@ def _turn_env_vars_into_dict(ctx, params, value):
161161
is_flag=True,
162162
help="Don't upload files to Codecov",
163163
)
164-
@click.option("--use-new-uploader", "is_using_new_uploader", default=False)
164+
@click.option(
165+
"--legacy",
166+
"--use-legacy-uploader",
167+
"use_legacy_uploader",
168+
is_flag=True,
169+
help="Use the legacy upload endpoint",
170+
)
165171
@click.option(
166172
"--git-service",
167173
cls=CodecovOption,
@@ -188,7 +194,7 @@ def do_upload(
188194
branch: typing.Optional[str],
189195
slug: typing.Optional[str],
190196
pull_request_number: typing.Optional[str],
191-
is_using_new_uploader: bool,
197+
use_legacy_uploader: bool,
192198
fail_on_error: bool,
193199
dry_run: bool,
194200
git_service: typing.Optional[str],
@@ -243,7 +249,7 @@ def do_upload(
243249
branch=branch,
244250
slug=slug,
245251
pull_request_number=pull_request_number,
246-
is_using_new_uploader=is_using_new_uploader,
252+
use_legacy_uploader=use_legacy_uploader,
247253
fail_on_error=fail_on_error,
248254
dry_run=dry_run,
249255
git_service=git_service,

codecov_cli/services/legacy_upload/__init__.py

Lines changed: 0 additions & 101 deletions
This file was deleted.
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
import logging
2+
import typing
3+
import uuid
4+
from pathlib import Path
5+
6+
import click
7+
8+
from codecov_cli.fallbacks import FallbackFieldEnum
9+
from codecov_cli.helpers.ci_adapters.base import CIAdapterBase
10+
from codecov_cli.helpers.request import log_warnings_and_errors_if_any
11+
from codecov_cli.helpers.versioning_systems import VersioningSystemInterface
12+
from codecov_cli.plugins import select_preparation_plugins
13+
from codecov_cli.services.upload.coverage_file_finder import select_coverage_file_finder
14+
from codecov_cli.services.upload.legacy_upload_sender import LegacyUploadSender
15+
from codecov_cli.services.upload.network_finder import select_network_finder
16+
from codecov_cli.services.upload.upload_collector import UploadCollector
17+
from codecov_cli.services.upload.upload_sender import UploadSender
18+
from codecov_cli.types import RequestResult
19+
20+
logger = logging.getLogger("codecovcli")
21+
22+
23+
def do_upload_logic(
24+
cli_config: typing.Dict,
25+
versioning_system: VersioningSystemInterface,
26+
ci_adapter: CIAdapterBase,
27+
*,
28+
commit_sha: str,
29+
report_code: str,
30+
build_code: typing.Optional[str],
31+
build_url: typing.Optional[str],
32+
job_code: typing.Optional[str],
33+
env_vars: typing.Dict[str, str],
34+
flags: typing.List[str],
35+
name: typing.Optional[str],
36+
network_root_folder: Path,
37+
coverage_files_search_root_folder: Path,
38+
coverage_files_search_exclude_folders: typing.List[Path],
39+
coverage_files_search_explicitly_listed_files: typing.List[Path],
40+
plugin_names: typing.List[str],
41+
token: uuid.UUID,
42+
branch: typing.Optional[str],
43+
slug: typing.Optional[str],
44+
pull_request_number: typing.Optional[str],
45+
use_legacy_uploader: bool = False,
46+
fail_on_error: bool = False,
47+
dry_run: bool = False,
48+
git_service: typing.Optional[str],
49+
):
50+
preparation_plugins = select_preparation_plugins(cli_config, plugin_names)
51+
coverage_file_selector = select_coverage_file_finder(
52+
coverage_files_search_root_folder,
53+
coverage_files_search_exclude_folders,
54+
coverage_files_search_explicitly_listed_files,
55+
)
56+
network_finder = select_network_finder(versioning_system)
57+
collector = UploadCollector(
58+
preparation_plugins, network_finder, coverage_file_selector
59+
)
60+
upload_data = collector.generate_upload_data()
61+
if use_legacy_uploader:
62+
sender = LegacyUploadSender()
63+
else:
64+
sender = UploadSender()
65+
logger.debug(f"Selected uploader to use: {type(sender)}")
66+
ci_service = (
67+
ci_adapter.get_fallback_value(FallbackFieldEnum.service)
68+
if ci_adapter is not None
69+
else None
70+
)
71+
72+
if not dry_run:
73+
sending_result = sender.send_upload_data(
74+
upload_data,
75+
commit_sha,
76+
token,
77+
env_vars,
78+
report_code,
79+
name,
80+
branch,
81+
slug,
82+
pull_request_number,
83+
build_code,
84+
build_url,
85+
job_code,
86+
flags,
87+
ci_service,
88+
git_service,
89+
)
90+
else:
91+
logger.info("dry-run option activated. NOT sending data to Codecov.")
92+
sending_result = RequestResult(
93+
error=None,
94+
warnings=None,
95+
status_code=200,
96+
text="Data NOT sent to Codecov because of dry-run option",
97+
)
98+
log_warnings_and_errors_if_any(sending_result, "Upload", fail_on_error)
99+
return sending_result

codecov_cli/services/legacy_upload/upload_collector.py renamed to codecov_cli/services/upload/upload_collector.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
from collections import namedtuple
77
from fnmatch import fnmatch
88

9-
from codecov_cli.services.legacy_upload.coverage_file_finder import CoverageFileFinder
10-
from codecov_cli.services.legacy_upload.network_finder import NetworkFinder
9+
from codecov_cli.services.upload.coverage_file_finder import CoverageFileFinder
10+
from codecov_cli.services.upload.network_finder import NetworkFinder
1111
from codecov_cli.types import (
1212
PreparationPluginInterface,
1313
UploadCollectionResult,

tests/helpers/test_legacy_upload_sender.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from responses import matchers
77

88
from codecov_cli import __version__ as codecov_cli_version
9-
from codecov_cli.services.legacy_upload.upload_sender import LegacyUploadSender
9+
from codecov_cli.services.upload.legacy_upload_sender import LegacyUploadSender
1010
from codecov_cli.types import UploadCollectionResult
1111
from tests.data import reports_examples
1212

@@ -243,7 +243,7 @@ def test_generate_network_section_empty_result(self):
243243
def test_format_coverage_file(self, mocker):
244244
fake_result_file = mocker.MagicMock()
245245
mocker.patch(
246-
"codecov_cli.services.legacy_upload.upload_sender.UploadCollectionResultFile",
246+
"codecov_cli.services.upload.upload_sender.UploadCollectionResultFile",
247247
return_value=fake_result_file,
248248
)
249249

@@ -269,7 +269,7 @@ def test_format_coverage_file(self, mocker):
269269
def test_generate_coverage_files_section(self, mocker):
270270

271271
mocker.patch(
272-
"codecov_cli.services.legacy_upload.LegacyUploadSender._format_coverage_file",
272+
"codecov_cli.services.upload.LegacyUploadSender._format_coverage_file",
273273
side_effect=lambda file_bytes: file_bytes,
274274
)
275275

@@ -290,15 +290,15 @@ def test_generate_coverage_files_section(self, mocker):
290290

291291
def test_generate_payload_overall(self, mocker):
292292
mocker.patch(
293-
"codecov_cli.services.legacy_upload.LegacyUploadSender._generate_env_vars_section",
293+
"codecov_cli.services.upload.LegacyUploadSender._generate_env_vars_section",
294294
return_value=reports_examples.env_section,
295295
)
296296
mocker.patch(
297-
"codecov_cli.services.legacy_upload.LegacyUploadSender._generate_network_section",
297+
"codecov_cli.services.upload.LegacyUploadSender._generate_network_section",
298298
return_value=reports_examples.network_section,
299299
)
300300
mocker.patch(
301-
"codecov_cli.services.legacy_upload.LegacyUploadSender._generate_coverage_files_section",
301+
"codecov_cli.services.upload.LegacyUploadSender._generate_coverage_files_section",
302302
return_value=reports_examples.coverage_file_section_simple,
303303
)
304304

tests/helpers/test_network_finder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import pytest
44

5-
from codecov_cli.services.legacy_upload.network_finder import NetworkFinder
5+
from codecov_cli.services.upload.network_finder import NetworkFinder
66

77

88
def test_find_files(mocker, tmp_path):

tests/test_coverage_file_finder.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
from pathlib import Path
22

3-
from codecov_cli.services.legacy_upload.coverage_file_finder import CoverageFileFinder
3+
from codecov_cli.services.upload.coverage_file_finder import CoverageFileFinder
44
from codecov_cli.types import UploadCollectionResultFile
55

66

77
class TestCoverageFileFinder(object):
88
def test_find_coverage_files_mocked_search_files(self, mocker):
99
mocker.patch(
10-
"codecov_cli.services.legacy_upload.coverage_file_finder.search_files",
10+
"codecov_cli.services.upload.coverage_file_finder.search_files",
1111
return_value=[],
1212
)
1313
assert CoverageFileFinder().find_coverage_files() == []
@@ -18,7 +18,7 @@ def test_find_coverage_files_mocked_search_files(self, mocker):
1818
]
1919

2020
mocker.patch(
21-
"codecov_cli.services.legacy_upload.coverage_file_finder.search_files",
21+
"codecov_cli.services.upload.coverage_file_finder.search_files",
2222
return_value=coverage_files_paths,
2323
)
2424

0 commit comments

Comments
 (0)