Commit 3ce491c5 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Merge branch 'fix-udpate-head-pipeline-method' into 'master'

Fix unexpected exception by failure of finding an actual head pipeline

Closes #56113

See merge request gitlab-org/gitlab-ce!24257
parents 0f71b4bc 1c248cd4
...@@ -1108,10 +1108,11 @@ class MergeRequest < ActiveRecord::Base ...@@ -1108,10 +1108,11 @@ class MergeRequest < ActiveRecord::Base
end end
def update_head_pipeline def update_head_pipeline
self.head_pipeline = find_actual_head_pipeline find_actual_head_pipeline.try do |pipeline|
self.head_pipeline = pipeline
update_column(:head_pipeline_id, head_pipeline.id) if head_pipeline_id_changed? update_column(:head_pipeline_id, head_pipeline.id) if head_pipeline_id_changed?
end end
end
def merge_request_pipeline_exists? def merge_request_pipeline_exists?
merge_request_pipelines.exists?(sha: diff_head_sha) merge_request_pipelines.exists?(sha: diff_head_sha)
......
---
title: Fix unexpected exception by failure of finding an actual head pipeline
merge_request: 24257
author:
type: fixed
...@@ -1418,6 +1418,23 @@ describe MergeRequest do ...@@ -1418,6 +1418,23 @@ describe MergeRequest do
.to change { merge_request.reload.head_pipeline } .to change { merge_request.reload.head_pipeline }
.from(nil).to(pipeline) .from(nil).to(pipeline)
end 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 end
context 'when there are no pipelines with the diff head sha' do context 'when there are no pipelines with the diff head sha' 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