Skip to content
Snippets Groups Projects
Commit b9e32976 authored by Grzegorz Bizon's avatar Grzegorz Bizon
Browse files

Add specs for pipeline chain that builds stages and jobs

parent 109ecf6f
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -16,10 +16,14 @@ module Gitlab
##
# Populate pipeline with all stages and builds from pipeline seeds.
#
pipeline.stage_seeds.each do |seed|
seed.user = current_user
pipeline.stage_seeds.each do |stage|
stage.user = current_user
 
pipeline.stages << seed.to_resource
pipeline.stages << stage.to_resource
stage.seeds.each do |build|
pipeline.builds << build.to_resource
end
end
 
if pipeline.stages.none?
Loading
Loading
Loading
Loading
@@ -33,18 +33,14 @@ module Gitlab
end
end
 
# TODO specs
#
def included?
seeds.any?
end
 
def to_resource
@stage ||= ::Ci::Stage.new(attributes).tap do |stage|
@seeds.each do |seed|
next unless seed.included?
stage.builds << seed.to_resource
strong_memoize(:stage) do
::Ci::Stage.new(attributes).tap do |stage|
seeds.each { |seed| stage.builds << seed.to_resource }
end
end
end
Loading
Loading
Loading
Loading
@@ -37,6 +37,8 @@ describe Gitlab::Ci::Pipeline::Chain::Populate do
end
 
it 'populates pipeline with builds' do
expect(pipeline.builds).to be_one
expect(pipeline.builds.first).not_to be_persisted
expect(pipeline.stages.first.builds).to be_one
expect(pipeline.stages.first.builds.first).not_to be_persisted
end
Loading
Loading
@@ -130,5 +132,22 @@ describe Gitlab::Ci::Pipeline::Chain::Populate do
end
end
 
pending 'populating pipeline according to policies'
context 'when using only/except build policies' do
let(:config) do
{ rspec: { script: 'rspec', stage: 'test', only: ['master'] },
prod: { script: 'cap prod', stage: 'deploy', only: ['tags'] } }
end
let(:pipeline) do
build(:ci_pipeline, ref: 'master', config: config)
end
it 'populates pipeline according to used policies' do
step.perform!
expect(pipeline.stages.size).to eq 1
expect(pipeline.builds.size).to eq 1
expect(pipeline.builds.first.name).to eq 'rspec'
end
end
end
Loading
Loading
@@ -28,6 +28,28 @@ describe Gitlab::Ci::Pipeline::Seed::Stage do
end
end
 
describe '#included?' do
context 'when it contains builds seeds' do
let(:attributes) do
{ name: 'test',
index: 0,
builds: [{ name: 'deploy', only: { refs: ['master'] } }] }
end
it { is_expected.to be_included }
end
context 'when it does not contain build seeds' do
let(:attributes) do
{ name: 'test',
index: 0,
builds: [{ name: 'deploy', only: { refs: ['feature'] } }] }
end
it { is_expected.not_to be_included }
end
end
describe '#seeds' do
it 'returns build seeds' do
expect(subject.seeds).to all(be_a Gitlab::Ci::Pipeline::Seed::Build)
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment