Commit 85c3128a authored by Jeff Stubler's avatar Jeff Stubler

Fix division by zero for blame age map

parent 19dfd9e9
...@@ -11,11 +11,15 @@ module BlameHelper ...@@ -11,11 +11,15 @@ module BlameHelper
end end
def age_map_class(commit_date, duration) def age_map_class(commit_date, duration)
commit_date_days_ago = (duration[:now] - commit_date).to_i / 1.day if duration[:started_days_ago] == 0
# Numbers 0 to 10 come from this calculation, but only commits on the oldest "blame-commit-age-0"
# day get number 10 (all other numbers can be multiple days), so the range else
# is normalized to 0-9 commit_date_days_ago = (duration[:now] - commit_date).to_i / 1.day
age_group = [(10 * commit_date_days_ago) / duration[:started_days_ago], 9].min # Numbers 0 to 10 come from this calculation, but only commits on the oldest
"blame-commit-age-#{age_group}" # day get number 10 (all other numbers can be multiple days), so the range
# is normalized to 0-9
age_group = [(10 * commit_date_days_ago) / duration[:started_days_ago], 9].min
"blame-commit-age-#{age_group}"
end
end end
end end
---
title: Fix division by zero error in blame age mapping
merge_request: 13803
author: Jeff Stubler
type: fixed
...@@ -36,17 +36,26 @@ describe BlameHelper do ...@@ -36,17 +36,26 @@ describe BlameHelper do
describe '#age_map_class' do describe '#age_map_class' do
let(:dates) do let(:dates) do
[Time.zone.local(2014, 3, 17, 0, 0, 0)] [Time.zone.local(2014, 3, 17, 0, 0, 0), Time.zone.now]
end end
let(:blame_groups) do let(:blame_groups) do
[ [
{ commit: double(committed_date: dates[0]) } { commit: double(committed_date: dates[0]) }
] ]
end end
let(:today_blame_groups) do
[
{ commit: double(committed_date: dates[1]) }
]
end
let(:duration) do let(:duration) do
project = double(created_at: dates[0]) project = double(created_at: dates[0])
helper.age_map_duration(blame_groups, project) helper.age_map_duration(blame_groups, project)
end end
let(:same_day_duration) do
project = double(created_at: dates[1])
helper.age_map_duration(today_blame_groups, project)
end
it 'returns blame-commit-age-9 when oldest' do it 'returns blame-commit-age-9 when oldest' do
expect(helper.age_map_class(dates[0], duration)).to eq 'blame-commit-age-9' expect(helper.age_map_class(dates[0], duration)).to eq 'blame-commit-age-9'
...@@ -55,5 +64,10 @@ describe BlameHelper do ...@@ -55,5 +64,10 @@ describe BlameHelper do
it 'returns blame-commit-age-0 class when newest' do it 'returns blame-commit-age-0 class when newest' do
expect(helper.age_map_class(duration[:now], duration)).to eq 'blame-commit-age-0' expect(helper.age_map_class(duration[:now], duration)).to eq 'blame-commit-age-0'
end end
it 'returns blame-commit-age-0 class when created on same day' do
puts(same_day_duration.inspect)
expect(helper.age_map_class(duration[:now], same_day_duration)).to eq 'blame-commit-age-0'
end
end end
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