diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-02 18:08:01 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-02 18:08:01 +0300 |
commit | b375c6c05fbd03aea33a9ee9f82e678bdaa8c3cc (patch) | |
tree | 55f2a32e5fd3d67597fc8c6cc2a01793ee15c87a /spec/services/ci | |
parent | 988b28ec1a379d38f6ac9ed04886ee564fd447fd (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services/ci')
-rw-r--r-- | spec/services/ci/create_cross_project_pipeline_service_spec.rb | 35 | ||||
-rw-r--r-- | spec/services/ci/create_pipeline_service/custom_config_content_spec.rb | 18 |
2 files changed, 44 insertions, 9 deletions
diff --git a/spec/services/ci/create_cross_project_pipeline_service_spec.rb b/spec/services/ci/create_cross_project_pipeline_service_spec.rb index 51cf18f8d87..09d44bcea0a 100644 --- a/spec/services/ci/create_cross_project_pipeline_service_spec.rb +++ b/spec/services/ci/create_cross_project_pipeline_service_spec.rb @@ -109,7 +109,7 @@ describe Ci::CreateCrossProjectPipelineService, '#execute' do expect(pipeline.source_bridge).to be_a ::Ci::Bridge end - it 'updates bridge status when downstream pipeline gets proceesed' do + it 'updates bridge status when downstream pipeline gets processed' do pipeline = service.execute(bridge) expect(pipeline.reload).to be_pending @@ -128,6 +128,37 @@ describe Ci::CreateCrossProjectPipelineService, '#execute' do end end + context 'when downstream pipeline has yaml configuration error' do + before do + stub_ci_pipeline_yaml_file(YAML.dump(job: { invalid: 'yaml' })) + end + + it 'creates only one new pipeline' do + expect { service.execute(bridge) } + .to change { Ci::Pipeline.count }.by(1) + end + + it 'creates a new pipeline in a downstream project' do + pipeline = service.execute(bridge) + + expect(pipeline.user).to eq bridge.user + expect(pipeline.project).to eq downstream_project + expect(bridge.sourced_pipelines.first.pipeline).to eq pipeline + expect(pipeline.triggered_by_pipeline).to eq upstream_pipeline + expect(pipeline.source_bridge).to eq bridge + expect(pipeline.source_bridge).to be_a ::Ci::Bridge + end + + it 'does not update bridge status when downstream pipeline gets processed' do + pipeline = service.execute(bridge) + + expect(pipeline.reload).to be_failed + # TODO: This should change to failed once #198354 gets fixed. + # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/25706 + expect(bridge.reload).to be_pending + end + end + context 'when downstream project is the same as the job project' do let(:trigger) do { trigger: { project: upstream_project.full_path } } @@ -173,7 +204,7 @@ describe Ci::CreateCrossProjectPipelineService, '#execute' do expect(pipeline.source_bridge).to be_a ::Ci::Bridge end - it 'updates bridge status when downstream pipeline gets proceesed' do + it 'updates bridge status when downstream pipeline gets processed' do pipeline = service.execute(bridge) expect(pipeline.reload).to be_pending diff --git a/spec/services/ci/create_pipeline_service/custom_config_content_spec.rb b/spec/services/ci/create_pipeline_service/custom_config_content_spec.rb index 33cd6e164b0..2657f1d300a 100644 --- a/spec/services/ci/create_pipeline_service/custom_config_content_spec.rb +++ b/spec/services/ci/create_pipeline_service/custom_config_content_spec.rb @@ -4,18 +4,22 @@ require 'spec_helper' describe Ci::CreatePipelineService do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:admin) } + let(:upstream_pipeline) { create(:ci_pipeline) } let(:ref) { 'refs/heads/master' } let(:service) { described_class.new(project, user, { ref: ref }) } context 'custom config content' do let(:bridge) do - double(:bridge, yaml_for_downstream: <<~YML - rspec: - script: rspec - custom: - script: custom - YML - ) + create(:ci_bridge, status: 'running', pipeline: upstream_pipeline, project: upstream_pipeline.project).tap do |bridge| + allow(bridge).to receive(:yaml_for_downstream).and_return( + <<~YML + rspec: + script: rspec + custom: + script: custom + YML + ) + end end subject { service.execute(:push, bridge: bridge) } |