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

Commit 410389e

Browse files
Improve label analysis messages (#217)
In particular we will now include the `external_id` of the label analysis request object (so it's easier to find in the logs), and the processing errors that happened in label analysis task. So the user can better self-support. I also moved the message about the labels to run from the python runner to the command in general because it's something the user would like to see in general.
1 parent c824408 commit 410389e

File tree

2 files changed

+53
-38
lines changed

2 files changed

+53
-38
lines changed

codecov_cli/commands/labelanalysis.py

Lines changed: 53 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ def label_analysis(
7474
token="NOTOKEN" if not token else (str(token)[:1] + 18 * "*"),
7575
runner_name=runner_name,
7676
enterprise_url=enterprise_url,
77+
max_wait_time=max_wait_time,
78+
dry_run=dry_run,
7779
)
7880
),
7981
)
@@ -114,9 +116,9 @@ def label_analysis(
114116

115117
logger.info("Collecting labels...")
116118
requested_labels = runner.collect_tests()
117-
logger.info(f"Collected {len(requested_labels)} tests")
119+
logger.info(f"Collected {len(requested_labels)} test labels")
118120
logger.debug(
119-
"Labels collected.",
121+
"Labels collected",
120122
extra=dict(extra_log_attributes=dict(labels_collected=requested_labels)),
121123
)
122124
payload["requested_labels"] = requested_labels
@@ -135,7 +137,7 @@ def label_analysis(
135137
return
136138

137139
has_result = False
138-
logger.info("Label request sent. Waiting for result.")
140+
logger.info("Waiting for list of tests to run...")
139141
start_wait = time.monotonic()
140142
time.sleep(1)
141143
while not has_result:
@@ -164,43 +166,62 @@ def label_analysis(
164166
return
165167
if max_wait_time and (time.monotonic() - start_wait) > max_wait_time:
166168
logger.error(
167-
f"Exceeded max waiting time of {max_wait_time} seconds",
169+
f"Exceeded max waiting time of {max_wait_time} seconds. Running all tests.",
168170
)
169171
_fallback_to_collected_labels(
170172
collected_labels=requested_labels, runner=runner, dry_run=dry_run
171173
)
172174
return
173-
logger.info("Waiting more time for result")
175+
logger.info("Waiting more time for result...")
174176
time.sleep(5)
175177

176178

177179
def _potentially_calculate_absent_labels(
178180
request_result, requested_labels
179181
) -> LabelAnalysisRequestResult:
182+
logger.info(
183+
"Received list of tests from Codecov",
184+
extra=dict(processing_errors=request_result.get("errors", [])),
185+
)
180186
if request_result["absent_labels"]:
181187
# This means that Codecov already calculated everything for us
182-
return LabelAnalysisRequestResult(request_result)
183-
# Here we have to calculate the absent labels
184-
# And also remove labels that maybe don't exist anymore from the set of labels to test
185-
# Because codecov didn't have this info previously
186-
requested_labels_set = set(requested_labels)
187-
present_diff_labels_set = set(request_result.get("present_diff_labels", []))
188-
present_report_labels_set = set(request_result.get("present_report_labels", []))
189-
global_level_labels_set = set(request_result.get("global_level_labels", []))
190-
return LabelAnalysisRequestResult(
191-
{
192-
"present_report_labels": sorted(
193-
present_report_labels_set & requested_labels_set
194-
),
195-
"present_diff_labels": sorted(
196-
present_diff_labels_set & requested_labels_set
197-
),
198-
"absent_labels": sorted(requested_labels_set - present_report_labels_set),
199-
"global_level_labels": sorted(
200-
global_level_labels_set & requested_labels_set
201-
),
202-
}
188+
final_result = LabelAnalysisRequestResult(request_result)
189+
else:
190+
# Here we have to calculate the absent labels
191+
# And also remove labels that maybe don't exist anymore from the set of labels to test
192+
# Because codecov didn't have this info previously
193+
requested_labels_set = set(requested_labels)
194+
present_diff_labels_set = set(request_result.get("present_diff_labels", []))
195+
present_report_labels_set = set(request_result.get("present_report_labels", []))
196+
global_level_labels_set = set(request_result.get("global_level_labels", []))
197+
final_result = LabelAnalysisRequestResult(
198+
{
199+
"present_report_labels": sorted(
200+
present_report_labels_set & requested_labels_set
201+
),
202+
"present_diff_labels": sorted(
203+
present_diff_labels_set & requested_labels_set
204+
),
205+
"absent_labels": sorted(
206+
requested_labels_set - present_report_labels_set
207+
),
208+
"global_level_labels": sorted(
209+
global_level_labels_set & requested_labels_set
210+
),
211+
}
212+
)
213+
logger.info(
214+
"Received information about tests to run",
215+
extra=dict(
216+
extra_log_attributes=dict(
217+
absent_labels=len(final_result.absent_labels),
218+
present_diff_labels=len(final_result.present_diff_labels),
219+
global_level_labels=len(final_result.global_level_labels),
220+
present_report_labels=len(final_result.present_report_labels),
221+
)
222+
),
203223
)
224+
return final_result
204225

205226

206227
def _patch_labels(payload, url, token_header):
@@ -248,7 +269,12 @@ def _send_labelanalysis_request(payload, url, token_header):
248269
)
249270
except requests.RequestException:
250271
raise click.ClickException(click.style("Unable to reach Codecov", fg="red"))
251-
return response.json()["external_id"]
272+
eid = response.json()["external_id"]
273+
logger.info(
274+
"Label Analysis request successful",
275+
extra=dict(extra_log_attributes=dict(request_id=eid)),
276+
)
277+
return eid
252278

253279

254280
def _dry_run_output(result: LabelAnalysisRequestResult):

codecov_cli/runners/python_standard_runner.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -189,17 +189,6 @@ def collect_tests(self):
189189

190190
def process_labelanalysis_result(self, result: LabelAnalysisRequestResult):
191191
default_options = [f"--cov={self.params.coverage_root}", "--cov-context=test"]
192-
logger.info(
193-
"Received information about tests to run",
194-
extra=dict(
195-
extra_log_attributes=dict(
196-
absent_labels=len(result.absent_labels),
197-
present_diff_labels=len(result.present_diff_labels),
198-
global_level_labels=len(result.global_level_labels),
199-
present_report_labels=len(result.present_report_labels),
200-
)
201-
),
202-
)
203192
all_labels = set(
204193
result.absent_labels
205194
+ result.present_diff_labels

0 commit comments

Comments
 (0)