summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorValery Sizov <vsv2711@gmail.com>2015-04-10 15:39:16 +0300
committerValery Sizov <vsv2711@gmail.com>2015-04-10 15:43:22 +0300
commitc7123b5e66073f530744b870a59c87a2b2d1740f (patch)
tree0d545c5f174fa04a7866c56e69028b77146136c1 /spec
parentfa1d7aaa99d13278a83d955804077811bb65c553 (diff)
downloadgitlab-ci-c7123b5e66073f530744b870a59c87a2b2d1740f.tar.gz
skip commit creation if there is no appropriate job
Diffstat (limited to 'spec')
-rw-r--r--spec/factories/job.rb4
-rw-r--r--spec/services/create_commit_service_spec.rb44
2 files changed, 46 insertions, 2 deletions
diff --git a/spec/factories/job.rb b/spec/factories/job.rb
index 93f2ff7..9a00a13 100644
--- a/spec/factories/job.rb
+++ b/spec/factories/job.rb
@@ -2,5 +2,9 @@ FactoryGirl.define do
factory :job do
name 'rspec'
commands 'bundle exec rspec spec'
+
+ factory :deploy_job do
+ job_type :deploy
+ end
end
end
diff --git a/spec/services/create_commit_service_spec.rb b/spec/services/create_commit_service_spec.rb
index 725ea08..761bfaf 100644
--- a/spec/services/create_commit_service_spec.rb
+++ b/spec/services/create_commit_service_spec.rb
@@ -25,12 +25,52 @@ describe CreateCommitService do
it "calls create_deploy_builds if there are no builds" do
project.jobs.destroy_all
Commit.any_instance.should_receive(:create_deploy_builds)
- service.execute(project, ref: 'refs/heads/master', before: '00000000', after: '31das312')
+ service.execute(project, ref: 'refs/heads/master', before: '00000000', after: '31das312')
end
it "does not call create_deploy_builds if there is build" do
Commit.any_instance.should_not_receive(:create_deploy_builds)
- service.execute(project, ref: 'refs/heads/master', before: '00000000', after: '31das312')
+ service.execute(project, ref: 'refs/heads/master', before: '00000000', after: '31das312')
+ end
+ end
+
+ context "skip tag if there is no build for it" do
+ it "does not create commit if there is no appropriate job" do
+ project.jobs
+
+ result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312')
+ result.should be_false
+ end
+
+ it "creates commit if there is appropriate job" do
+ project.jobs.first.update(build_tags: true)
+
+ result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312')
+ result.should be_persisted
+ end
+
+ it "does not create commit if there is no appropriate job nor deploy job" do
+ project.jobs.first.update(build_tags: false)
+ FactoryGirl.create(:deploy_job, project: project, refs: "release")
+
+ result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312')
+ result.should be_false
+ end
+
+ it "creates commit if there is no appropriate job but deploy job has right ref setting" do
+ project.jobs.first.update(build_tags: false)
+ FactoryGirl.create(:deploy_job, project: project, refs: "0_1")
+
+ result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312')
+ result.should be_persisted
+ end
+
+ it "creates commit if there is no appropriate job and deploy job has no ref setting" do
+ project.jobs.first.update(build_tags: true)
+ FactoryGirl.create(:deploy_job, project: project)
+
+ result = service.execute(project, ref: 'refs/tags/0_1', before: '00000000', after: '31das312')
+ result.should be_persisted
end
end
end