You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2015/04/21 16:47:05 UTC

[8/8] allura git commit: [#7866] ticket:758 Don't run can_merge task when merge is dissabled

[#7866] ticket:758 Don't run can_merge task when merge is dissabled


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/d162d676
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/d162d676
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/d162d676

Branch: refs/heads/master
Commit: d162d676dfa780eb0dd11de2e60c714b57c78aed
Parents: f32d2c3
Author: Igor Bondarenko <je...@gmail.com>
Authored: Tue Apr 21 08:56:34 2015 +0000
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Tue Apr 21 08:56:34 2015 +0000

----------------------------------------------------------------------
 Allura/allura/model/repository.py      | 6 ++++--
 Allura/allura/tests/model/test_repo.py | 7 +++++++
 2 files changed, 11 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/d162d676/Allura/allura/model/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/repository.py b/Allura/allura/model/repository.py
index a9b07a0..8455395 100644
--- a/Allura/allura/model/repository.py
+++ b/Allura/allura/model/repository.py
@@ -827,13 +827,13 @@ class MergeRequest(VersionedArtifact, ActivityObject):
         """
         Returns true if a merge is allowed by system and tool configuration.
         """
-        if not c.app.forkable:
+        if not self.app.forkable:
             return False
         if self.status != 'open':
             return False
         if asbool(tg.config.get('scm.merge.{}.disabled'.format(self.app.config.tool_name))):
             return False
-        if not h.has_access(c.app, 'write', user):
+        if not h.has_access(self.app, 'write', user):
             return False
         if self.app.config.options.get('merge_disabled'):
             return False
@@ -864,6 +864,8 @@ class MergeRequest(VersionedArtifact, ActivityObject):
         conflicts). If result is unknown yet, returns None and fires a task to
         get the result. Caches result for later reuse.
         """
+        if not self.merge_allowed(c.user):
+            return None
         if self.status == 'merged':
             return True
         cached = self.get_can_merge_cache()

http://git-wip-us.apache.org/repos/asf/allura/blob/d162d676/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 d083675..f71ad71 100644
--- a/Allura/allura/tests/model/test_repo.py
+++ b/Allura/allura/tests/model/test_repo.py
@@ -735,6 +735,7 @@ class TestMergeRequest(object):
         )
         self.mr.app = mock.Mock(forkable=True)
         self.mr.app.repo.commit.return_value = mock.Mock(_id='09876')
+        self.mr.merge_allowed = mock.Mock(return_value=True)
 
     def test_can_merge_cache_key(self):
         key = self.mr.can_merge_cache_key()
@@ -777,6 +778,12 @@ class TestMergeRequest(object):
         assert_equal(self.mr.can_merge(), None)
         can_merge_task.post.assert_called_once_with(self.mr._id)
 
+    @mock.patch('allura.tasks.repo_tasks.can_merge', autospec=True)
+    def test_can_merge_disabled(self, can_merge_task):
+        self.mr.merge_allowed.return_value = False
+        assert_equal(self.mr.can_merge(), None)
+        assert_equal(can_merge_task.post.call_count, 0)
+
     @mock.patch('allura.tasks.repo_tasks.merge', autospec=True)
     def test_merge(self, merge_task):
         self.mr.merge_task_status = lambda: None