Handle removed source projects in MR CI commits
When calling MergeRequest#ci_commit the code would previously raise an error if the source project no longer existed (e.g. because the user removed their fork). See #3599 for more information.
This commit is contained in:
parent
94b90db547
commit
d496a6b919
2 changed files with 26 additions and 1 deletions
|
@ -476,7 +476,7 @@ class MergeRequest < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def ci_commit
|
||||
if last_commit
|
||||
if last_commit and source_project
|
||||
source_project.ci_commit(last_commit.id)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -193,4 +193,29 @@ describe MergeRequest do
|
|||
it_behaves_like 'a Taskable' do
|
||||
subject { create :merge_request, :simple }
|
||||
end
|
||||
|
||||
describe '#ci_commit' do
|
||||
describe 'when the source project exists' do
|
||||
it 'returns the latest commit' do
|
||||
commit = double(:commit, id: '123abc')
|
||||
ci_commit = double(:ci_commit)
|
||||
|
||||
allow(subject).to receive(:last_commit).and_return(commit)
|
||||
|
||||
expect(subject.source_project).to receive(:ci_commit).
|
||||
with('123abc').
|
||||
and_return(ci_commit)
|
||||
|
||||
expect(subject.ci_commit).to eq(ci_commit)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'when the source project does not exist' do
|
||||
it 'returns nil' do
|
||||
allow(subject).to receive(:source_project).and_return(nil)
|
||||
|
||||
expect(subject.ci_commit).to be_nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue