Fix: A diff comment on a change at last line of a file shows as two comments in discussion
This commit is contained in:
parent
52a3d4372c
commit
563c1ca01c
|
@ -66,12 +66,12 @@ module DiffHelper
|
|||
|
||||
discussions_left = discussions_right = nil
|
||||
|
||||
if left && (left.unchanged? || left.removed?)
|
||||
if left && (left.unchanged? || left.discussable?)
|
||||
line_code = diff_file.line_code(left)
|
||||
discussions_left = @grouped_diff_discussions[line_code]
|
||||
end
|
||||
|
||||
if right && right.added?
|
||||
if right&.discussable?
|
||||
line_code = diff_file.line_code(right)
|
||||
discussions_right = @grouped_diff_discussions[line_code]
|
||||
end
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
- discussions = local_assigns.fetch(:discussions, nil)
|
||||
- type = line.type
|
||||
- line_code = diff_file.line_code(line)
|
||||
- if discussions && !line.meta?
|
||||
- if discussions && line.discussable?
|
||||
- line_discussions = discussions[line_code]
|
||||
%tr.line_holder{ class: type, id: (line_code unless plain) }
|
||||
- case type
|
||||
|
|
|
@ -59,6 +59,10 @@ module Gitlab
|
|||
type == 'match'
|
||||
end
|
||||
|
||||
def discussable?
|
||||
!['match', 'new-nonewline', 'old-nonewline'].include?(type)
|
||||
end
|
||||
|
||||
def as_json(opts = nil)
|
||||
{
|
||||
type: type,
|
||||
|
|
|
@ -129,6 +129,32 @@ describe DiffHelper do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#parallel_diff_discussions' do
|
||||
it 'does not put comments on nonewline lines' do
|
||||
discussion = {'abc_3_3' => 'comment'}
|
||||
helper.instance_variable_set(:@grouped_diff_discussions, discussion)
|
||||
diff_file = double(line_code: 'abc_3_3')
|
||||
left = Gitlab::Diff::Line.new('\\nonewline', 'old-nonewline', 3, 3, 3)
|
||||
right = Gitlab::Diff::Line.new('\\nonewline', 'new-nonewline', 3, 3, 3)
|
||||
|
||||
result = helper.parallel_diff_discussions(left, right, diff_file)
|
||||
|
||||
expect(result).to eq([nil, nil])
|
||||
end
|
||||
|
||||
it 'puts comments on added lines' do
|
||||
discussion = {'abc_3_3' => 'comment'}
|
||||
helper.instance_variable_set(:@grouped_diff_discussions, discussion)
|
||||
diff_file = double(line_code: 'abc_3_3')
|
||||
left = Gitlab::Diff::Line.new('\\nonewline', 'old-nonewline', 3, 3, 3)
|
||||
right = Gitlab::Diff::Line.new('new line', 'add', 3, 3, 3)
|
||||
|
||||
result = helper.parallel_diff_discussions(left, right, diff_file)
|
||||
|
||||
expect(result).to eq([nil, 'comment'])
|
||||
end
|
||||
end
|
||||
|
||||
describe "#diff_match_line" do
|
||||
let(:old_pos) { 40 }
|
||||
let(:new_pos) { 50 }
|
||||
|
|
Loading…
Reference in New Issue