summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2016-08-25 12:32:35 +0100
committerSean McGivern <sean@gitlab.com>2016-08-25 12:47:12 +0100
commit67beaf6fb989e4f7981769b1f01bf383fc0de652 (patch)
tree3d741f5c318f9408a222abd532bd6ddf8b1090d8
parent4a3d1a5838685ff95a6c9416bb3e453ad143f50d (diff)
downloadgitlab-ce-67beaf6fb989e4f7981769b1f01bf383fc0de652.tar.gz
Don't show conflicts when there are none
-rw-r--r--app/models/merge_request.rb6
-rw-r--r--spec/models/merge_request_spec.rb6
2 files changed, 11 insertions, 1 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 7fa52d0b7a7..19a684d1d0c 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -777,7 +777,11 @@ class MergeRequest < ActiveRecord::Base
return @conflicts_can_be_resolved_in_ui = false unless has_complete_diff_refs?
begin
- @conflicts_can_be_resolved_in_ui = conflicts.files.each(&:lines)
+ # Try to parse each conflict. If the MR's mergeable status hasn't been updated,
+ # ensure that we don't say there are conflicts to resolve when there are no conflict
+ # files.
+ conflicts.files.each(&:lines)
+ @conflicts_can_be_resolved_in_ui = conflicts.files.length > 0
rescue Rugged::OdbError, Gitlab::Conflict::Parser::ParserError, Gitlab::Conflict::FileCollection::ConflictSideMissing
@conflicts_can_be_resolved_in_ui = false
end
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index ae71eaeda52..c4138c4f3f3 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -890,6 +890,12 @@ describe MergeRequest, models: true do
expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_falsey
end
+ it 'returns a falsey value when the MR is marked as having conflicts, but has none' do
+ merge_request = create_merge_request('master')
+
+ expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_falsey
+ end
+
it 'returns a falsey value when the MR has a missing ref after a force push' do
merge_request = create_merge_request('conflict-resolvable')
allow(merge_request.conflicts).to receive(:merge_index).and_raise(Rugged::OdbError)