summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2016-03-08 17:53:00 +0100
committerYorick Peterse <yorickpeterse@gmail.com>2016-03-08 18:19:40 +0100
commit177025b5dde5ca34b05744f000a1eee64501863a (patch)
treed9c4916afe8de8b9c2fc2710582b74ff4c9a1030
parentcb5a5ba09588af866aed595d960755bf4ced4483 (diff)
downloadgitlab-ce-177025b5dde5ca34b05744f000a1eee64501863a.tar.gz
Call the right hooks when removing branches
This ensures that Repository#rm_branch calls before_remove_branch/after_remove_branch instead of just 1 random cache expiration method.
-rw-r--r--app/models/repository.rb10
-rw-r--r--spec/models/repository_spec.rb11
2 files changed, 19 insertions, 2 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb
index d3ca268a659..c3ae461a016 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -144,7 +144,7 @@ class Repository
end
def rm_branch(user, branch_name)
- expire_branches_cache
+ before_remove_branch
branch = find_branch(branch_name)
oldrev = branch.try(:target)
@@ -155,7 +155,7 @@ class Repository
rugged.branches.delete(branch_name)
end
- expire_branches_cache
+ after_remove_branch
true
end
@@ -359,10 +359,16 @@ class Repository
expire_branch_count_cache
end
+ # Runs code before removing an existing branch.
+ def before_remove_branch
+ expire_branches_cache
+ end
+
# Runs code after an existing branch has been removed.
def after_remove_branch
expire_has_visible_content_cache
expire_branch_count_cache
+ expire_branches_cache
end
def method_missing(m, *args, &block)
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index 7af80704690..b2b4d38756f 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -648,4 +648,15 @@ describe Repository, models: true do
repository.expire_tag_count_cache
end
end
+
+ describe '#rm_branch' do
+ let(:user) { create(:user) }
+
+ it 'removes a branch' do
+ expect(repository).to receive(:before_remove_branch)
+ expect(repository).to receive(:after_remove_branch)
+
+ repository.rm_branch(user, 'feature')
+ end
+ end
end