Handle case where conflicts aren't on disk yet
This commit is contained in:
parent
7bbb523b23
commit
4a3d1a5838
|
@ -778,7 +778,7 @@ class MergeRequest < ActiveRecord::Base
|
|||
|
||||
begin
|
||||
@conflicts_can_be_resolved_in_ui = conflicts.files.each(&:lines)
|
||||
rescue Gitlab::Conflict::Parser::ParserError, Gitlab::Conflict::FileCollection::ConflictSideMissing
|
||||
rescue Rugged::OdbError, Gitlab::Conflict::Parser::ParserError, Gitlab::Conflict::FileCollection::ConflictSideMissing
|
||||
@conflicts_can_be_resolved_in_ui = false
|
||||
end
|
||||
end
|
||||
|
|
|
@ -181,6 +181,17 @@ module Gitlab
|
|||
sections: sections
|
||||
}
|
||||
end
|
||||
|
||||
# Don't try to print merge_request or repository.
|
||||
def inspect
|
||||
instance_variables = [:merge_file_result, :their_path, :our_path, :our_mode].map do |instance_variable|
|
||||
value = instance_variable_get("@#{instance_variable}")
|
||||
|
||||
"#{instance_variable}=\"#{value}\""
|
||||
end
|
||||
|
||||
"#<#{self.class} #{instance_variables.join(' ')}>"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -890,6 +890,13 @@ 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 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)
|
||||
|
||||
expect(merge_request.conflicts_can_be_resolved_in_ui?).to be_falsey
|
||||
end
|
||||
|
||||
it 'returns a falsey value when the MR does not support new diff notes' do
|
||||
merge_request = create_merge_request('conflict-resolvable')
|
||||
merge_request.merge_request_diff.update_attributes(start_commit_sha: nil)
|
||||
|
|
Loading…
Reference in New Issue