From 7f0e6aeb372f1e16165f92e7b372e650b819fe2b Mon Sep 17 00:00:00 2001 From: mrT23 Date: Mon, 12 Aug 2024 20:57:32 +0300 Subject: [PATCH 1/2] Add conditional checks for review label settings in set_review_labels method --- pr_agent/tools/pr_reviewer.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pr_agent/tools/pr_reviewer.py b/pr_agent/tools/pr_reviewer.py index c689c9c9f..41f6287a9 100644 --- a/pr_agent/tools/pr_reviewer.py +++ b/pr_agent/tools/pr_reviewer.py @@ -378,6 +378,11 @@ def set_review_labels(self, data): if not get_settings().config.publish_output: return + if not get_settings().pr_reviewer.require_estimate_effort_to_review: + get_settings().pr_reviewer.enable_review_labels_effort = False # we did not generate this output + if not get_settings().pr_reviewer.require_security_review: + get_settings().pr_reviewer.enable_review_labels_security = False # we did not generate this output + if (get_settings().pr_reviewer.enable_review_labels_security or get_settings().pr_reviewer.enable_review_labels_effort): try: From 8589941ffe97b7b1bcb5ae399ab9ed0a8a173131 Mon Sep 17 00:00:00 2001 From: mrT23 Date: Mon, 12 Aug 2024 21:15:26 +0300 Subject: [PATCH 2/2] Improve Bitbucket diff handling for new and deleted files and add error protection for missing file links --- pr_agent/git_providers/bitbucket_provider.py | 22 ++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/pr_agent/git_providers/bitbucket_provider.py b/pr_agent/git_providers/bitbucket_provider.py index 4868754b4..ecc42cfb9 100644 --- a/pr_agent/git_providers/bitbucket_provider.py +++ b/pr_agent/git_providers/bitbucket_provider.py @@ -150,16 +150,20 @@ def get_diff_files(self) -> list[FilePatchInfo]: return [] # bitbucket diff has a header for each file, we need to remove it: # "diff --git filename + # new file mode 100644 (optional) # index caa56f0..61528d7 100644 # --- a/pr_agent/cli_pip.py # +++ b/pr_agent/cli_pip.py # @@ -... @@" for i, _ in enumerate(diff_split): diff_split_lines = diff_split[i].splitlines() - if (len(diff_split_lines) > 5 and - diff_split_lines[2].startswith("---") and - diff_split_lines[3].startswith("+++") and - diff_split_lines[4].startswith("@@")): + if (len(diff_split_lines) >= 6) and \ + ((diff_split_lines[2].startswith("---") and + diff_split_lines[3].startswith("+++") and + diff_split_lines[4].startswith("@@")) or + (diff_split_lines[3].startswith("---") and # new or deleted file + diff_split_lines[4].startswith("+++") and + diff_split_lines[5].startswith("@@"))): diff_split[i] = "\n".join(diff_split_lines[4:]) else: get_logger().error(f"Error - failed to remove the bitbucket header from diff {i}") @@ -173,8 +177,14 @@ def get_diff_files(self) -> list[FilePatchInfo]: continue try: - original_file_content_str = self._get_pr_file_content(diff.old.get_data("links")['self']['href']) - new_file_content_str = self._get_pr_file_content(diff.new.get_data("links")['self']['href']) + if diff.old.get_data("links"): + original_file_content_str = self._get_pr_file_content(diff.old.get_data("links")['self']['href']) + else: + original_file_content_str = "" + if diff.new.get_data("links"): + new_file_content_str = self._get_pr_file_content(diff.new.get_data("links")['self']['href']) + else: + new_file_content_str = "" except Exception as e: get_logger().exception(f"Error - bitbucket failed to get file content, error: {e}") original_file_content_str = ""