diff options
author | Douwe Maan <douwe@selenight.nl> | 2017-06-19 11:25:21 -0500 |
---|---|---|
committer | Douwe Maan <douwe@selenight.nl> | 2017-06-19 11:25:21 -0500 |
commit | 4265431ca94ba46823a97935dd64088dc6a37e52 (patch) | |
tree | a2c753cd95ada949bff0ca4769aee9110da97ddc | |
parent | c0c394262833a4a35e3b2f7006ba6a4e93ef80d1 (diff) | |
download | gitlab-ce-dm-parallel-diff-unchanged-line-comment.tar.gz |
Don't display comment on unchanged line on both sides in parallel diffdm-parallel-diff-unchanged-line-comment
-rw-r--r-- | app/helpers/diff_helper.rb | 4 | ||||
-rw-r--r-- | app/views/projects/diffs/_line.html.haml | 2 | ||||
-rw-r--r-- | lib/gitlab/diff/line.rb | 16 | ||||
-rw-r--r-- | lib/gitlab/diff/parallel_diff.rb | 20 | ||||
-rw-r--r-- | spec/helpers/diff_helper_spec.rb | 11 |
5 files changed, 29 insertions, 24 deletions
diff --git a/app/helpers/diff_helper.rb b/app/helpers/diff_helper.rb index 06822747d11..0dc08cab166 100644 --- a/app/helpers/diff_helper.rb +++ b/app/helpers/diff_helper.rb @@ -66,12 +66,12 @@ module DiffHelper discussions_left = discussions_right = nil - if left && (left.unchanged? || left.discussable?) + if left&.unchanged? || left&.removed? && !left&.meta? line_code = diff_file.line_code(left) discussions_left = @grouped_diff_discussions[line_code] end - if right&.discussable? + if right&.added? && !right&.meta? line_code = diff_file.line_code(right) discussions_right = @grouped_diff_discussions[line_code] end diff --git a/app/views/projects/diffs/_line.html.haml b/app/views/projects/diffs/_line.html.haml index 43708d22a0c..7439b8a66f7 100644 --- a/app/views/projects/diffs/_line.html.haml +++ b/app/views/projects/diffs/_line.html.haml @@ -3,7 +3,7 @@ - discussions = local_assigns.fetch(:discussions, nil) - type = line.type - line_code = diff_file.line_code(line) -- if discussions && line.discussable? +- if discussions && !line.meta? - line_discussions = discussions[line_code] %tr.line_holder{ class: type, id: (line_code unless plain) } - case type diff --git a/lib/gitlab/diff/line.rb b/lib/gitlab/diff/line.rb index bd52ae47e9f..e89f7069219 100644 --- a/lib/gitlab/diff/line.rb +++ b/lib/gitlab/diff/line.rb @@ -42,11 +42,15 @@ module Gitlab end def added? - type == 'new' || type == 'new-nonewline' + %w[new new-nonewline].include?(type) end def removed? - type == 'old' || type == 'old-nonewline' + %w[old old-nonewline].include?(type) + end + + def meta? + %w[match new-nonewline old-nonewline].include?(type) end def rich_text @@ -55,14 +59,6 @@ module Gitlab @rich_text end - def meta? - type == 'match' - end - - def discussable? - !['match', 'new-nonewline', 'old-nonewline'].include?(type) - end - def as_json(opts = nil) { type: type, diff --git a/lib/gitlab/diff/parallel_diff.rb b/lib/gitlab/diff/parallel_diff.rb index 481536a380b..0cb26fa45c8 100644 --- a/lib/gitlab/diff/parallel_diff.rb +++ b/lib/gitlab/diff/parallel_diff.rb @@ -14,16 +14,7 @@ module Gitlab lines = [] highlighted_diff_lines = diff_file.highlighted_diff_lines highlighted_diff_lines.each do |line| - if line.meta? || line.unchanged? - # line in the right panel is the same as in the left one - lines << { - left: line, - right: line - } - - free_right_index = nil - i += 1 - elsif line.removed? + if line.removed? lines << { left: line, right: nil @@ -51,6 +42,15 @@ module Gitlab free_right_index = nil i += 1 end + elsif line.meta? || line.unchanged? + # line in the right panel is the same as in the left one + lines << { + left: line, + right: line + } + + free_right_index = nil + i += 1 end end diff --git a/spec/helpers/diff_helper_spec.rb b/spec/helpers/diff_helper_spec.rb index 0ac030d3171..0d909e6e140 100644 --- a/spec/helpers/diff_helper_spec.rb +++ b/spec/helpers/diff_helper_spec.rb @@ -148,12 +148,21 @@ describe DiffHelper do it 'puts comments on added lines' do left = Gitlab::Diff::Line.new('\\nonewline', 'old-nonewline', 3, 3, 3) - right = Gitlab::Diff::Line.new('new line', 'add', 3, 3, 3) + right = Gitlab::Diff::Line.new('new line', 'new', 3, 3, 3) result = helper.parallel_diff_discussions(left, right, diff_file) expect(result).to eq([nil, 'comment']) end + + it 'puts comments on unchanged lines' do + left = Gitlab::Diff::Line.new('unchanged line', nil, 3, 3, 3) + right = Gitlab::Diff::Line.new('unchanged line', nil, 3, 3, 3) + + result = helper.parallel_diff_discussions(left, right, diff_file) + + expect(result).to eq(['comment', nil]) + end end describe "#diff_match_line" do |