summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-04-10 14:12:48 +0000
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-04-10 14:12:48 +0000
commite202718ac70f5bd35fdc40b426cb6174eebdd1e0 (patch)
tree5a9f3da43ddeb4bf744b84bf5f86ec6fe53b0012 /spec
parent2c1040d4bd1f66db809aeb8433b124f67debb6e7 (diff)
parentc7123b5e66073f530744b870a59c87a2b2d1740f (diff)
downloadgitlab-ci-e202718ac70f5bd35fdc40b426cb6174eebdd1e0.tar.gz
Merge branch 'smart_commit_creation' into 'master'
Skip commit creation if there is no appropriate job https://dev.gitlab.org/gitlab/gitlab-ci/issues/175 See merge request !62
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