summaryrefslogtreecommitdiff
path: root/spec/services
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2018-04-06 12:16:51 +0100
committerSean McGivern <sean@gitlab.com>2018-04-06 12:16:51 +0100
commit30bca22d0841bfb2fdb6f5dc5970a4486614de4c (patch)
tree87dd0319a34894e3be161498e981bfe4f4b08251 /spec/services
parentca330f7ea30b368b928f5468a1f53264d74aa8aa (diff)
downloadgitlab-ce-30bca22d0841bfb2fdb6f5dc5970a4486614de4c.tar.gz
Fix 500 error when MR from fork has conflicts but worker has not runfix-500-error-when-mr-ref-is-not-yet-fetched
If the ref hasn't been fetched into the target repository yet, this will fail with a Rugged::ReferencError (assuming we're not using Gitaly). We should handle this in the same way as a missing ref.
Diffstat (limited to 'spec/services')
-rw-r--r--spec/services/merge_requests/conflicts/list_service_spec.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/spec/services/merge_requests/conflicts/list_service_spec.rb b/spec/services/merge_requests/conflicts/list_service_spec.rb
index 6cadcd438c3..837b8a56d12 100644
--- a/spec/services/merge_requests/conflicts/list_service_spec.rb
+++ b/spec/services/merge_requests/conflicts/list_service_spec.rb
@@ -77,6 +77,14 @@ describe MergeRequests::Conflicts::ListService do
expect(service.can_be_resolved_in_ui?).to be_falsey
end
+ it 'returns a falsey value when the MR has a missing revision after a force push' do
+ merge_request = create_merge_request('conflict-resolvable')
+ service = conflicts_service(merge_request)
+ allow(merge_request).to receive_message_chain(:target_branch_head, :raw, :id).and_return(Gitlab::Git::BLANK_SHA)
+
+ expect(service.can_be_resolved_in_ui?).to be_falsey
+ end
+
context 'with gitaly disabled', :skip_gitaly_mock do
it 'returns a falsey value when the MR has a missing ref after a force push' do
merge_request = create_merge_request('conflict-resolvable')
@@ -85,6 +93,14 @@ describe MergeRequests::Conflicts::ListService do
expect(service.can_be_resolved_in_ui?).to be_falsey
end
+
+ it 'returns a falsey value when the MR has a missing revision after a force push' do
+ merge_request = create_merge_request('conflict-resolvable')
+ service = conflicts_service(merge_request)
+ allow(merge_request).to receive_message_chain(:target_branch_head, :raw, :id).and_return(Gitlab::Git::BLANK_SHA)
+
+ expect(service.can_be_resolved_in_ui?).to be_falsey
+ end
end
end
end