From e8fcb8707fddd260bca79da7d5f3844503acbe06 Mon Sep 17 00:00:00 2001 From: Toru Asai Date: Thu, 29 Apr 2021 18:11:34 +0900 Subject: [PATCH 1/3] add prioritize_line_class_coverage --- lib/jacoco/plugin.rb | 8 +++++++- spec/jacoco_spec.rb | 11 +++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/jacoco/plugin.rb b/lib/jacoco/plugin.rb index 122545a..2a8b007 100644 --- a/lib/jacoco/plugin.rb +++ b/lib/jacoco/plugin.rb @@ -26,6 +26,7 @@ class DangerJacoco < Plugin # rubocop:disable Metrics/ClassLength attr_accessor :minimum_package_coverage_map attr_accessor :minimum_class_coverage_map attr_accessor :fail_no_coverage_data_found + attr_accessor :prioritize_line_class_coverage # Initialize the plugin with configured parameters or defaults def setup @@ -34,6 +35,7 @@ def setup @minimum_package_coverage_map = {} unless minimum_package_coverage_map @minimum_class_coverage_map = {} unless minimum_class_coverage_map @files_extension = ['.kt', '.java'] unless files_extension + @prioritize_line_class_coverage = false unless prioritize_line_class_coverage end # Parses the xml output of jacoco to Ruby model classes @@ -161,7 +163,11 @@ def coverage_counter(jacoco_class) counters = jacoco_class.counters branch_counter = counters.detect { |e| e.type.eql? 'BRANCH' } line_counter = counters.detect { |e| e.type.eql? 'LINE' } - counter = branch_counter.nil? ? line_counter : branch_counter + if @prioritize_line_class_coverage + counter = line_counter + else + counter = branch_counter.nil? ? line_counter : branch_counter + end if counter.nil? no_coverage_data_found_message = "No coverage data found for #{jacoco_class.name}" diff --git a/spec/jacoco_spec.rb b/spec/jacoco_spec.rb index b2b7afd..81abc9a 100644 --- a/spec/jacoco_spec.rb +++ b/spec/jacoco_spec.rb @@ -158,6 +158,17 @@ module Danger expect { @my_plugin.report path_a, fail_no_coverage_data_found: false }.to_not raise_error(RuntimeError) end + + it 'test with prioritize line class coverage' do + path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" + + @my_plugin.minimum_class_coverage_map = { 'com/example/CachedRepository' => 80 } + @my_plugin.prioritize_line_class_coverage = true + + @my_plugin.report path_a + + expect(@dangerfile.status_report[:markdowns][0].message).to include('| `com/example/CachedRepository` | 100% | 80% | :white_check_mark: |') + end end end end From abd805940230c1f1943353a7b34958597793125f Mon Sep 17 00:00:00 2001 From: Toru Asai Date: Thu, 29 Apr 2021 18:54:23 +0900 Subject: [PATCH 2/3] fix robocop --- lib/jacoco/plugin.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/jacoco/plugin.rb b/lib/jacoco/plugin.rb index 2a8b007..c00543f 100644 --- a/lib/jacoco/plugin.rb +++ b/lib/jacoco/plugin.rb @@ -163,11 +163,11 @@ def coverage_counter(jacoco_class) counters = jacoco_class.counters branch_counter = counters.detect { |e| e.type.eql? 'BRANCH' } line_counter = counters.detect { |e| e.type.eql? 'LINE' } - if @prioritize_line_class_coverage - counter = line_counter - else - counter = branch_counter.nil? ? line_counter : branch_counter - end + counter = if @prioritize_line_class_coverage + line_counter + else + branch_counter.nil? ? line_counter : branch_counter + end if counter.nil? no_coverage_data_found_message = "No coverage data found for #{jacoco_class.name}" From ff58203d7781264ec87ffde2f3ac6873a4040155 Mon Sep 17 00:00:00 2001 From: Toru Asai Date: Thu, 29 Apr 2021 18:54:59 +0900 Subject: [PATCH 3/3] update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6f608d5..fa6c135 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ jacoco.minimum_class_coverage_map = { # optional (default is empty) jacoco.minimum_class_coverage_percentage = 75 # default 0 jacoco.files_extension = [".java"] # default [".kt", ".java"] jacoco.report("path/to/jacoco.xml", "http://jacoco-html-reports/") +jacoco.prioritize_line_class_coverage = true # default false ``` to your `Dangerfile`