Commit 2892cca8 authored by Fabio Pitino's avatar Fabio Pitino Committed by Kamil Trzciński

Remove unnecessary ci_pipeline factories

* Remove config transient
* Remove factory for 1 job pipeline
* Remove factory for 0 job pipeline
parent ce42916a
...@@ -20,7 +20,7 @@ describe Projects::Security::DashboardController do ...@@ -20,7 +20,7 @@ describe Projects::Security::DashboardController do
end end
describe 'GET #show' do describe 'GET #show' do
let(:pipeline) { create(:ci_pipeline_without_jobs, sha: project.commit.id, project: project, user: user) } let(:pipeline) { create(:ci_pipeline, sha: project.commit.id, project: project, user: user) }
render_views render_views
......
...@@ -10,7 +10,7 @@ describe 'Merge request > User sees deployment widget', :js do ...@@ -10,7 +10,7 @@ describe 'Merge request > User sees deployment widget', :js do
let(:role) { :developer } let(:role) { :developer }
let(:ref) { merge_request.target_branch } let(:ref) { merge_request.target_branch }
let(:sha) { project.commit(ref).id } let(:sha) { project.commit(ref).id }
let(:pipeline) { create(:ci_pipeline_without_jobs, sha: sha, project: project, ref: ref) } let(:pipeline) { create(:ci_pipeline, sha: sha, project: project, ref: ref) }
let!(:manual) { } let!(:manual) { }
before do before do
......
...@@ -14,22 +14,22 @@ describe EE::Gitlab::Ci::Pipeline::Quota::Size do ...@@ -14,22 +14,22 @@ describe EE::Gitlab::Ci::Pipeline::Quota::Size do
subject { described_class.new(namespace, pipeline) } subject { described_class.new(namespace, pipeline) }
shared_context 'pipeline size limit exceeded' do shared_context 'pipeline size limit exceeded' do
let(:pipeline) do
config = { rspec: { script: 'rspec' },
spinach: { script: 'spinach' } }
build(:ci_pipeline, project: project, config: config)
end
before do before do
config = YAML.dump({
rspec: { script: 'rspec' },
spinach: { script: 'spinach' }
})
stub_ci_pipeline_yaml_file(config)
plan_limits.update!(ci_pipeline_size: 1) plan_limits.update!(ci_pipeline_size: 1)
end end
end end
shared_context 'pipeline size limit not exceeded' do shared_context 'pipeline size limit not exceeded' do
let(:pipeline) { build(:ci_pipeline_with_one_job, project: project) }
before do before do
config = YAML.dump({
rspec: { script: 'rspec' }
})
stub_ci_pipeline_yaml_file(config)
plan_limits.update!(ci_pipeline_size: 2) plan_limits.update!(ci_pipeline_size: 2)
end end
end end
......
...@@ -7,10 +7,7 @@ describe ::Gitlab::Ci::Pipeline::Chain::Limit::Size do ...@@ -7,10 +7,7 @@ describe ::Gitlab::Ci::Pipeline::Chain::Limit::Size do
set(:project) { create(:project, :repository, namespace: namespace) } set(:project) { create(:project, :repository, namespace: namespace) }
set(:user) { create(:user) } set(:user) { create(:user) }
let(:pipeline) do let(:pipeline) { build(:ci_pipeline, project: project) }
build(:ci_pipeline_with_one_job, project: project,
ref: 'master')
end
let(:command) do let(:command) do
double('command', project: project, double('command', project: project,
...@@ -26,13 +23,10 @@ describe ::Gitlab::Ci::Pipeline::Chain::Limit::Size do ...@@ -26,13 +23,10 @@ describe ::Gitlab::Ci::Pipeline::Chain::Limit::Size do
gold_plan = create(:gold_plan) gold_plan = create(:gold_plan)
create(:plan_limits, plan: gold_plan, ci_pipeline_size: 1) create(:plan_limits, plan: gold_plan, ci_pipeline_size: 1)
create(:gitlab_subscription, namespace: namespace, hosted_plan: gold_plan) create(:gitlab_subscription, namespace: namespace, hosted_plan: gold_plan)
end stub_ci_pipeline_yaml_file(YAML.dump({
rspec: { script: 'rspec' },
let(:pipeline) do spinach: { script: 'spinach' }
config = { rspec: { script: 'rspec' }, }))
spinach: { script: 'spinach' } }
create(:ci_pipeline, project: project, config: config)
end end
context 'when saving incomplete pipelines' do context 'when saving incomplete pipelines' do
......
# frozen_string_literal: true
require 'spec_helper'
describe ::Gitlab::Ci::Pipeline::Chain::RemoveUnwantedChatJobs do
let(:project) { create(:project, :repository) }
let(:pipeline) do
build(:ci_pipeline_with_one_job, project: project, ref: 'master')
end
let(:command) do
double(:command, project: project, chat_data: { command: 'echo' })
end
describe '#perform!' do
it 'removes unwanted jobs for chat pipelines' do
allow(pipeline).to receive(:chat?).and_return(true)
pipeline.config_processor.jobs[:echo] = double(:job)
described_class.new(pipeline, command).perform!
expect(pipeline.config_processor.jobs.keys).to eq([:echo])
end
end
it 'does not remove any jobs for non-chat pipelines' do
described_class.new(pipeline, command).perform!
expect(pipeline.config_processor.jobs.keys).to eq([:rspec])
end
end
...@@ -23,9 +23,9 @@ describe Ci::Pipeline do ...@@ -23,9 +23,9 @@ describe Ci::Pipeline do
end end
describe '#with_vulnerabilities scope' do describe '#with_vulnerabilities scope' do
let!(:pipeline_1) { create(:ci_pipeline_without_jobs, project: project) } let!(:pipeline_1) { create(:ci_pipeline, project: project) }
let!(:pipeline_2) { create(:ci_pipeline_without_jobs, project: project) } let!(:pipeline_2) { create(:ci_pipeline, project: project) }
let!(:pipeline_3) { create(:ci_pipeline_without_jobs, project: project) } let!(:pipeline_3) { create(:ci_pipeline, project: project) }
before do before do
create(:vulnerabilities_occurrence, pipelines: [pipeline_1], project: pipeline.project) create(:vulnerabilities_occurrence, pipelines: [pipeline_1], project: pipeline.project)
......
...@@ -597,7 +597,7 @@ describe MergeRequest do ...@@ -597,7 +597,7 @@ describe MergeRequest do
describe '#mergeable_with_quick_action?' do describe '#mergeable_with_quick_action?' do
def create_pipeline(status) def create_pipeline(status)
pipeline = create(:ci_pipeline_with_one_job, pipeline = create(:ci_pipeline,
project: project, project: project,
ref: merge_request.source_branch, ref: merge_request.source_branch,
sha: merge_request.diff_head_sha, sha: merge_request.diff_head_sha,
......
...@@ -1378,9 +1378,9 @@ describe Project do ...@@ -1378,9 +1378,9 @@ describe Project do
describe '#latest_pipeline_with_security_reports' do describe '#latest_pipeline_with_security_reports' do
let(:project) { create(:project) } let(:project) { create(:project) }
let!(:pipeline_1) { create(:ci_pipeline_without_jobs, project: project) } let!(:pipeline_1) { create(:ci_pipeline, project: project) }
let!(:pipeline_2) { create(:ci_pipeline_without_jobs, project: project) } let!(:pipeline_2) { create(:ci_pipeline, project: project) }
let!(:pipeline_3) { create(:ci_pipeline_without_jobs, project: project) } let!(:pipeline_3) { create(:ci_pipeline, project: project) }
subject { project.latest_pipeline_with_security_reports } subject { project.latest_pipeline_with_security_reports }
......
...@@ -18,7 +18,7 @@ describe API::VulnerabilityFindings do ...@@ -18,7 +18,7 @@ describe API::VulnerabilityFindings do
end end
let(:pipeline) { create(:ci_empty_pipeline, status: :created, project: project) } let(:pipeline) { create(:ci_empty_pipeline, status: :created, project: project) }
let(:pipeline_without_vulnerabilities) { create(:ci_pipeline_without_jobs, status: :created, project: project) } let(:pipeline_without_vulnerabilities) { create(:ci_pipeline, status: :created, project: project) }
let(:build_ds) { create(:ci_build, :success, name: 'ds_job', pipeline: pipeline, project: project) } let(:build_ds) { create(:ci_build, :success, name: 'ds_job', pipeline: pipeline, project: project) }
let(:build_sast) { create(:ci_build, :success, name: 'sast_job', pipeline: pipeline, project: project) } let(:build_sast) { create(:ci_build, :success, name: 'sast_job', pipeline: pipeline, project: project) }
......
...@@ -440,7 +440,7 @@ describe SystemNoteService do ...@@ -440,7 +440,7 @@ describe SystemNoteService do
describe '.add_to_merge_train_when_pipeline_succeeds' do describe '.add_to_merge_train_when_pipeline_succeeds' do
subject { described_class.add_to_merge_train_when_pipeline_succeeds(noteable, project, author, pipeline.sha) } subject { described_class.add_to_merge_train_when_pipeline_succeeds(noteable, project, author, pipeline.sha) }
let(:pipeline) { build(:ci_pipeline_without_jobs) } let(:pipeline) { build(:ci_pipeline) }
let(:noteable) do let(:noteable) do
create(:merge_request, source_project: project, target_project: project) create(:merge_request, source_project: project, target_project: project)
......
...@@ -149,7 +149,7 @@ describe Projects::PipelinesController do ...@@ -149,7 +149,7 @@ describe Projects::PipelinesController do
end end
describe 'GET show.json' do describe 'GET show.json' do
let(:pipeline) { create(:ci_pipeline_with_one_job, project: project) } let(:pipeline) { create(:ci_pipeline, project: project) }
it 'returns the pipeline' do it 'returns the pipeline' do
get_pipeline_json get_pipeline_json
......
# frozen_string_literal: true # frozen_string_literal: true
FactoryBot.define do FactoryBot.define do
# TODO: we can remove this factory in favour of :ci_pipeline
factory :ci_empty_pipeline, class: Ci::Pipeline do factory :ci_empty_pipeline, class: Ci::Pipeline do
source { :push } source { :push }
ref { 'master' } ref { 'master' }
...@@ -10,20 +11,6 @@ FactoryBot.define do ...@@ -10,20 +11,6 @@ FactoryBot.define do
project project
factory :ci_pipeline_without_jobs do
after(:build) do |pipeline|
pipeline.instance_variable_set(:@ci_yaml_file, YAML.dump({}))
end
end
factory :ci_pipeline_with_one_job do
after(:build) do |pipeline|
allow(pipeline).to receive(:ci_yaml_file) do
pipeline.instance_variable_set(:@ci_yaml_file, YAML.dump({ rspec: { script: "ls" } }))
end
end
end
# Persist merge request head_pipeline_id # Persist merge request head_pipeline_id
# on pipeline factories to avoid circular references # on pipeline factories to avoid circular references
transient { head_pipeline_of { nil } } transient { head_pipeline_of { nil } }
...@@ -34,24 +21,8 @@ FactoryBot.define do ...@@ -34,24 +21,8 @@ FactoryBot.define do
end end
factory :ci_pipeline do factory :ci_pipeline do
transient { config { nil } }
after(:build) do |pipeline, evaluator|
if evaluator.config
pipeline.instance_variable_set(:@ci_yaml_file, YAML.dump(evaluator.config))
# Populates pipeline with errors
pipeline.config_processor if evaluator.config
else
pipeline.instance_variable_set(:@ci_yaml_file, File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')))
end
end
trait :invalid do trait :invalid do
config do yaml_errors { 'invalid YAML' }
{ rspec: nil }
end
failure_reason { :config_error } failure_reason { :config_error }
end end
......
...@@ -7,7 +7,7 @@ FactoryBot.define do ...@@ -7,7 +7,7 @@ FactoryBot.define do
stage_idx { 0 } stage_idx { 0 }
status { 'success' } status { 'success' }
description { 'commit status'} description { 'commit status'}
pipeline factory: :ci_pipeline_with_one_job pipeline factory: :ci_pipeline
started_at { 'Tue, 26 Jan 2016 08:21:42 +0100'} started_at { 'Tue, 26 Jan 2016 08:21:42 +0100'}
finished_at { 'Tue, 26 Jan 2016 08:23:42 +0100'} finished_at { 'Tue, 26 Jan 2016 08:23:42 +0100'}
......
...@@ -11,7 +11,7 @@ describe 'Merge request > User sees deployment widget', :js do ...@@ -11,7 +11,7 @@ describe 'Merge request > User sees deployment widget', :js do
let(:role) { :developer } let(:role) { :developer }
let(:ref) { merge_request.target_branch } let(:ref) { merge_request.target_branch }
let(:sha) { project.commit(ref).id } let(:sha) { project.commit(ref).id }
let(:pipeline) { create(:ci_pipeline_without_jobs, sha: sha, project: project, ref: ref) } let(:pipeline) { create(:ci_pipeline, sha: sha, project: project, ref: ref) }
let!(:manual) { } let!(:manual) { }
before do before do
...@@ -33,7 +33,7 @@ describe 'Merge request > User sees deployment widget', :js do ...@@ -33,7 +33,7 @@ describe 'Merge request > User sees deployment widget', :js do
end end
context 'when a user created a new merge request with the same SHA' do context 'when a user created a new merge request with the same SHA' do
let(:pipeline2) { create(:ci_pipeline_without_jobs, sha: sha, project: project, ref: 'new-patch-1') } let(:pipeline2) { create(:ci_pipeline, sha: sha, project: project, ref: 'new-patch-1') }
let(:build2) { create(:ci_build, :success, pipeline: pipeline2) } let(:build2) { create(:ci_build, :success, pipeline: pipeline2) }
let(:environment2) { create(:environment, project: project) } let(:environment2) { create(:environment, project: project) }
let!(:deployment2) { create(:deployment, environment: environment2, sha: sha, ref: 'new-patch-1', deployable: build2) } let!(:deployment2) { create(:deployment, environment: environment2, sha: sha, ref: 'new-patch-1', deployable: build2) }
......
...@@ -44,7 +44,7 @@ describe 'Merge request > User sees merge widget', :js do ...@@ -44,7 +44,7 @@ describe 'Merge request > User sees merge widget', :js do
context 'view merge request' do context 'view merge request' do
let!(:environment) { create(:environment, project: project) } let!(:environment) { create(:environment, project: project) }
let(:sha) { project.commit(merge_request.source_branch).sha } let(:sha) { project.commit(merge_request.source_branch).sha }
let(:pipeline) { create(:ci_pipeline_without_jobs, status: 'success', sha: sha, project: project, ref: merge_request.source_branch) } let(:pipeline) { create(:ci_pipeline, status: 'success', sha: sha, project: project, ref: merge_request.source_branch) }
let(:build) { create(:ci_build, :success, pipeline: pipeline) } let(:build) { create(:ci_build, :success, pipeline: pipeline) }
let!(:deployment) do let!(:deployment) do
...@@ -745,7 +745,7 @@ describe 'Merge request > User sees merge widget', :js do ...@@ -745,7 +745,7 @@ describe 'Merge request > User sees merge widget', :js do
context 'when MR has pipeline but user does not have permission' do context 'when MR has pipeline but user does not have permission' do
let(:sha) { project.commit(merge_request.source_branch).sha } let(:sha) { project.commit(merge_request.source_branch).sha }
let!(:pipeline) { create(:ci_pipeline_without_jobs, status: 'success', sha: sha, project: project, ref: merge_request.source_branch) } let!(:pipeline) { create(:ci_pipeline, status: 'success', sha: sha, project: project, ref: merge_request.source_branch) }
before do before do
project.update( project.update(
......
...@@ -7,9 +7,7 @@ describe Gitlab::Ci::Pipeline::Chain::Populate do ...@@ -7,9 +7,7 @@ describe Gitlab::Ci::Pipeline::Chain::Populate do
set(:user) { create(:user) } set(:user) { create(:user) }
let(:pipeline) do let(:pipeline) do
build(:ci_pipeline_with_one_job, project: project, build(:ci_pipeline, project: project, ref: 'master', user: user)
ref: 'master',
user: user)
end end
let(:command) do let(:command) do
...@@ -22,6 +20,14 @@ describe Gitlab::Ci::Pipeline::Chain::Populate do ...@@ -22,6 +20,14 @@ describe Gitlab::Ci::Pipeline::Chain::Populate do
let(:step) { described_class.new(pipeline, command) } let(:step) { described_class.new(pipeline, command) }
let(:config) do
{ rspec: { script: 'rspec' } }
end
before do
stub_ci_pipeline_yaml_file(YAML.dump(config))
end
context 'when pipeline doesn not have seeds block' do context 'when pipeline doesn not have seeds block' do
before do before do
step.perform! step.perform!
...@@ -59,10 +65,6 @@ describe Gitlab::Ci::Pipeline::Chain::Populate do ...@@ -59,10 +65,6 @@ describe Gitlab::Ci::Pipeline::Chain::Populate do
} } } }
end end
let(:pipeline) do
build(:ci_pipeline, project: project, config: config)
end
before do before do
step.perform! step.perform!
end end
...@@ -202,10 +204,6 @@ describe Gitlab::Ci::Pipeline::Chain::Populate do ...@@ -202,10 +204,6 @@ describe Gitlab::Ci::Pipeline::Chain::Populate do
prod: { script: 'cap prod', stage: 'deploy', only: ['tags'] } } prod: { script: 'cap prod', stage: 'deploy', only: ['tags'] } }
end end
let(:pipeline) do
build(:ci_pipeline, ref: 'master', project: project, config: config)
end
it_behaves_like 'a correct pipeline' it_behaves_like 'a correct pipeline'
context 'when variables expression is specified' do context 'when variables expression is specified' do
......
...@@ -6,13 +6,17 @@ describe Gitlab::Ci::Pipeline::Chain::RemoveUnwantedChatJobs do ...@@ -6,13 +6,17 @@ describe Gitlab::Ci::Pipeline::Chain::RemoveUnwantedChatJobs do
let(:project) { create(:project, :repository) } let(:project) { create(:project, :repository) }
let(:pipeline) do let(:pipeline) do
build(:ci_pipeline_with_one_job, project: project, ref: 'master') build(:ci_pipeline, project: project)
end end
let(:command) do let(:command) do
double(:command, project: project, chat_data: { command: 'echo' }) double(:command, project: project, chat_data: { command: 'echo' })
end end
before do
stub_ci_pipeline_yaml_file(YAML.dump(rspec: { script: 'rspec' }))
end
describe '#perform!' do describe '#perform!' do
it 'removes unwanted jobs for chat pipelines' do it 'removes unwanted jobs for chat pipelines' do
allow(pipeline).to receive(:chat?).and_return(true) allow(pipeline).to receive(:chat?).and_return(true)
......
...@@ -13,11 +13,13 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do ...@@ -13,11 +13,13 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do
save_incompleted: true) save_incompleted: true)
end end
let(:pipeline) do
build(:ci_pipeline, project: project)
end
let!(:step) { described_class.new(pipeline, command) } let!(:step) { described_class.new(pipeline, command) }
before do subject { step.perform! }
step.perform!
end
context 'when pipeline has no YAML configuration' do context 'when pipeline has no YAML configuration' do
let(:pipeline) do let(:pipeline) do
...@@ -25,18 +27,23 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do ...@@ -25,18 +27,23 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do
end end
it 'appends errors about missing configuration' do it 'appends errors about missing configuration' do
subject
expect(pipeline.errors.to_a) expect(pipeline.errors.to_a)
.to include 'Missing .gitlab-ci.yml file' .to include 'Missing .gitlab-ci.yml file'
end end
it 'breaks the chain' do it 'breaks the chain' do
subject
expect(step.break?).to be true expect(step.break?).to be true
end end
end end
context 'when YAML configuration contains errors' do context 'when YAML configuration contains errors' do
let(:pipeline) do before do
build(:ci_pipeline, project: project, config: 'invalid YAML') stub_ci_pipeline_yaml_file('invalid YAML')
subject
end end
it 'appends errors about YAML errors' do it 'appends errors about YAML errors' do
...@@ -56,10 +63,14 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do ...@@ -56,10 +63,14 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do
end end
it 'fails the pipeline' do it 'fails the pipeline' do
subject
expect(pipeline.reload).to be_failed expect(pipeline.reload).to be_failed
end end
it 'sets a config error failure reason' do it 'sets a config error failure reason' do
subject
expect(pipeline.reload.config_error?).to eq true expect(pipeline.reload.config_error?).to eq true
end end
end end
...@@ -72,6 +83,8 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do ...@@ -72,6 +83,8 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do
end end
it 'does not drop pipeline' do it 'does not drop pipeline' do
subject
expect(pipeline).not_to be_failed expect(pipeline).not_to be_failed
expect(pipeline).not_to be_persisted expect(pipeline).not_to be_persisted
end end
...@@ -79,17 +92,15 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do ...@@ -79,17 +92,15 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do
end end
context 'when pipeline contains configuration validation errors' do context 'when pipeline contains configuration validation errors' do
let(:config) do before do
{ stub_ci_pipeline_yaml_file(YAML.dump({
rspec: { rspec: {
before_script: 10, before_script: 10,
script: 'ls -al' script: 'ls -al'
} }
} }))
end
let(:pipeline) do subject
build(:ci_pipeline, project: project, config: config)
end end
it 'appends configuration validation errors to pipeline errors' do it 'appends configuration validation errors to pipeline errors' do
...@@ -103,8 +114,13 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do ...@@ -103,8 +114,13 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do
end end
context 'when pipeline is correct and complete' do context 'when pipeline is correct and complete' do
let(:pipeline) do before do
build(:ci_pipeline_with_one_job, project: project) stub_ci_pipeline_yaml_file(YAML.dump({
rspec: {
script: 'rspec'
}
}))
subject
end end
it 'does not invalidate the pipeline' do it 'does not invalidate the pipeline' do
...@@ -119,6 +135,7 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do ...@@ -119,6 +135,7 @@ describe Gitlab::Ci::Pipeline::Chain::Validate::Config do
context 'when pipeline source is merge request' do context 'when pipeline source is merge request' do
before do before do
stub_ci_pipeline_yaml_file(YAML.dump(config)) stub_ci_pipeline_yaml_file(YAML.dump(config))
subject
end end
let(:pipeline) { build_stubbed(:ci_pipeline, project: project) } let(:pipeline) { build_stubbed(:ci_pipeline, project: project) }
......
...@@ -132,10 +132,6 @@ describe Gitlab::ImportExport::FastHashSerializer do ...@@ -132,10 +132,6 @@ describe Gitlab::ImportExport::FastHashSerializer do
end end
it 'has no when YML attributes but only the DB column' do it 'has no when YML attributes but only the DB column' do
allow_any_instance_of(Ci::Pipeline)
.to receive(:ci_yaml_file)
.and_return(File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')))
expect_any_instance_of(Gitlab::Ci::YamlProcessor).not_to receive(:build_attributes) expect_any_instance_of(Gitlab::Ci::YamlProcessor).not_to receive(:build_attributes)
subject subject
......
...@@ -203,7 +203,6 @@ describe Gitlab::ImportExport::ProjectTreeSaver do ...@@ -203,7 +203,6 @@ describe Gitlab::ImportExport::ProjectTreeSaver do
end end
it 'has no when YML attributes but only the DB column' do it 'has no when YML attributes but only the DB column' do
allow_any_instance_of(Ci::Pipeline).to receive(:ci_yaml_file).and_return(File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')))
expect_any_instance_of(Gitlab::Ci::YamlProcessor).not_to receive(:build_attributes) expect_any_instance_of(Gitlab::Ci::YamlProcessor).not_to receive(:build_attributes)
saved_project_json saved_project_json
......
...@@ -980,7 +980,11 @@ describe Ci::Pipeline, :mailer do ...@@ -980,7 +980,11 @@ describe Ci::Pipeline, :mailer do
describe 'pipeline stages' do describe 'pipeline stages' do
describe '#stage_seeds' do describe '#stage_seeds' do
let(:pipeline) { build(:ci_pipeline, config: config) } before do
stub_ci_pipeline_yaml_file(YAML.dump(config))
end
let(:pipeline) { build(:ci_pipeline) }
let(:config) { { rspec: { script: 'rake' } } } let(:config) { { rspec: { script: 'rake' } } }
it 'returns preseeded stage seeds object' do it 'returns preseeded stage seeds object' do
...@@ -1010,7 +1014,7 @@ describe Ci::Pipeline, :mailer do ...@@ -1010,7 +1014,7 @@ describe Ci::Pipeline, :mailer do
context 'when refs policy is specified' do context 'when refs policy is specified' do
let(:pipeline) do let(:pipeline) do
build(:ci_pipeline, ref: 'feature', tag: true, config: config) build(:ci_pipeline, ref: 'feature', tag: true)
end end
let(:config) do let(:config) do
...@@ -1028,7 +1032,7 @@ describe Ci::Pipeline, :mailer do ...@@ -1028,7 +1032,7 @@ describe Ci::Pipeline, :mailer do
end end
context 'when source policy is specified' do context 'when source policy is specified' do
let(:pipeline) { build(:ci_pipeline, source: :schedule, config: config) } let(:pipeline) { build(:ci_pipeline, source: :schedule) }
let(:config) do let(:config) do
{ production: { stage: 'deploy', script: 'cap prod', only: ['triggers'] }, { production: { stage: 'deploy', script: 'cap prod', only: ['triggers'] },
...@@ -1060,7 +1064,7 @@ describe Ci::Pipeline, :mailer do ...@@ -1060,7 +1064,7 @@ describe Ci::Pipeline, :mailer do
context 'when user configured kubernetes from CI/CD > Clusters' do context 'when user configured kubernetes from CI/CD > Clusters' do
let!(:cluster) { create(:cluster, :project, :provided_by_gcp) } let!(:cluster) { create(:cluster, :project, :provided_by_gcp) }
let(:project) { cluster.project } let(:project) { cluster.project }
let(:pipeline) { build(:ci_pipeline, project: project, config: config) } let(:pipeline) { build(:ci_pipeline, project: project) }
it 'returns seeds for kubernetes dependent job' do it 'returns seeds for kubernetes dependent job' do
seeds = pipeline.stage_seeds seeds = pipeline.stage_seeds
...@@ -1098,6 +1102,10 @@ describe Ci::Pipeline, :mailer do ...@@ -1098,6 +1102,10 @@ describe Ci::Pipeline, :mailer do
end end
describe '#seeds_size' do describe '#seeds_size' do
before do
stub_ci_pipeline_yaml_file(YAML.dump(config))
end
context 'when refs policy is specified' do context 'when refs policy is specified' do
let(:config) do let(:config) do
{ production: { stage: 'deploy', script: 'cap prod', only: ['master'] }, { production: { stage: 'deploy', script: 'cap prod', only: ['master'] },
...@@ -1105,7 +1113,7 @@ describe Ci::Pipeline, :mailer do ...@@ -1105,7 +1113,7 @@ describe Ci::Pipeline, :mailer do
end end
let(:pipeline) do let(:pipeline) do
build(:ci_pipeline, ref: 'feature', tag: true, config: config) build(:ci_pipeline, ref: 'feature', tag: true)
end end
it 'returns real seeds size' do it 'returns real seeds size' do
...@@ -2886,21 +2894,25 @@ describe Ci::Pipeline, :mailer do ...@@ -2886,21 +2894,25 @@ describe Ci::Pipeline, :mailer do
end end
describe '#has_yaml_errors?' do describe '#has_yaml_errors?' do
before do
stub_ci_pipeline_yaml_file(YAML.dump(config))
end
let(:pipeline) { create(:ci_pipeline) }
context 'when pipeline has errors' do context 'when pipeline has errors' do
let(:pipeline) do let(:config) { { rspec: nil } }
create(:ci_pipeline, config: { rspec: nil })
end
it 'contains yaml errors' do it 'contains yaml errors' do
pipeline.config_processor
expect(pipeline).to have_yaml_errors expect(pipeline).to have_yaml_errors
expect(pipeline.yaml_errors).to include('contains unknown keys') expect(pipeline.yaml_errors).to include('contains unknown keys')
end end
end end
context 'when pipeline has undefined error' do context 'when pipeline has undefined error' do
let(:pipeline) do let(:config) { double(:config) }
create(:ci_pipeline, config: {})
end
it 'contains yaml errors' do it 'contains yaml errors' do
expect(::Gitlab::Ci::YamlProcessor).to receive(:new) expect(::Gitlab::Ci::YamlProcessor).to receive(:new)
...@@ -2910,14 +2922,16 @@ describe Ci::Pipeline, :mailer do ...@@ -2910,14 +2922,16 @@ describe Ci::Pipeline, :mailer do
.with(be_a(RuntimeError), anything) .with(be_a(RuntimeError), anything)
.and_call_original .and_call_original
pipeline.config_processor
expect(pipeline).to have_yaml_errors expect(pipeline).to have_yaml_errors
expect(pipeline.yaml_errors).to include('Undefined error') expect(pipeline.yaml_errors).to include('Undefined error')
end end
end end
context 'when pipeline does not have errors' do context 'when pipeline does not have errors' do
let(:pipeline) do let(:config) do
create(:ci_pipeline, config: { rspec: { script: 'rake test' } }) { rspec: { script: 'rake test' } }
end end
it 'does not contain yaml errors' do it 'does not contain yaml errors' do
......
...@@ -2807,7 +2807,7 @@ describe MergeRequest do ...@@ -2807,7 +2807,7 @@ describe MergeRequest do
describe '#mergeable_with_quick_action?' do describe '#mergeable_with_quick_action?' do
def create_pipeline(status) def create_pipeline(status)
pipeline = create(:ci_pipeline_with_one_job, pipeline = create(:ci_pipeline,
project: project, project: project,
ref: merge_request.source_branch, ref: merge_request.source_branch,
sha: merge_request.diff_head_sha, sha: merge_request.diff_head_sha,
...@@ -2922,9 +2922,9 @@ describe MergeRequest do ...@@ -2922,9 +2922,9 @@ describe MergeRequest do
let(:project) { create(:project, :public, :repository) } let(:project) { create(:project, :public, :repository) }
let(:merge_request) { create(:merge_request, source_project: project) } let(:merge_request) { create(:merge_request, source_project: project) }
let!(:first_pipeline) { create(:ci_pipeline_without_jobs, pipeline_arguments) } let!(:first_pipeline) { create(:ci_pipeline, pipeline_arguments) }
let!(:last_pipeline) { create(:ci_pipeline_without_jobs, pipeline_arguments) } let!(:last_pipeline) { create(:ci_pipeline, pipeline_arguments) }
let!(:last_pipeline_with_other_ref) { create(:ci_pipeline_without_jobs, pipeline_arguments.merge(ref: 'other')) } let!(:last_pipeline_with_other_ref) { create(:ci_pipeline, pipeline_arguments.merge(ref: 'other')) }
it 'returns latest pipeline for the target branch' do it 'returns latest pipeline for the target branch' do
expect(merge_request.base_pipeline).to eq(last_pipeline) expect(merge_request.base_pipeline).to eq(last_pipeline)
......
...@@ -12,7 +12,7 @@ describe API::MergeRequests do ...@@ -12,7 +12,7 @@ describe API::MergeRequests do
let(:project) { create(:project, :public, :repository, creator: user, namespace: user.namespace, only_allow_merge_if_pipeline_succeeds: false) } let(:project) { create(:project, :public, :repository, creator: user, namespace: user.namespace, only_allow_merge_if_pipeline_succeeds: false) }
let(:milestone) { create(:milestone, title: '1.0.0', project: project) } let(:milestone) { create(:milestone, title: '1.0.0', project: project) }
let(:milestone1) { create(:milestone, title: '0.9', project: project) } let(:milestone1) { create(:milestone, title: '0.9', project: project) }
let!(:merge_request) { create(:merge_request, :simple, milestone: milestone1, author: user, assignees: [user], source_project: project, target_project: project, title: "Test", created_at: base_time) } let!(:merge_request) { create(:merge_request, :simple, milestone: milestone1, author: user, assignees: [user], source_project: project, target_project: project, source_branch: 'markdown', title: "Test", created_at: base_time) }
let!(:merge_request_closed) { create(:merge_request, state: "closed", milestone: milestone1, author: user, assignees: [user], source_project: project, target_project: project, title: "Closed test", created_at: base_time + 1.second) } let!(:merge_request_closed) { create(:merge_request, state: "closed", milestone: milestone1, author: user, assignees: [user], source_project: project, target_project: project, title: "Closed test", created_at: base_time + 1.second) }
let!(:merge_request_merged) { create(:merge_request, state: "merged", author: user, assignees: [user], source_project: project, target_project: project, title: "Merged test", created_at: base_time + 2.seconds, merge_commit_sha: '9999999999999999999999999999999999999999') } let!(:merge_request_merged) { create(:merge_request, state: "merged", author: user, assignees: [user], source_project: project, target_project: project, title: "Merged test", created_at: base_time + 2.seconds, merge_commit_sha: '9999999999999999999999999999999999999999') }
let!(:merge_request_locked) { create(:merge_request, state: "locked", milestone: milestone1, author: user, assignees: [user], source_project: project, target_project: project, title: "Locked test", created_at: base_time + 1.second) } let!(:merge_request_locked) { create(:merge_request, state: "locked", milestone: milestone1, author: user, assignees: [user], source_project: project, target_project: project, title: "Locked test", created_at: base_time + 1.second) }
...@@ -1330,7 +1330,7 @@ describe API::MergeRequests do ...@@ -1330,7 +1330,7 @@ describe API::MergeRequests do
context 'accepts remove_source_branch parameter' do context 'accepts remove_source_branch parameter' do
let(:params) do let(:params) do
{ title: 'Test merge_request', { title: 'Test merge_request',
source_branch: 'markdown', source_branch: 'feature_conflict',
target_branch: 'master', target_branch: 'master',
author: user } author: user }
end end
...@@ -1490,7 +1490,7 @@ describe API::MergeRequests do ...@@ -1490,7 +1490,7 @@ describe API::MergeRequests do
end end
describe "PUT /projects/:id/merge_requests/:merge_request_iid/merge" do describe "PUT /projects/:id/merge_requests/:merge_request_iid/merge" do
let(:pipeline) { create(:ci_pipeline_without_jobs) } let(:pipeline) { create(:ci_pipeline) }
it "returns merge_request in case of success" do it "returns merge_request in case of success" do
put api("/projects/#{project.id}/merge_requests/#{merge_request.iid}/merge", user) put api("/projects/#{project.id}/merge_requests/#{merge_request.iid}/merge", user)
......
...@@ -314,7 +314,7 @@ describe API::Runner, :clean_gitlab_redis_shared_state do ...@@ -314,7 +314,7 @@ describe API::Runner, :clean_gitlab_redis_shared_state do
let(:root_namespace) { create(:namespace) } let(:root_namespace) { create(:namespace) }
let(:namespace) { create(:namespace, parent: root_namespace) } let(:namespace) { create(:namespace, parent: root_namespace) }
let(:project) { create(:project, namespace: namespace, shared_runners_enabled: false) } let(:project) { create(:project, namespace: namespace, shared_runners_enabled: false) }
let(:pipeline) { create(:ci_pipeline_without_jobs, project: project, ref: 'master') } let(:pipeline) { create(:ci_pipeline, project: project, ref: 'master') }
let(:runner) { create(:ci_runner, :project, projects: [project]) } let(:runner) { create(:ci_runner, :project, projects: [project]) }
let(:job) do let(:job) do
create(:ci_build, :artifacts, :extended_options, create(:ci_build, :artifacts, :extended_options,
...@@ -612,7 +612,7 @@ describe API::Runner, :clean_gitlab_redis_shared_state do ...@@ -612,7 +612,7 @@ describe API::Runner, :clean_gitlab_redis_shared_state do
end end
context 'when job is made for merge request' do context 'when job is made for merge request' do
let(:pipeline) { create(:ci_pipeline_without_jobs, source: :merge_request_event, project: project, ref: 'feature', merge_request: merge_request) } let(:pipeline) { create(:ci_pipeline, source: :merge_request_event, project: project, ref: 'feature', merge_request: merge_request) }
let!(:job) { create(:ci_build, pipeline: pipeline, name: 'spinach', ref: 'feature', stage: 'test', stage_idx: 0) } let!(:job) { create(:ci_build, pipeline: pipeline, name: 'spinach', ref: 'feature', stage: 'test', stage_idx: 0) }
let(:merge_request) { create(:merge_request) } let(:merge_request) { create(:merge_request) }
......
...@@ -115,7 +115,7 @@ describe PipelineDetailsEntity do ...@@ -115,7 +115,7 @@ describe PipelineDetailsEntity do
context 'when pipeline has YAML errors' do context 'when pipeline has YAML errors' do
let(:pipeline) do let(:pipeline) do
create(:ci_pipeline, config: { rspec: { invalid: :value } }) create(:ci_pipeline, yaml_errors: 'Some error occurred')
end end
it 'contains information about error' do it 'contains information about error' do
......
...@@ -13,8 +13,7 @@ describe AutoMerge::MergeWhenPipelineSucceedsService do ...@@ -13,8 +13,7 @@ describe AutoMerge::MergeWhenPipelineSucceedsService do
end end
let(:pipeline) do let(:pipeline) do
create(:ci_pipeline_with_one_job, ref: mr_merge_if_green_enabled.source_branch, create(:ci_pipeline, ref: mr_merge_if_green_enabled.source_branch, project: project)
project: project)
end end
let(:service) do let(:service) do
......
...@@ -10,9 +10,7 @@ describe MergeRequests::AddTodoWhenBuildFailsService do ...@@ -10,9 +10,7 @@ describe MergeRequests::AddTodoWhenBuildFailsService do
let(:ref) { merge_request.source_branch } let(:ref) { merge_request.source_branch }
let(:pipeline) do let(:pipeline) do
create(:ci_pipeline_with_one_job, ref: ref, create(:ci_pipeline, ref: ref, project: project, sha: sha)
project: project,
sha: sha)
end end
let(:service) do let(:service) do
......
...@@ -190,7 +190,7 @@ describe MergeRequests::UpdateService, :mailer do ...@@ -190,7 +190,7 @@ describe MergeRequests::UpdateService, :mailer do
context 'with finished pipeline' do context 'with finished pipeline' do
before do before do
create(:ci_pipeline_with_one_job, create(:ci_pipeline,
project: project, project: project,
ref: merge_request.source_branch, ref: merge_request.source_branch,
sha: merge_request.diff_head_sha, sha: merge_request.diff_head_sha,
...@@ -212,7 +212,7 @@ describe MergeRequests::UpdateService, :mailer do ...@@ -212,7 +212,7 @@ describe MergeRequests::UpdateService, :mailer do
before do before do
service_mock = double service_mock = double
create( create(
:ci_pipeline_with_one_job, :ci_pipeline,
project: project, project: project,
ref: merge_request.source_branch, ref: merge_request.source_branch,
sha: merge_request.diff_head_sha, sha: merge_request.diff_head_sha,
......
...@@ -14,7 +14,7 @@ describe ::SystemNotes::MergeRequestsService do ...@@ -14,7 +14,7 @@ describe ::SystemNotes::MergeRequestsService do
let(:service) { described_class.new(noteable: noteable, project: project, author: author) } let(:service) { described_class.new(noteable: noteable, project: project, author: author) }
describe '.merge_when_pipeline_succeeds' do describe '.merge_when_pipeline_succeeds' do
let(:pipeline) { build(:ci_pipeline_without_jobs )} let(:pipeline) { build(:ci_pipeline) }
subject { service.merge_when_pipeline_succeeds(pipeline.sha) } subject { service.merge_when_pipeline_succeeds(pipeline.sha) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment