Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-03 21:08:16 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-03 21:08:16 +0300
commite9c2bf267862e22c0770cc7b3a1ed97a8b87a7fd (patch)
tree7b778e44f210132af1233ceb8801b388ac3519f5 /spec/services/merge_requests
parent946771d0b016ae92b15a60bc3290a33b94191ffe (diff)
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.rb23
-rw-r--r--spec/services/merge_requests/refresh_service_spec.rb56
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