Skip to content
Snippets Groups Projects
Commit eb93c451 authored by Stan Hu's avatar Stan Hu Committed by 🤖 GitLab Bot 🤖
Browse files

Merge branch 'mc/bug/nil-take' into 'master'

Fix nil take regression

Closes #65725

See merge request gitlab-org/gitlab-ce!31554

(cherry picked from commit ee028785)

56876070 Fix nil take regression
parent 30b93933
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -1487,6 +1487,9 @@ class Project < ApplicationRecord
end
 
def pipeline_for(ref, sha = nil, id = nil)
sha ||= commit(ref).try(:sha)
return unless sha
if id.present?
pipelines_for(ref, sha).find_by(id: id)
else
Loading
Loading
@@ -1494,11 +1497,7 @@ class Project < ApplicationRecord
end
end
 
def pipelines_for(ref, sha = nil)
sha ||= commit(ref).try(:sha)
return unless sha
def pipelines_for(ref, sha)
ci_pipelines.order(id: :desc).where(sha: sha, ref: ref)
end
 
Loading
Loading
Loading
Loading
@@ -1156,7 +1156,6 @@ describe Project do
 
describe '#pipeline_for' do
let(:project) { create(:project, :repository) }
let!(:pipeline) { create_pipeline(project) }
 
shared_examples 'giving the correct pipeline' do
it { is_expected.to eq(pipeline) }
Loading
Loading
@@ -1168,24 +1167,34 @@ describe Project do
end
end
 
context 'with explicit sha' do
subject { project.pipeline_for('master', pipeline.sha) }
context 'with a matching pipeline' do
let!(:pipeline) { create_pipeline(project) }
context 'with explicit sha' do
subject { project.pipeline_for('master', pipeline.sha) }
it_behaves_like 'giving the correct pipeline'
context 'with supplied id' do
let!(:other_pipeline) { create_pipeline(project) }
 
it_behaves_like 'giving the correct pipeline'
subject { project.pipeline_for('master', pipeline.sha, other_pipeline.id) }
 
context 'with supplied id' do
let!(:other_pipeline) { create_pipeline(project) }
it { is_expected.to eq(other_pipeline) }
end
end
 
subject { project.pipeline_for('master', pipeline.sha, other_pipeline.id) }
context 'with implicit sha' do
subject { project.pipeline_for('master') }
 
it { is_expected.to eq(other_pipeline) }
it_behaves_like 'giving the correct pipeline'
end
end
 
context 'with implicit sha' do
context 'when there is no matching pipeline' do
subject { project.pipeline_for('master') }
 
it_behaves_like 'giving the correct pipeline'
it { is_expected.to be_nil }
end
end
 
Loading
Loading
@@ -1194,11 +1203,9 @@ describe Project do
let!(:pipeline) { create_pipeline(project) }
let!(:other_pipeline) { create_pipeline(project) }
 
context 'with implicit sha' do
subject { project.pipelines_for('master') }
subject { project.pipelines_for(project.default_branch, project.commit.sha) }
 
it { is_expected.to contain_exactly(pipeline, other_pipeline) }
end
it { is_expected.to contain_exactly(pipeline, other_pipeline) }
end
 
describe '#builds_enabled' do
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