From 0b965528c6dd6db67adf5b86c62c19088ebe65f5 Mon Sep 17 00:00:00 2001 From: Ahmad Sherif Date: Tue, 23 Jan 2018 18:31:56 +0100 Subject: GitalyClient::ConflictsService#conflicts? should return true for conflicts with missing side --- lib/gitlab/gitaly_client/conflicts_service.rb | 5 +++++ spec/models/repository_spec.rb | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/gitlab/gitaly_client/conflicts_service.rb b/lib/gitlab/gitaly_client/conflicts_service.rb index 2565d537aff..e14734495a8 100644 --- a/lib/gitlab/gitaly_client/conflicts_service.rb +++ b/lib/gitlab/gitaly_client/conflicts_service.rb @@ -25,6 +25,11 @@ module Gitlab def conflicts? list_conflict_files.any? + rescue GRPC::FailedPrecondition + # The server raises this exception when it encounters ConflictSideMissing, which + # means a conflict exists but its `theirs` or `ours` data is nil due to a non-existent + # file in one of the trees. + true end def resolve_conflicts(target_repository, resolution, source_branch, target_branch) diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index baaa9e3ef44..8f406253f39 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -365,12 +365,18 @@ describe Repository do it { is_expected.to be_truthy } end - context 'non-mergeable branches' do + context 'non-mergeable branches without conflict sides missing' do subject { repository.can_be_merged?('bb5206fee213d983da88c47f9cf4cc6caf9c66dc', 'feature') } it { is_expected.to be_falsey } end + context 'non-mergeable branches with conflict sides missing' do + subject { repository.can_be_merged?('conflict-missing-side', 'conflict-start') } + + it { is_expected.to be_falsey } + end + context 'non merged branch' do subject { repository.merged_to_root_ref?('fix') } -- cgit v1.2.1