Commit 66bc7de8 authored by Oswaldo Ferreira's avatar Oswaldo Ferreira

Make use of uncached diffs where highlighting is not required

parent 222e7033
...@@ -162,7 +162,7 @@ module DiffHelper ...@@ -162,7 +162,7 @@ module DiffHelper
end end
def render_overflow_warning?(diffs_collection) def render_overflow_warning?(diffs_collection)
diff_files = diffs_collection.diff_files diff_files = diffs_collection.raw_diff_files
if diff_files.any?(&:too_large?) if diff_files.any?(&:too_large?)
Gitlab::Metrics.add_event(:diffs_overflow_single_file_limits) Gitlab::Metrics.add_event(:diffs_overflow_single_file_limits)
......
...@@ -42,13 +42,13 @@ class DiffsEntity < Grape::Entity ...@@ -42,13 +42,13 @@ class DiffsEntity < Grape::Entity
# rubocop: disable CodeReuse/ActiveRecord # rubocop: disable CodeReuse/ActiveRecord
expose :added_lines do |diffs| expose :added_lines do |diffs|
diffs.diff_files.sum(&:added_lines) diffs.raw_diff_files.sum(&:added_lines)
end end
# rubocop: enable CodeReuse/ActiveRecord # rubocop: enable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord # rubocop: disable CodeReuse/ActiveRecord
expose :removed_lines do |diffs| expose :removed_lines do |diffs|
diffs.diff_files.sum(&:removed_lines) diffs.raw_diff_files.sum(&:removed_lines)
end end
# rubocop: enable CodeReuse/ActiveRecord # rubocop: enable CodeReuse/ActiveRecord
......
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
class DiffsMetadataEntity < DiffsEntity class DiffsMetadataEntity < DiffsEntity
unexpose :diff_files unexpose :diff_files
expose :diff_files, using: DiffFileMetadataEntity expose :raw_diff_files, as: :diff_files, using: DiffFileMetadataEntity
end end
...@@ -8,7 +8,7 @@ module Gitlab ...@@ -8,7 +8,7 @@ module Gitlab
attr_reader :project, :diff_options, :diff_refs, :fallback_diff_refs, :diffable attr_reader :project, :diff_options, :diff_refs, :fallback_diff_refs, :diffable
delegate :count, :size, :real_size, to: :diff_files delegate :count, :size, :real_size, to: :raw_diff_files
def self.default_options def self.default_options
::Commit.max_diff_options.merge(ignore_whitespace_change: false, expanded: false, include_stats: true) ::Commit.max_diff_options.merge(ignore_whitespace_change: false, expanded: false, include_stats: true)
......
...@@ -259,7 +259,7 @@ describe DiffHelper do ...@@ -259,7 +259,7 @@ describe DiffHelper do
end end
context '#render_overflow_warning?' do context '#render_overflow_warning?' do
let(:diffs_collection) { instance_double(Gitlab::Diff::FileCollection::MergeRequestDiff, diff_files: diff_files) } let(:diffs_collection) { instance_double(Gitlab::Diff::FileCollection::MergeRequestDiff, raw_diff_files: diff_files) }
let(:diff_files) { Gitlab::Git::DiffCollection.new(files) } let(:diff_files) { Gitlab::Git::DiffCollection.new(files) }
let(:safe_file) { { too_large: false, diff: '' } } let(:safe_file) { { too_large: false, diff: '' } }
let(:large_file) { { too_large: true, diff: '' } } let(:large_file) { { too_large: true, diff: '' } }
......
...@@ -36,8 +36,16 @@ describe DiffsMetadataEntity do ...@@ -36,8 +36,16 @@ describe DiffsMetadataEntity do
describe 'diff_files' do describe 'diff_files' do
it 'returns diff files metadata' do it 'returns diff files metadata' do
payload = raw_diff_files = merge_request_diff.diffs.raw_diff_files
DiffFileMetadataEntity.represent(merge_request_diff.diffs.diff_files).as_json
expect_next_instance_of(Gitlab::Diff::FileCollection::MergeRequestDiff) do |instance|
# Use lightweight version instead. Several methods delegate to it, so putting a 5
# calls limit.
expect(instance).to receive(:raw_diff_files).at_most(5).times.and_call_original
expect(instance).not_to receive(:diff_files)
end
payload = DiffFileMetadataEntity.represent(raw_diff_files).as_json
expect(subject[:diff_files]).to eq(payload) expect(subject[:diff_files]).to eq(payload)
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment