From c4899a6c5403cfdac3589119bed227dba921e164 Mon Sep 17 00:00:00 2001 From: mrT23 Date: Wed, 15 Nov 2023 12:11:02 +0200 Subject: [PATCH] bitbucket --- pr_agent/algo/pr_processing.py | 2 +- pr_agent/git_providers/bitbucket_provider.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/pr_agent/algo/pr_processing.py b/pr_agent/algo/pr_processing.py index e5b6f59e..6063dece 100644 --- a/pr_agent/algo/pr_processing.py +++ b/pr_agent/algo/pr_processing.py @@ -282,7 +282,7 @@ def find_line_number_of_relevant_line_in_file(diff_files: List[FilePatchInfo], r"^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@[ ]?(.*)") for file in diff_files: - if file.filename.strip() == relevant_file: + if file.filename and (file.filename.strip() == relevant_file): patch = file.patch patch_lines = patch.splitlines() diff --git a/pr_agent/git_providers/bitbucket_provider.py b/pr_agent/git_providers/bitbucket_provider.py index 5d1d92d7..e2431645 100644 --- a/pr_agent/git_providers/bitbucket_provider.py +++ b/pr_agent/git_providers/bitbucket_provider.py @@ -153,18 +153,29 @@ class BitbucketProvider(GitProvider): self.diff_files = diff_files return diff_files + def get_latest_commit_url(self): + return self.pr.data['source']['commit']['links']['html']['href'] + + def get_comment_url(self, comment): + return comment.data['links']['html']['href'] + def publish_persistent_comment(self, pr_comment: str, initial_header: str, update_header: bool = True): try: for comment in self.pr.comments(): body = comment.raw if initial_header in body: + latest_commit_url = self.get_latest_commit_url() + comment_url = self.get_comment_url(comment) if update_header: - updated_header = f"{initial_header}\n\n ### (updated)\n" + updated_header = f"{initial_header}\n\n### (review updated until commit {latest_commit_url})\n" pr_comment_updated = pr_comment.replace(initial_header, updated_header) else: pr_comment_updated = pr_comment + get_logger().info(f"Persistent mode- updating comment {comment_url} to latest review message") d = {"content": {"raw": pr_comment_updated}} response = comment._update_data(comment.put(None, data=d)) + self.publish_comment( + f"**[Persistent review]({comment_url})** updated to latest commit {latest_commit_url}") return except Exception as e: get_logger().exception(f"Failed to update persistent review, error: {e}")