Skip to content

Commit f9ca635

Browse files
authored
Merge branch 'main' into devs/jd/add-run-id/I2a2e20331980c59a9f06aea89c11ac4d67542fd0
2 parents f7166f9 + 1b38678 commit f9ca635

File tree

2 files changed

+47
-9
lines changed

2 files changed

+47
-9
lines changed

mergify_cli/ci/upload.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def capture_log(logger: logging.Logger) -> typing.Generator[io.StringIO, None, N
3535
stream_handler.close()
3636

3737

38-
def _upload(
38+
def upload_spans(
3939
api_url: str,
4040
token: str,
4141
repository: str,
@@ -93,8 +93,12 @@ async def upload( # noqa: PLR0913, PLR0917
9393
)
9494

9595
if spans:
96-
_upload(api_url, token, repository, spans)
97-
connect_traces(spans)
98-
console.log("[green]:tada: File(s) uploaded[/]")
96+
try:
97+
upload_spans(api_url, token, repository, spans)
98+
except UploadError as e:
99+
console.log(f"Error uploading spans: {e}", style="red")
100+
else:
101+
connect_traces(spans)
102+
console.log("[green]:tada: File(s) uploaded[/]")
99103
else:
100104
console.log("[orange]No tests were detected in the JUnit file(s)[/]")

mergify_cli/tests/ci/test_upload.py

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import pathlib
22
import re
33

4+
from opentelemetry.sdk.trace import ReadableSpan
5+
import opentelemetry.trace.span
46
import pytest
57
import responses
68

@@ -66,22 +68,54 @@ async def test_junit_upload(
6668
captured.out,
6769
re.MULTILINE,
6870
)
69-
else:
70-
assert "🎉 File(s) uploaded" in captured.out
71+
72+
assert "🎉 File(s) uploaded" in captured.out
7173

7274

7375
@responses.activate(assert_all_requests_are_fired=True)
74-
async def test_junit_upload_http_error() -> None:
76+
def test_junit_upload_http_error() -> None:
7577
responses.post(
7678
"https://api.mergify.com/v1/repos/user/repo/ci/traces",
7779
status=422,
7880
json={"detail": "Not enabled on this repository"},
7981
)
8082

8183
with pytest.raises(upload.UploadError):
82-
await upload.upload(
84+
upload.upload_spans(
8385
"https://api.mergify.com",
8486
"token",
8587
"user/repo",
86-
(str(REPORT_XML),),
88+
[
89+
ReadableSpan(
90+
name="hello",
91+
context=opentelemetry.trace.span.SpanContext(
92+
trace_id=1234,
93+
span_id=324,
94+
is_remote=False,
95+
),
96+
),
97+
],
8798
)
99+
100+
101+
@responses.activate(assert_all_requests_are_fired=True)
102+
async def test_junit_upload_http_error_console(
103+
capsys: pytest.CaptureFixture[str],
104+
) -> None:
105+
responses.post(
106+
"https://api.mergify.com/v1/repos/user/repo/ci/traces",
107+
status=422,
108+
json={"detail": "Not enabled on this repository"},
109+
)
110+
111+
await upload.upload(
112+
"https://api.mergify.com",
113+
"token",
114+
"user/repo",
115+
(str(REPORT_XML),),
116+
)
117+
captured = capsys.readouterr()
118+
assert (
119+
'Error uploading spans: Failed to export batch code: 422, reason: {"detail": "Not\nenabled on this repository"}'
120+
in captured.out
121+
)

0 commit comments

Comments
 (0)