diff --git a/pagure/ui/fork.py b/pagure/ui/fork.py index 68845da..d26dd66 100644 --- a/pagure/ui/fork.py +++ b/pagure/ui/fork.py @@ -1760,7 +1760,7 @@ def new_request_pull( repo=repo, username=username, orig_repo=orig_repo, - parent_branches=sorted(orig_repo.listall_branches()), + parent_branches=sorted(flask.g.repo_obj.listall_branches()), diff_commits=diff_commits, diff=diff, form=form, diff --git a/tests/test_pagure_flask_ui_fork.py b/tests/test_pagure_flask_ui_fork.py index 311da94..3ac12ab 100644 --- a/tests/test_pagure_flask_ui_fork.py +++ b/tests/test_pagure_flask_ui_fork.py @@ -2280,7 +2280,8 @@ index 0000000..2a552bb os.path.join(self.path, 'requests'), bare=True) repo = pagure.lib.query.get_authorized_project(self.session, 'test') - fork = pagure.lib.query.get_authorized_project(self.session, 'test', user='foo') + fork = pagure.lib.query.get_authorized_project( + self.session, 'test', user='foo') set_up_git_repo( self.session, self.path, new_project=fork, @@ -2339,6 +2340,11 @@ index 0000000..2a552bb placeholder="Describe your changes" tabindex=1> More information
''', output_text) + self.assertIn( + ' master', + output_text) csrf_token = self.get_csrf(output=output) @@ -2553,6 +2559,86 @@ More information self.assertIsNotNone(request.commit_stop) @patch('pagure.lib.notify.send_email') + def test_new_request_pull_from_fork_branch(self, send_email): + """ Test creating a fork to fork PR. """ + send_email.return_value = True + + # Create main repo with some content + tests.create_projects(self.session) + tests.create_projects_git( + os.path.join(self.path, "repos"), + bare=True + ) + tests.add_content_git_repo( + os.path.join(self.path, "repos", "test.git")) + + # Create fork repo with more content + tests.create_projects( + self.session, + is_fork=True, + hook_token_suffix='fork') + tests.create_projects_git( + os.path.join(self.path, "repos", "forks", "pingou"), + bare=True + ) + tests.add_content_git_repo( + os.path.join(self.path, "repos", "forks", "pingou", "test.git")) + tests.add_readme_git_repo( + os.path.join(self.path, "repos", "forks", "pingou", "test.git"), + branch='feature') + tests.add_readme_git_repo( + os.path.join(self.path, "repos", "forks", "pingou", "test.git"), + branch='random_branch') + + user = tests.FakeUser(username='pingou') + with tests.user_set(self.app.application, user): + data = { + 'csrf_token': self.get_csrf(), + } + + output = self.app.post( + '/do_fork/test', data=data, + follow_redirects=True) + self.assertEqual(output.status_code, 200) + + # Check that Ralph's fork do exist + output = self.app.get('/fork/pingou/test') + self.assertEqual(output.status_code, 200) + + tests.create_projects_git( + os.path.join(self.path, 'requests'), bare=True) + + fork = pagure.lib.query.get_authorized_project( + self.session, 'test', user='ralph') + + set_up_git_repo( + self.session, self.path, new_project=fork, + branch_from='feature', mtype='FF') + + # Try opening a pull-request + output = self.app.get( + '/fork/pingou/test/diff/master..feature') + self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) + self.assertIn( + 'Create new Pull Request for master - ' + 'fork/pingou/test\n - Pagure', output_text) + self.assertIn( + '\n', + output_text) + self.assertIn( + ' master', + output_text) + self.assertIn( + ' random_branch', + output_text) + + + @patch('pagure.lib.notify.send_email') def test_new_request_pull_fork_to_fork_pr_disabled(self, send_email): """ Test creating a fork to fork PR. """ send_email.return_value = True