Commit 7ffb8fc6 authored by Ariejan de Vroom's avatar Ariejan de Vroom

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.
parent edab46e9
...@@ -92,6 +92,11 @@ class Project < ActiveRecord::Base ...@@ -92,6 +92,11 @@ class Project < ActiveRecord::Base
end end
def execute_web_hooks(oldrev, newrev, ref) def execute_web_hooks(oldrev, newrev, ref)
ref_parts = ref.split('/')
# Return if this is not a push to a branch (e.g. new commits)
return if ref_parts[1] !~ /heads/ || oldrev == "00000000000000000000000000000000"
data = web_hook_data(oldrev, newrev, ref) data = web_hook_data(oldrev, newrev, ref)
web_hooks.each { |web_hook| web_hook.execute(data) } web_hooks.each { |web_hook| web_hook.execute(data) }
end end
......
...@@ -91,8 +91,29 @@ describe Project do ...@@ -91,8 +91,29 @@ describe Project do
@webhook.should_receive(:execute).once @webhook.should_receive(:execute).once
@webhook_2.should_receive(:execute).once @webhook_2.should_receive(:execute).once
project.execute_web_hooks('oldrev', 'newrev', 'ref') project.execute_web_hooks('oldrev', 'newrev', 'refs/heads/master')
end
end end
context "does not execute web hooks" do
before do
@webhook = Factory(:web_hook)
project.web_hooks << [@webhook]
end
it "when pushing a branch for the first time" do
@webhook.should_not_receive(:execute)
project.execute_web_hooks('00000000000000000000000000000000', 'newrev', 'refs/heads/mster')
end
it "when pushing tags" do
@webhook.should_not_receive(:execute)
project.execute_web_hooks('oldrev', 'newrev', 'refs/tags/v1.0.0')
end
end
context "when pushing new branches" do
end end
context "when gathering commit data" do context "when gathering commit data" do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment