Commit 7ffb8fc616a2890cc46924b099c28709e491495e
1 parent
edab46e9
Exists in
master
and in
4 other branches
Added specs for special cases
We don't execute web hooks when: * You create a new branch. Make sure you first create the branch, and then push any commits. This is the way Github works, so its expected behavior. * When tags are pushed.
Showing
2 changed files
with
27 additions
and
1 deletions
Show diff stats
app/models/project.rb
@@ -92,6 +92,11 @@ class Project < ActiveRecord::Base | @@ -92,6 +92,11 @@ class Project < ActiveRecord::Base | ||
92 | end | 92 | end |
93 | 93 | ||
94 | def execute_web_hooks(oldrev, newrev, ref) | 94 | def execute_web_hooks(oldrev, newrev, ref) |
95 | + ref_parts = ref.split('/') | ||
96 | + | ||
97 | + # Return if this is not a push to a branch (e.g. new commits) | ||
98 | + return if ref_parts[1] !~ /heads/ || oldrev == "00000000000000000000000000000000" | ||
99 | + | ||
95 | data = web_hook_data(oldrev, newrev, ref) | 100 | data = web_hook_data(oldrev, newrev, ref) |
96 | web_hooks.each { |web_hook| web_hook.execute(data) } | 101 | web_hooks.each { |web_hook| web_hook.execute(data) } |
97 | end | 102 | end |
spec/models/project_spec.rb
@@ -91,10 +91,31 @@ describe Project do | @@ -91,10 +91,31 @@ describe Project do | ||
91 | @webhook.should_receive(:execute).once | 91 | @webhook.should_receive(:execute).once |
92 | @webhook_2.should_receive(:execute).once | 92 | @webhook_2.should_receive(:execute).once |
93 | 93 | ||
94 | - project.execute_web_hooks('oldrev', 'newrev', 'ref') | 94 | + project.execute_web_hooks('oldrev', 'newrev', 'refs/heads/master') |
95 | end | 95 | end |
96 | end | 96 | end |
97 | 97 | ||
98 | + context "does not execute web hooks" do | ||
99 | + before do | ||
100 | + @webhook = Factory(:web_hook) | ||
101 | + project.web_hooks << [@webhook] | ||
102 | + end | ||
103 | + | ||
104 | + it "when pushing a branch for the first time" do | ||
105 | + @webhook.should_not_receive(:execute) | ||
106 | + project.execute_web_hooks('00000000000000000000000000000000', 'newrev', 'refs/heads/mster') | ||
107 | + end | ||
108 | + | ||
109 | + it "when pushing tags" do | ||
110 | + @webhook.should_not_receive(:execute) | ||
111 | + project.execute_web_hooks('oldrev', 'newrev', 'refs/tags/v1.0.0') | ||
112 | + end | ||
113 | + end | ||
114 | + | ||
115 | + context "when pushing new branches" do | ||
116 | + | ||
117 | + end | ||
118 | + | ||
98 | context "when gathering commit data" do | 119 | context "when gathering commit data" do |
99 | before do | 120 | before do |
100 | @oldrev, @newrev, @ref = project.fresh_commits(2).last.sha, project.fresh_commits(2).first.sha, 'refs/heads/master' | 121 | @oldrev, @newrev, @ref = project.fresh_commits(2).last.sha, project.fresh_commits(2).first.sha, 'refs/heads/master' |