From c10fa117dec7b9f565748b45c6c0beb047a40c43 Mon Sep 17 00:00:00 2001 From: Pauli Virtanen Date: Mon, 15 Sep 2025 21:54:18 +0300 Subject: [PATCH 1/2] Include link to PR page in emails, for full logs Add link to test PR page in sent email, so that the full test log can be found if needed. --- ci.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ci.py b/ci.py index 8c8ff97..ea4bda0 100755 --- a/ci.py +++ b/ci.py @@ -80,6 +80,8 @@ def parse_args(): {content} +{test_log_link} + --- Regards, Linux Bluetooth @@ -122,9 +124,11 @@ def get_receivers(email_config, submitter): def send_email(ci_data, content): headers = {} email_config = ci_data.config['email'] + pr = ci_data.gh.get_pr(ci_data.config['pr_num'], force=True) body = EMAIL_MESSAGE.format(pw_link=ci_data.series['web_url'], - content=content) + content=content, + test_log_link=f"{pr.html_url}/checks") headers['In-Reply-To'] = ci_data.patch_1['msgid'] headers['References'] = ci_data.patch_1['msgid'] From da217e3e63ecb3c5d28bf8940f4582433e4724aa Mon Sep 17 00:00:00 2001 From: Pauli Virtanen Date: Mon, 15 Sep 2025 22:07:06 +0300 Subject: [PATCH 2/2] Include more context for kernel BUG/WARNING/etc Getting kernel BUG:, WARNING: etc is generally no-go, so include more context already in the email/post test summary. --- ci/testrunner.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ci/testrunner.py b/ci/testrunner.py index 1db1215..3aeb3fa 100755 --- a/ci/testrunner.py +++ b/ci/testrunner.py @@ -75,7 +75,8 @@ def run(self): failed_tc = [] # verdict result - for line in stdout_clean.splitlines(): + lines = stdout_clean.splitlines() + for lineno, line in enumerate(lines): if re.search(r"^Total: ", line): self.test_summary = line @@ -113,7 +114,14 @@ def run(self): if re.search(r"^(BUG:|WARNING:|general protection fault|Kernel panic)", line): bug = line - self.add_failure(line) + splat = lines[lineno:lineno+40] + for j, splatline in enumerate(splat): + if '' in splatline or '---[ end trace' in splatline: + splat = splat[:j] + break + else: + splat = splat + ["..."] + self.add_failure("\n".join(splat)) if re.search(r"^Test Summary", line): self.log_dbg("Start to check fail in the line")