From dbf0a771c2613cb95ed5e96e0df3bfbbeefc5bb8 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 22 Sep 2023 00:46:19 +0200 Subject: [PATCH] Close #390: Ignore !buildbot comment if no builder matches Also, match the regex anywhere in the builder name, not only at the start. --- master/custom/pr_testing.py | 17 +++++++++++++++-- master/custom/schedulers.py | 4 ++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/master/custom/pr_testing.py b/master/custom/pr_testing.py index ddb9b3b12..bb868f3af 100644 --- a/master/custom/pr_testing.py +++ b/master/custom/pr_testing.py @@ -255,6 +255,20 @@ def handle_issue_comment(self, payload, event): return ([], "git") builder_filter_fn = re.compile(builder_filter) + matched_builders = [ + builder + for builder in self.builder_names + if builder_filter_fn.search(builder) + ] + if not matched_builders: + log.msg(f"GitHub PR #{number}: regex {builder_filter!r} " + f"did not match any builder", logLevel=logging.DEBUG) + yield self._post_comment( + payload["issue"]["comments_url"], + "The regex {builder_filter!r} did not match any buildbot builder", + ) + return (changes, "git") + yield self._post_comment( payload["issue"]["comments_url"], BUILD_COMMAND_SCHEDULED_MESSAGE.format( @@ -264,8 +278,7 @@ def handle_issue_comment(self, payload, event): builders="\n".join( { f"- `{builder}`" - for builder in self.builder_names - if builder_filter_fn.match(builder) + for builder in matched_builders } ), ), diff --git a/master/custom/schedulers.py b/master/custom/schedulers.py index 35c5cc197..b59787457 100644 --- a/master/custom/schedulers.py +++ b/master/custom/schedulers.py @@ -26,9 +26,9 @@ def addBuildsetForChanges(self, **kwargs): builder_names = [ builder_name for builder_name in builder_names - if matcher.match(builder_name) + if matcher.search(builder_name) ] - log.msg("Bulder names filtered: {}".format(builder_names)) + log.msg(f"Builder names filtered: {builder_names}") kwargs.update(builderNames=builder_names) yield super().addBuildsetForChanges(**kwargs) return