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