Skip to content

Commit 3468742

Browse files
committed
add error annotations
1 parent 54d123f commit 3468742

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

‎Lib/test/libregrtest/main.py‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@
3030
get_process_memory_usage, EXIT_TIMEOUT)
3131

3232

33+
def github_error(title: str, message: str) -> None:
34+
# Emit a GitHub Actions error annotation (workflow command)
35+
def escape(text: str) -> str:
36+
return (text.replace("%", "%25").replace("\r", "%0D")
37+
.replace("\n", "%0A"))
38+
title = escape(title).replace(":", "%3A").replace(",", "%2C")
39+
print(f"::error title={title}::{escape(message)}", flush=True)
40+
41+
3342
class Regrtest:
3443
"""Execute a test suite.
3544
@@ -504,10 +513,14 @@ def write(text: str) -> None:
504513
f"{count(ncase, 'test case')} failed")
505514
for result, result_cases in zip(failed, cases):
506515
write(f"### {decolor(str(result))}")
516+
if not result_cases:
517+
github_error(result.test_name, decolor(str(result)))
507518
if result.env_changed_reasons:
508519
write("\n".join(f"- {reason}"
509520
for reason in result.env_changed_reasons))
510521
for name, traceback in result_cases:
522+
github_error(f"{result.test_name}: {name}",
523+
decolor(traceback))
511524
# Expand short tracebacks when there are only a few
512525
is_open = ncase <= 5 and traceback.count("\n") < 30
513526
write(f"<details{' open' if is_open else ''}>"

0 commit comments

Comments
 (0)