diff --git a/CHANGELOG b/CHANGELOG index 3e459f8b2ba3cf02597f4fc3849100492c1daa30..9fa1e1cada3ba0286da08fda23193c2ce41e7f02 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 8.8.2 (unreleased) - Fix Error 500 when accessing application settings due to nil disabled OAuth sign-in sources + - Fix Error 500 in CI charts by gracefully handling commits with no durations v 8.8.1 - Add documentation for the "Health Check" feature diff --git a/lib/ci/charts.rb b/lib/ci/charts.rb index d53bdcbd0f22154ef56923ebc05b5b2cd070b732..e163663693479d797f0d234f915c7a5307f76b0a 100644 --- a/lib/ci/charts.rb +++ b/lib/ci/charts.rb @@ -64,7 +64,8 @@ module Ci commits.each do |commit| @labels << commit.short_sha - @build_times << (commit.duration / 60) + duration = commit.duration || 0 + @build_times << (duration / 60) end end end diff --git a/spec/lib/ci/charts_spec.rb b/spec/lib/ci/charts_spec.rb index 50a77308cde81d48d3d2df677dc04964f9cb9c4c..9d1215a57609c632f6613c2c87f2fe58fb67e8bb 100644 --- a/spec/lib/ci/charts_spec.rb +++ b/spec/lib/ci/charts_spec.rb @@ -12,5 +12,12 @@ describe Ci::Charts, lib: true do chart = Ci::Charts::BuildTime.new(@commit.project) expect(chart.build_times).to eq([2]) end + + it 'should handle nil build times' do + create(:ci_commit, duration: nil, project: @commit.project) + + chart = Ci::Charts::BuildTime.new(@commit.project) + expect(chart.build_times).to eq([2, 0]) + end end end