Fix unexpected exception by failed to find an actual head pipeline

Add changelog
This commit is contained in:
Shinya Maeda 2019-01-09 14:18:46 +09:00
parent b2e807e624
commit 1c248cd47c
3 changed files with 26 additions and 3 deletions

View File

@ -1108,9 +1108,10 @@ class MergeRequest < ActiveRecord::Base
end
def update_head_pipeline
self.head_pipeline = find_actual_head_pipeline
update_column(:head_pipeline_id, head_pipeline.id) if head_pipeline_id_changed?
find_actual_head_pipeline.try do |pipeline|
self.head_pipeline = pipeline
update_column(:head_pipeline_id, head_pipeline.id) if head_pipeline_id_changed?
end
end
def merge_request_pipeline_exists?

View File

@ -0,0 +1,5 @@
---
title: Fix unexpected exception by failure of finding an actual head pipeline
merge_request: 24257
author:
type: fixed

View File

@ -1418,6 +1418,23 @@ describe MergeRequest do
.to change { merge_request.reload.head_pipeline }
.from(nil).to(pipeline)
end
context 'when merge request has already had head pipeline' do
before do
merge_request.update!(head_pipeline: pipeline)
end
context 'when failed to find an actual head pipeline' do
before do
allow(merge_request).to receive(:find_actual_head_pipeline) { }
end
it 'does not update the current head pipeline' do
expect { subject }
.not_to change { merge_request.reload.head_pipeline }
end
end
end
end
context 'when there are no pipelines with the diff head sha' do