From f82b9620af77713d5ca156875e0f459586279e6c Mon Sep 17 00:00:00 2001 From: Phill Zarfos Date: Sun, 13 Aug 2023 18:25:11 -0400 Subject: [PATCH 1/3] Implement get_repo_settings for BitbucketProvider --- INSTALL.md | 1 + pr_agent/git_providers/bitbucket_provider.py | 9 ++++++++- pr_agent/git_providers/git_provider.py | 4 ++++ tests/unittest/test_bitbucket_provider.py | 10 ++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 tests/unittest/test_bitbucket_provider.py diff --git a/INSTALL.md b/INSTALL.md index 76a00671..3d03b2b6 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -92,6 +92,7 @@ pip install -r requirements.txt ``` cp pr_agent/settings/.secrets_template.toml pr_agent/settings/.secrets.toml +chmod 600 pr_agent/settings/.secrets.toml # Edit .secrets.toml file ``` diff --git a/pr_agent/git_providers/bitbucket_provider.py b/pr_agent/git_providers/bitbucket_provider.py index 07b92295..f4c54977 100644 --- a/pr_agent/git_providers/bitbucket_provider.py +++ b/pr_agent/git_providers/bitbucket_provider.py @@ -93,6 +93,13 @@ class BitbucketProvider: def get_issue_comments(self): raise NotImplementedError("Bitbucket provider does not support issue comments yet") + def get_repo_settings(self): + try: + contents = self.repo_obj.get_contents(".pr_agent.toml", ref=self.pr.head.sha).decoded_content + return contents + except Exception: + return "" + def add_eyes_reaction(self, issue_comment_id: int) -> Optional[int]: return True @@ -104,7 +111,7 @@ class BitbucketProvider: parsed_url = urlparse(pr_url) if 'bitbucket.org' not in parsed_url.netloc: - raise ValueError("The provided URL is not a valid GitHub URL") + raise ValueError("The provided URL is not a valid Bitbucket URL") path_parts = parsed_url.path.strip('/').split('/') diff --git a/pr_agent/git_providers/git_provider.py b/pr_agent/git_providers/git_provider.py index 2a891938..4d711a14 100644 --- a/pr_agent/git_providers/git_provider.py +++ b/pr_agent/git_providers/git_provider.py @@ -89,6 +89,10 @@ class GitProvider(ABC): def get_issue_comments(self): pass + @abstractmethod + def get_repo_settings(self): + pass + @abstractmethod def add_eyes_reaction(self, issue_comment_id: int) -> Optional[int]: pass diff --git a/tests/unittest/test_bitbucket_provider.py b/tests/unittest/test_bitbucket_provider.py new file mode 100644 index 00000000..3bb64a0c --- /dev/null +++ b/tests/unittest/test_bitbucket_provider.py @@ -0,0 +1,10 @@ +from pr_agent.git_providers.bitbucket_provider import BitbucketProvider + + +class TestBitbucketProvider: + def test_parse_pr_url(self): + url = "https://bitbucket.org/WORKSPACE_XYZ/MY_TEST_REPO/pull-requests/321" + workspace_slug, repo_slug, pr_number = BitbucketProvider._parse_pr_url(url) + assert workspace_slug == "WORKSPACE_XYZ" + assert repo_slug == "MY_TEST_REPO" + assert pr_number == 321 From 3f60d12a9a1b1ca1ae5449b7db02c4e2f5d51fa2 Mon Sep 17 00:00:00 2001 From: Tim Perkins Date: Mon, 14 Aug 2023 13:07:00 -0400 Subject: [PATCH 2/3] Publish comment when improve has no suggestions --- pr_agent/tools/pr_code_suggestions.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pr_agent/tools/pr_code_suggestions.py b/pr_agent/tools/pr_code_suggestions.py index a235852e..320b7dfb 100644 --- a/pr_agent/tools/pr_code_suggestions.py +++ b/pr_agent/tools/pr_code_suggestions.py @@ -93,6 +93,10 @@ class PRCodeSuggestions: def push_inline_code_suggestions(self, data): code_suggestions = [] + + if not data['Code suggestions']: + return self.git_provider.publish_comment('🎉 The PR looks good and there is nothing to suggest!') + for d in data['Code suggestions']: try: if get_settings().config.verbosity_level >= 2: From 70286e95740f31ce36c5585af6a96ae84e37ede4 Mon Sep 17 00:00:00 2001 From: Tim Perkins Date: Tue, 15 Aug 2023 08:35:57 -0400 Subject: [PATCH 3/3] Make the message more modest --- pr_agent/tools/pr_code_suggestions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pr_agent/tools/pr_code_suggestions.py b/pr_agent/tools/pr_code_suggestions.py index 320b7dfb..e759d61d 100644 --- a/pr_agent/tools/pr_code_suggestions.py +++ b/pr_agent/tools/pr_code_suggestions.py @@ -95,7 +95,7 @@ class PRCodeSuggestions: code_suggestions = [] if not data['Code suggestions']: - return self.git_provider.publish_comment('🎉 The PR looks good and there is nothing to suggest!') + return self.git_provider.publish_comment('No suggestions found to improve this PR.') for d in data['Code suggestions']: try: