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