lib/jacoco/plugin.rb in danger-jacoco-0.1.2 vs lib/jacoco/plugin.rb in danger-jacoco-0.1.3
- old
+ new
@@ -7,14 +7,16 @@
#
class DangerJacoco < Plugin
attr_accessor :minimum_project_coverage_percentage
attr_accessor :minimum_class_coverage_percentage
attr_accessor :files_extension
+ attr_accessor :minimum_class_coverage_map
def setup
@minimum_project_coverage_percentage = 0 unless minimum_project_coverage_percentage
@minimum_class_coverage_percentage = 0 unless minimum_class_coverage_percentage
+ @minimum_class_coverage_map = {} unless minimum_class_coverage_map
@files_extension = ['.kt', '.java'] unless files_extension
end
# Parses the xml output of jacoco to Ruby model classes
# This is slow since it's basically DOM parsing
@@ -69,15 +71,18 @@
# It returns a specific class code coverage and an emoji status as well
def report_class(jacoco_class)
counter = coverage_counter(jacoco_class)
coverage = (counter.covered.fdiv(counter.covered + counter.missed) * 100).floor
- status = coverage_status(coverage, minimum_class_coverage_percentage)
+ required_coverage = minimum_class_coverage_map[jacoco_class.name]
+ required_coverage = minimum_class_coverage_percentage if required_coverage.nil?
+ status = coverage_status(coverage, required_coverage)
{
covered: coverage,
- status: status
+ status: status,
+ required_coverage_percentage: required_coverage
}
end
# it returns an emoji for coverage status
def coverage_status(coverage, minimum_percentage)
@@ -126,18 +131,19 @@
return if class_coverage_above_minimum
fail("Class coverage is below minimum. Improve to at least #{minimum_class_coverage_percentage}%")
end
+ # rubocop:enable Style/SignalException
def markdown_class(parser, report_markdown)
class_coverage_above_minimum = true
parser.classes.each do |jacoco_class| # Check metrics for each classes
rp = report_class(jacoco_class)
- ln = "| `#{jacoco_class.name}` | #{rp[:covered]}% | #{minimum_class_coverage_percentage}% | #{rp[:status]} |\n"
+ ln = "| `#{jacoco_class.name}` | #{rp[:covered]}% | #{rp[:required_coverage_percentage]}% | #{rp[:status]} |\n"
report_markdown << ln
- class_coverage_above_minimum &&= rp[:covered] >= minimum_class_coverage_percentage
+ class_coverage_above_minimum &&= rp[:covered] >= rp[:required_coverage_percentage]
end
class_coverage_above_minimum
end
end