Return-Path: X-Original-To: apmail-allura-commits-archive@www.apache.org Delivered-To: apmail-allura-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6B83017ED5 for ; Fri, 20 Mar 2015 20:41:55 +0000 (UTC) Received: (qmail 98856 invoked by uid 500); 20 Mar 2015 20:41:55 -0000 Delivered-To: apmail-allura-commits-archive@allura.apache.org Received: (qmail 98826 invoked by uid 500); 20 Mar 2015 20:41:55 -0000 Mailing-List: contact commits-help@allura.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@allura.apache.org Delivered-To: mailing list commits@allura.apache.org Received: (qmail 98742 invoked by uid 99); 20 Mar 2015 20:41:55 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 20 Mar 2015 20:41:55 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D1BDCE17FA; Fri, 20 Mar 2015 20:41:54 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: brondsem@apache.org To: commits@allura.apache.org Date: Fri, 20 Mar 2015 20:41:57 -0000 Message-Id: <3f70b21d8e854a0485a05839b15edb98@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [4/7] allura git commit: [#7830] ticket:729 Add tests [#7830] ticket:729 Add tests Project: http://git-wip-us.apache.org/repos/asf/allura/repo Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/02a3fca1 Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/02a3fca1 Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/02a3fca1 Branch: refs/heads/master Commit: 02a3fca193c95e436f0b18023c6e8ab2d12bb6f8 Parents: b0a908c Author: Igor Bondarenko Authored: Thu Feb 19 15:53:48 2015 +0000 Committer: Dave Brondsema Committed: Fri Mar 20 20:40:29 2015 +0000 ---------------------------------------------------------------------- Allura/allura/tests/model/test_repo.py | 38 ++++++++++++++++ Allura/allura/tests/test_tasks.py | 11 +++++ .../forgegit/tests/model/test_repository.py | 46 ++++++++++++++++++++ 3 files changed, 95 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/allura/blob/02a3fca1/Allura/allura/tests/model/test_repo.py ---------------------------------------------------------------------- diff --git a/Allura/allura/tests/model/test_repo.py b/Allura/allura/tests/model/test_repo.py index 9e2af07..669f940 100644 --- a/Allura/allura/tests/model/test_repo.py +++ b/Allura/allura/tests/model/test_repo.py @@ -713,3 +713,41 @@ class TestModelCache(unittest.TestCase): session.assert_called_once_with(tree1) session.return_value.flush.assert_called_once_with(tree1) session.return_value.expunge.assert_called_once_with(tree1) + + +class TestMergeRequest(object): + + def setUp(self): + setup_basic_test() + setup_global_objects() + self.mr = M.MergeRequest(app_config=mock.Mock(_id=ObjectId())) + self.mr.app = mock.Mock(forkable=True) + + def test_can_merge(self): + assert_equal(self.mr.can_merge(), + self.mr.app.repo.can_merge.return_value) + self.mr.app.repo.can_merge.assert_called_once_with(self.mr) + + self.mr.app.reset_mock() + self.mr.app.forkable = False + assert_equal(self.mr.can_merge(), False) + assert_equal(self.mr.app.repo.can_merge.called, False) + + @mock.patch('allura.tasks.repo_tasks.merge', autospec=True) + def test_merge(self, merge_task): + self.mr.merge_task_status = lambda: None + self.mr.merge() + merge_task.post.assert_called_once_with(self.mr._id) + + merge_task.reset_mock() + self.mr.merge_task_status = lambda: 'ready' + self.mr.merge() + assert_equal(merge_task.post.called, False) + + def test_merge_task_status(self): + from allura.tasks import repo_tasks + assert_equal(self.mr.merge_task_status(), None) + repo_tasks.merge.post(self.mr._id) + assert_equal(self.mr.merge_task_status(), 'ready') + M.MonQTask.run_ready() + assert_equal(self.mr.merge_task_status(), 'complete') http://git-wip-us.apache.org/repos/asf/allura/blob/02a3fca1/Allura/allura/tests/test_tasks.py ---------------------------------------------------------------------- diff --git a/Allura/allura/tests/test_tasks.py b/Allura/allura/tests/test_tasks.py index 13d5c17..d822229 100644 --- a/Allura/allura/tests/test_tasks.py +++ b/Allura/allura/tests/test_tasks.py @@ -64,6 +64,17 @@ class TestRepoTasks(unittest.TestCase): assert_equal(post_event.call_args[0][2], None) # ignore args[3] which is a traceback string + @mock.patch('allura.tasks.repo_tasks.session', autospec=True) + @mock.patch.object(M, 'MergeRequest', autospec=True) + def test_merge(self, MR, session): + mr = mock.Mock(_id='_id') + MR.query.get.return_value = mr + repo_tasks.merge(mr._id) + mr.app.repo.merge.assert_called_once_with(mr) + assert_equal(mr.status, 'merged') + session.assert_called_once_with(mr) + session.return_value.flush.assert_called_once_with(mr) + class TestEventTasks(unittest.TestCase): http://git-wip-us.apache.org/repos/asf/allura/blob/02a3fca1/ForgeGit/forgegit/tests/model/test_repository.py ---------------------------------------------------------------------- diff --git a/ForgeGit/forgegit/tests/model/test_repository.py b/ForgeGit/forgegit/tests/model/test_repository.py index 231e479..d79fc7b 100644 --- a/ForgeGit/forgegit/tests/model/test_repository.py +++ b/ForgeGit/forgegit/tests/model/test_repository.py @@ -592,6 +592,52 @@ class TestGitRepo(unittest.TestCase, RepoImplTestBase): } assert_equals(payload, expected_payload) + def test_can_merge(self): + mr = mock.Mock(downstream_repo_url='downstream-url', + source_branch='source-branch', + target_branch='target-branch', + downstream=mock.Mock(commit_id='cid')) + git = mock.Mock() + git.merge_tree.return_value = 'clean merge' + self.repo._impl._git.git = git + assert_equal(self.repo.can_merge(mr), True) + git.fetch.assert_called_once_with('downstream-url', 'source-branch') + git.merge_base.assert_called_once_with('cid', 'target-branch') + git.merge_tree.assert_called_once_with( + git.merge_base.return_value, + 'target-branch', + 'cid') + git.merge_tree.return_value = '+<<<<<<<' + assert_equal(self.repo.can_merge(mr), False) + + @mock.patch('forgegit.model.git_repo.tempfile', autospec=True) + @mock.patch('forgegit.model.git_repo.git', autospec=True) + @mock.patch('forgegit.model.git_repo.GitImplementation', autospec=True) + @mock.patch('forgegit.model.git_repo.shutil', autospec=True) + def test_merge(self, shutil, GitImplementation, git, tempfile): + mr = mock.Mock(downstream_repo_url='downstream-url', + source_branch='source-branch', + target_branch='target-branch', + downstream=mock.Mock(commit_id='cid')) + _git = mock.Mock() + self.repo._impl._git.git = _git + self.repo.merge(mr) + git.Repo.clone_from.assert_called_once_with( + self.repo.clone_url('rw'), + to_path=tempfile.mkdtemp.return_value, + bare=False) + tmp_repo = GitImplementation.return_value._git + assert_equal( + tmp_repo.git.fetch.call_args_list, + [mock.call('origin', 'target-branch'), + mock.call('downstream-url', 'source-branch')]) + tmp_repo.git.checkout.assert_called_once_with('target-branch') + tmp_repo.git.merge.assert_called_once_with('cid') + tmp_repo.git.push.assert_called_once_with('origin', 'target-branch') + shutil.rmtree.assert_called_once_with( + tempfile.mkdtemp.return_value, + ignore_errors=True) + class TestGitImplementation(unittest.TestCase):