diff options
author | Jan Provaznik <jprovaznik@gitlab.com> | 2018-06-28 22:49:54 +0200 |
---|---|---|
committer | Jan Provaznik <jprovaznik@gitlab.com> | 2018-06-28 22:53:35 +0200 |
commit | 26a8472d6d0aa1eb40285105a0f55f2f7d439897 (patch) | |
tree | 6a63bfe557716bf8a64bc7ce26eb6724236cc330 | |
parent | 9ad97abfec59cde15b240a5e81a1b1caf1b2a4fc (diff) | |
download | gitlab-ce-26a8472d6d0aa1eb40285105a0f55f2f7d439897.tar.gz |
Don't add bottom 'match' line for deleted files
If a file is deleted, its new_pos is 0 (less than
total_blob_lines), but there is no reason to add the
bottom 'match' line in this case because there is not
extra content which could be expanded.
-rw-r--r-- | changelogs/unreleased/jprovazn-extra-line.yml | 5 | ||||
-rw-r--r-- | lib/gitlab/diff/file.rb | 2 | ||||
-rw-r--r-- | spec/lib/gitlab/diff/file_spec.rb | 15 |
3 files changed, 21 insertions, 1 deletions
diff --git a/changelogs/unreleased/jprovazn-extra-line.yml b/changelogs/unreleased/jprovazn-extra-line.yml new file mode 100644 index 00000000000..2628620f8ec --- /dev/null +++ b/changelogs/unreleased/jprovazn-extra-line.yml @@ -0,0 +1,5 @@ +--- +title: Don't show context button for diffs of deleted files. +merge_request: +author: +type: fixed diff --git a/lib/gitlab/diff/file.rb b/lib/gitlab/diff/file.rb index 40bcfa20e7d..a9e209d5b71 100644 --- a/lib/gitlab/diff/file.rb +++ b/lib/gitlab/diff/file.rb @@ -250,7 +250,7 @@ module Gitlab last_line = lines.last - if last_line.new_pos < total_blob_lines(blob) + if last_line.new_pos < total_blob_lines(blob) && !deleted_file? match_line = Gitlab::Diff::Line.new("", 'match', nil, last_line.old_pos, last_line.new_pos) lines.push(match_line) end diff --git a/spec/lib/gitlab/diff/file_spec.rb b/spec/lib/gitlab/diff/file_spec.rb index 5dfbb8e71f8..ebeb05d6e02 100644 --- a/spec/lib/gitlab/diff/file_spec.rb +++ b/spec/lib/gitlab/diff/file_spec.rb @@ -26,6 +26,21 @@ describe Gitlab::Diff::File do end end + describe '#diff_lines_for_serializer' do + it 'includes bottom match line if not in the end' do + expect(diff_file.diff_lines_for_serializer.last.type).to eq('match') + end + + context 'when deleted' do + let(:commit) { project.commit('d59c60028b053793cecfb4022de34602e1a9218e') } + let(:diff_file) { commit.diffs.diff_file_with_old_path('files/js/commit.js.coffee') } + + it 'does not include bottom match line' do + expect(diff_file.diff_lines_for_serializer.last.type).not_to eq('match') + end + end + end + describe '#mode_changed?' do it { expect(diff_file.mode_changed?).to be_falsey } end |