Commit 466c1163 authored by GitLab Bot's avatar GitLab Bot

Automatic merge of gitlab-org/gitlab-ce master

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