summaryrefslogtreecommitdiff
path: root/spec/services
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-03-02 15:21:00 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-03-06 10:04:04 +0100
commit50c393e58b01ff25f60b03b7c8419941a3f892cd (patch)
treeafc634a8feabce4fca4675e3a34ffff419e61848 /spec/services
parent79ea01bfaffa743e98716cf9f9f811c6843dea4b (diff)
downloadgitlab-ce-50c393e58b01ff25f60b03b7c8419941a3f892cd.tar.gz
Remove duplication in process pipeline service specs
This will make it easier to extend this spec file to add new test examples covering blocking manual actions.
Diffstat (limited to 'spec/services')
-rw-r--r--spec/services/ci/process_pipeline_service_spec.rb71
1 files changed, 33 insertions, 38 deletions
diff --git a/spec/services/ci/process_pipeline_service_spec.rb b/spec/services/ci/process_pipeline_service_spec.rb
index 3ce904244b2..2c1e139d5c9 100644
--- a/spec/services/ci/process_pipeline_service_spec.rb
+++ b/spec/services/ci/process_pipeline_service_spec.rb
@@ -15,11 +15,11 @@ describe Ci::ProcessPipelineService, :services do
describe '#execute' do
context 'start queuing next builds' do
before do
- create(:ci_build, :created, pipeline: pipeline, name: 'linux', stage_idx: 0)
- create(:ci_build, :created, pipeline: pipeline, name: 'mac', stage_idx: 0)
- create(:ci_build, :created, pipeline: pipeline, name: 'rspec', stage_idx: 1)
- create(:ci_build, :created, pipeline: pipeline, name: 'rubocop', stage_idx: 1)
- create(:ci_build, :created, pipeline: pipeline, name: 'deploy', stage_idx: 2)
+ create_build('linux', stage_idx: 0)
+ create_build('mac', stage_idx: 0)
+ create_build('rspec', stage_idx: 1)
+ create_build('rubocop', stage_idx: 1)
+ create_build('deploy', stage_idx: 2)
end
it 'processes a pipeline' do
@@ -49,8 +49,8 @@ describe Ci::ProcessPipelineService, :services do
context 'custom stage with first job allowed to fail' do
before do
- create(:ci_build, :created, pipeline: pipeline, name: 'clean_job', stage_idx: 0, allow_failure: true)
- create(:ci_build, :created, pipeline: pipeline, name: 'test_job', stage_idx: 1, allow_failure: true)
+ create_build('clean_job', stage_idx: 0, allow_failure: true)
+ create_build('test_job', stage_idx: 1, allow_failure: true)
end
it 'automatically triggers a next stage when build finishes' do
@@ -64,13 +64,13 @@ describe Ci::ProcessPipelineService, :services do
context 'properly creates builds when "when" is defined' do
before do
- create(:ci_build, :created, pipeline: pipeline, name: 'build', stage_idx: 0)
- create(:ci_build, :created, pipeline: pipeline, name: 'test', stage_idx: 1)
- create(:ci_build, :created, pipeline: pipeline, name: 'test_failure', stage_idx: 2, when: 'on_failure')
- create(:ci_build, :created, pipeline: pipeline, name: 'deploy', stage_idx: 3)
- create(:ci_build, :created, pipeline: pipeline, name: 'production', stage_idx: 3, when: 'manual', allow_failure: true)
- create(:ci_build, :created, pipeline: pipeline, name: 'cleanup', stage_idx: 4, when: 'always')
- create(:ci_build, :created, pipeline: pipeline, name: 'clear cache', stage_idx: 4, when: 'manual', allow_failure: true)
+ create_build('build', stage_idx: 0)
+ create_build('test', stage_idx: 1)
+ create_build('test_failure', stage_idx: 2, when: 'on_failure')
+ create_build('deploy', stage_idx: 3)
+ create_build('production', stage_idx: 3, when: 'manual', allow_failure: true)
+ create_build('cleanup', stage_idx: 4, when: 'always')
+ create_build('clear cache', stage_idx: 4, when: 'manual', allow_failure: true)
end
context 'when builds are successful' do
@@ -222,9 +222,9 @@ describe Ci::ProcessPipelineService, :services do
context 'when first stage has only manual jobs' do
let(:builds) do
- [create_build('build', 0, 'manual'),
- create_build('check', 1),
- create_build('test', 2)]
+ [create_build('build', stage_idx: 0, when: 'manual'),
+ create_build('check', stage_idx: 1),
+ create_build('test', stage_idx: 2)]
end
it 'starts from the second stage' do
@@ -234,9 +234,9 @@ describe Ci::ProcessPipelineService, :services do
context 'when second stage has only manual jobs' do
let(:builds) do
- [create_build('check', 0),
- create_build('build', 1, 'manual'),
- create_build('test', 2)]
+ [create_build('check', stage_idx: 0),
+ create_build('build', stage_idx: 1, when: 'manual'),
+ create_build('test', stage_idx: 2)]
end
it 'skips second stage and continues on third stage' do
@@ -251,9 +251,9 @@ describe Ci::ProcessPipelineService, :services do
context 'when second stage has only on_failure jobs' do
let(:builds) do
- [create_build('check', 0),
- create_build('build', 1, 'on_failure'),
- create_build('test', 2)]
+ [create_build('check', stage_idx: 0),
+ create_build('build', stage_idx: 1, when: 'on_failure'),
+ create_build('test', stage_idx: 2)]
end
it 'skips second stage and continues on third stage' do
@@ -270,12 +270,12 @@ describe Ci::ProcessPipelineService, :services do
context 'when failed build in the middle stage is retried' do
context 'when failed build is the only unsuccessful build in the stage' do
before do
- create(:ci_build, :created, pipeline: pipeline, name: 'build:1', stage_idx: 0)
- create(:ci_build, :created, pipeline: pipeline, name: 'build:2', stage_idx: 0)
- create(:ci_build, :created, pipeline: pipeline, name: 'test:1', stage_idx: 1)
- create(:ci_build, :created, pipeline: pipeline, name: 'test:2', stage_idx: 1)
- create(:ci_build, :created, pipeline: pipeline, name: 'deploy:1', stage_idx: 2)
- create(:ci_build, :created, pipeline: pipeline, name: 'deploy:2', stage_idx: 2)
+ create_build('build:1', stage_idx: 0)
+ create_build('build:2', stage_idx: 0)
+ create_build('test:1', stage_idx: 1)
+ create_build('test:2', stage_idx: 1)
+ create_build('deploy:1', stage_idx: 2)
+ create_build('deploy:2', stage_idx: 2)
end
it 'does trigger builds in the next stage' do
@@ -312,8 +312,8 @@ describe Ci::ProcessPipelineService, :services do
end
before do
- create(:ci_build, :created, pipeline: pipeline, name: 'linux', stage: 'build', stage_idx: 0)
- create(:ci_build, :created, pipeline: pipeline, name: 'mac', stage: 'build', stage_idx: 0)
+ create_build('linux', stage: 'build', stage_idx: 0)
+ create_build('mac', stage: 'build', stage_idx: 0)
end
it 'processes the pipeline' do
@@ -379,12 +379,7 @@ describe Ci::ProcessPipelineService, :services do
delegate :manual_actions, to: :pipeline
- def create_build(name, stage_idx, when_value = nil)
- create(:ci_build,
- :created,
- pipeline: pipeline,
- name: name,
- stage_idx: stage_idx,
- when: when_value)
+ def create_build(name, **opts)
+ create(:ci_build, :created, pipeline: pipeline, name: name, **opts)
end
end