diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-03 18:08:16 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-03 18:08:16 +0000 |
commit | e9c2bf267862e22c0770cc7b3a1ed97a8b87a7fd (patch) | |
tree | 7b778e44f210132af1233ceb8801b388ac3519f5 /spec/services/merge_requests | |
parent | 946771d0b016ae92b15a60bc3290a33b94191ffe (diff) | |
download | gitlab-ce-e9c2bf267862e22c0770cc7b3a1ed97a8b87a7fd.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services/merge_requests')
-rw-r--r-- | spec/services/merge_requests/create_service_spec.rb | 23 | ||||
-rw-r--r-- | spec/services/merge_requests/refresh_service_spec.rb | 56 |
2 files changed, 69 insertions, 10 deletions
diff --git a/spec/services/merge_requests/create_service_spec.rb b/spec/services/merge_requests/create_service_spec.rb index aebead481ce..c34f81901ef 100644 --- a/spec/services/merge_requests/create_service_spec.rb +++ b/spec/services/merge_requests/create_service_spec.rb @@ -177,18 +177,18 @@ describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do describe 'Pipelines for merge requests' do before do - stub_ci_pipeline_yaml_file(YAML.dump(config)) + stub_ci_pipeline_yaml_file(config) end context "when .gitlab-ci.yml has merge_requests keywords" do let(:config) do - { + YAML.dump({ test: { stage: 'test', script: 'echo', only: ['merge_requests'] } - } + }) end it 'creates a detached merge request pipeline and sets it as a head pipeline' do @@ -269,12 +269,12 @@ describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do context "when .gitlab-ci.yml does not have merge_requests keywords" do let(:config) do - { + YAML.dump({ test: { stage: 'test', script: 'echo' } - } + }) end it 'does not create a detached merge request pipeline' do @@ -284,6 +284,19 @@ describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do expect(merge_request.pipelines_for_merge_request.count).to eq(0) end end + + context 'when .gitlab-ci.yml is invalid' do + let(:config) { 'invalid yaml file' } + + it 'persists a pipeline with config error' do + expect(merge_request).to be_persisted + + merge_request.reload + expect(merge_request.pipelines_for_merge_request.count).to eq(1) + expect(merge_request.pipelines_for_merge_request.last).to be_failed + expect(merge_request.pipelines_for_merge_request.last).to be_config_error + end + end end it 'increments the usage data counter of create event' do diff --git a/spec/services/merge_requests/refresh_service_spec.rb b/spec/services/merge_requests/refresh_service_spec.rb index b67779a912d..4f052fa3edb 100644 --- a/spec/services/merge_requests/refresh_service_spec.rb +++ b/spec/services/merge_requests/refresh_service_spec.rb @@ -148,7 +148,7 @@ describe MergeRequests::RefreshService do describe 'Pipelines for merge requests' do before do - stub_ci_pipeline_yaml_file(YAML.dump(config)) + stub_ci_pipeline_yaml_file(config) end subject { service.new(project, @user).execute(@oldrev, @newrev, ref) } @@ -158,13 +158,13 @@ describe MergeRequests::RefreshService do context "when .gitlab-ci.yml has merge_requests keywords" do let(:config) do - { + YAML.dump({ test: { stage: 'test', script: 'echo', only: ['merge_requests'] } - } + }) end it 'create detached merge request pipeline with commits' do @@ -255,16 +255,28 @@ describe MergeRequests::RefreshService do end.not_to change { @merge_request.pipelines_for_merge_request.count } end end + + context 'when the pipeline should be skipped' do + it 'saves a skipped detached merge request pipeline' do + project.repository.create_file(@user, 'new-file.txt', 'A new file', + message: '[skip ci] This is a test', + branch_name: 'master') + + expect { subject } + .to change { @merge_request.pipelines_for_merge_request.count }.by(1) + expect(@merge_request.pipelines_for_merge_request.last).to be_skipped + end + end end context "when .gitlab-ci.yml does not have merge_requests keywords" do let(:config) do - { + YAML.dump({ test: { stage: 'test', script: 'echo' } - } + }) end it 'does not create a detached merge request pipeline' do @@ -272,6 +284,40 @@ describe MergeRequests::RefreshService do .not_to change { @merge_request.pipelines_for_merge_request.count } end end + + context 'when .gitlab-ci.yml is invalid' do + let(:config) { 'invalid yaml file' } + + it 'persists a pipeline with config error' do + expect { subject } + .to change { @merge_request.pipelines_for_merge_request.count }.by(1) + expect(@merge_request.pipelines_for_merge_request.last).to be_failed + expect(@merge_request.pipelines_for_merge_request.last).to be_config_error + end + end + + context 'when .gitlab-ci.yml file is valid but has a logical error' do + let(:config) do + YAML.dump({ + build: { + script: 'echo "Valid yaml syntax, but..."', + only: ['master'] + }, + test: { + script: 'echo "... I depend on build, which does not run."', + only: ['merge_request'], + needs: ['build'] + } + }) + end + + it 'persists a pipeline with config error' do + expect { subject } + .to change { @merge_request.pipelines_for_merge_request.count }.by(1) + expect(@merge_request.pipelines_for_merge_request.last).to be_failed + expect(@merge_request.pipelines_for_merge_request.last).to be_config_error + end + end end context 'push to origin repo source branch' do |