Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/ci/badge/coverage/template.rb')
-rw-r--r--lib/gitlab/ci/badge/coverage/template.rb40
1 files changed, 36 insertions, 4 deletions
diff --git a/lib/gitlab/ci/badge/coverage/template.rb b/lib/gitlab/ci/badge/coverage/template.rb
index 96702420e9d..f12b4f2dbfb 100644
--- a/lib/gitlab/ci/badge/coverage/template.rb
+++ b/lib/gitlab/ci/badge/coverage/template.rb
@@ -16,12 +16,20 @@ module Gitlab::Ci
low: '#e05d44',
unknown: '#9f9f9f'
}.freeze
+ COVERAGE_MAX = 100
+ COVERAGE_MIN = 0
+ MIN_GOOD_DEFAULT = 95
+ MIN_ACCEPTABLE_DEFAULT = 90
+ MIN_MEDIUM_DEFAULT = 75
def initialize(badge)
@entity = badge.entity
@status = badge.status
@key_text = badge.customization.dig(:key_text)
@key_width = badge.customization.dig(:key_width)
+ @min_good = badge.customization.dig(:min_good)
+ @min_acceptable = badge.customization.dig(:min_acceptable)
+ @min_medium = badge.customization.dig(:min_medium)
end
def value_text
@@ -32,12 +40,36 @@ module Gitlab::Ci
@status ? 54 : 58
end
+ def min_good_value
+ if @min_good && @min_good.between?(3, COVERAGE_MAX)
+ @min_good
+ else
+ MIN_GOOD_DEFAULT
+ end
+ end
+
+ def min_acceptable_value
+ if @min_acceptable && @min_acceptable.between?(2, min_good_value - 1)
+ @min_acceptable
+ else
+ [MIN_ACCEPTABLE_DEFAULT, (min_good_value - 1)].min
+ end
+ end
+
+ def min_medium_value
+ if @min_medium && @min_medium.between?(1, min_acceptable_value - 1)
+ @min_medium
+ else
+ [MIN_MEDIUM_DEFAULT, (min_acceptable_value - 1)].min
+ end
+ end
+
def value_color
case @status
- when 95..100 then STATUS_COLOR[:good]
- when 90..95 then STATUS_COLOR[:acceptable]
- when 75..90 then STATUS_COLOR[:medium]
- when 0..75 then STATUS_COLOR[:low]
+ when min_good_value..COVERAGE_MAX then STATUS_COLOR[:good]
+ when min_acceptable_value..min_good_value then STATUS_COLOR[:acceptable]
+ when min_medium_value..min_acceptable_value then STATUS_COLOR[:medium]
+ when COVERAGE_MIN..min_medium_value then STATUS_COLOR[:low]
else
STATUS_COLOR[:unknown]
end