Skip to content
Snippets Groups Projects
Commit f089a230 authored by pshutsin's avatar pshutsin
Browse files

Backport EE changes for productivity analytics

Improve diff lines count efficiency
parent fd561023
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -197,7 +197,7 @@ class MergeRequestDiff < ApplicationRecord
 
def lines_count
strong_memoize(:lines_count) do
diffs.diff_files.sum(&:line_count)
raw_diffs(limits: false).line_count
end
end
 
Loading
Loading
@@ -222,6 +222,10 @@ class MergeRequestDiff < ApplicationRecord
commits.last
end
 
def last_commit
commits.first
end
def base_commit
return unless base_commit_sha
 
Loading
Loading
Loading
Loading
@@ -81,6 +81,12 @@ module Gitlab
end
end
 
def line_count
populate!
@line_count
end
def decorate!
collection = each_with_index do |element, i|
@array[i] = yield(element)
Loading
Loading
Loading
Loading
@@ -74,6 +74,11 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
end
end
 
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq file_count * line_count }
end
context 'when limiting is disabled' do
let(:limits) { false }
 
Loading
Loading
@@ -100,6 +105,11 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
expect(subject.size).to eq(3)
end
end
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq file_count * line_count }
end
end
end
 
Loading
Loading
@@ -120,6 +130,12 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
subject { super().real_size }
it { is_expected.to eq('0+') }
end
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq 1000 }
end
it { expect(subject.size).to eq(0) }
 
context 'when limiting is disabled' do
Loading
Loading
@@ -139,6 +155,12 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
subject { super().real_size }
it { is_expected.to eq('3') }
end
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq file_count * line_count }
end
it { expect(subject.size).to eq(3) }
end
end
Loading
Loading
@@ -164,6 +186,12 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
subject { super().real_size }
it { is_expected.to eq('10+') }
end
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq 10 }
end
it { expect(subject.size).to eq(10) }
 
context 'when limiting is disabled' do
Loading
Loading
@@ -183,6 +211,12 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
subject { super().real_size }
it { is_expected.to eq('11') }
end
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq file_count * line_count }
end
it { expect(subject.size).to eq(11) }
end
end
Loading
Loading
@@ -204,6 +238,12 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
subject { super().real_size }
it { is_expected.to eq('3+') }
end
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq 120 }
end
it { expect(subject.size).to eq(3) }
 
context 'when limiting is disabled' do
Loading
Loading
@@ -223,6 +263,12 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
subject { super().real_size }
it { is_expected.to eq('11') }
end
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq file_count * line_count }
end
it { expect(subject.size).to eq(11) }
end
end
Loading
Loading
@@ -248,6 +294,12 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
subject { super().real_size }
it { is_expected.to eq('10') }
end
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq file_count * line_count }
end
it { expect(subject.size).to eq(10) }
end
end
Loading
Loading
@@ -270,6 +322,12 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
subject { super().real_size }
it { is_expected.to eq('9+') }
end
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq file_count * line_count }
end
it { expect(subject.size).to eq(9) }
 
context 'when limiting is disabled' do
Loading
Loading
@@ -289,6 +347,12 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
subject { super().real_size }
it { is_expected.to eq('10') }
end
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq file_count * line_count }
end
it { expect(subject.size).to eq(10) }
end
end
Loading
Loading
@@ -316,6 +380,11 @@ describe Gitlab::Git::DiffCollection, :seed_helper do
subject { super().real_size }
it { is_expected.to eq('0')}
end
describe '#line_count' do
subject { super().line_count }
it { is_expected.to eq 0 }
end
end
 
describe '#each' do
Loading
Loading
Loading
Loading
@@ -3,8 +3,6 @@
require 'spec_helper'
 
describe MergeRequest::Metrics do
subject { described_class.new }
describe 'associations' do
it { is_expected.to belong_to(:merge_request) }
it { is_expected.to belong_to(:latest_closed_by).class_name('User') }
Loading
Loading
Loading
Loading
@@ -400,6 +400,18 @@ describe MergeRequestDiff do
end
end
 
describe '#first_commit' do
it 'returns first commit' do
expect(diff_with_commits.first_commit.sha).to eq(diff_with_commits.merge_request_diff_commits.last.sha)
end
end
describe '#last_commit' do
it 'returns last commit' do
expect(diff_with_commits.last_commit.sha).to eq(diff_with_commits.merge_request_diff_commits.first.sha)
end
end
describe '#commits_by_shas' do
let(:commit_shas) { diff_with_commits.commit_shas }
 
Loading
Loading
@@ -489,7 +501,7 @@ describe MergeRequestDiff do
subject { diff_with_commits }
 
it 'returns sum of all changed lines count in diff files' do
expect(subject.lines_count).to eq 109
expect(subject.lines_count).to eq 189
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment