spec/jacoco_spec.rb in danger-jacoco-instacart-0.1.11 vs spec/jacoco_spec.rb in danger-jacoco-instacart-0.1.12.SNAPSHOT.1

- old
+ new

@@ -31,11 +31,11 @@ path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" @my_plugin.minimum_project_coverage_percentage = 50 @my_plugin.minimum_class_coverage_map = { 'com/example/CachedRepository' => 100 } - @my_plugin.report path_a + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Total coverage of 32.9%. Improve this to at least 50%. Class coverage is below minimum. Improve to at least 0%/) expect(@dangerfile.status_report[:errors]).to eq(['Total coverage of 32.9%. Improve this to at least 50%', 'Class coverage is below minimum. Improve to at least 0%']) expect(@dangerfile.status_report[:markdowns][0].message).to include('### JaCoCo Code Coverage 32.9% :warning:') expect(@dangerfile.status_report[:markdowns][0].message).to include('| Class | Covered | Required | Status |') @@ -47,23 +47,21 @@ path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" @my_plugin.minimum_project_coverage_percentage = 50 @my_plugin.minimum_class_coverage_map = { '.*Repository' => 60 } - @my_plugin.report path_a - + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Total coverage of 32.9%. Improve this to at least 50%. Class coverage is below minimum. Improve to at least 0%/) expect(@dangerfile.status_report[:markdowns][0].message).to include('| `com/example/CachedRepository` | 50% | 60% | :warning: |') end it 'test with package coverage' do path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" @my_plugin.minimum_project_coverage_percentage = 50 @my_plugin.minimum_package_coverage_map = { 'com/example/' => 70 } - @my_plugin.report path_a - + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Total coverage of 32.9%. Improve this to at least 50%/) expect(@dangerfile.status_report[:markdowns][0].message).to include('| `com/example/CachedRepository` | 50% | 70% | :warning: |') end it 'test with bigger overlapped package coverage' do path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" @@ -72,12 +70,11 @@ @my_plugin.minimum_package_coverage_map = { 'com/example/' => 70, 'com/' => 90 } - @my_plugin.report path_a - + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Total coverage of 32.9%. Improve this to at least 50%/) expect(@dangerfile.status_report[:markdowns][0].message).to include('| `com/example/CachedRepository` | 50% | 70% | :warning: |') end it 'test with lower overlapped package coverage' do path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" @@ -86,12 +83,11 @@ @my_plugin.minimum_package_coverage_map = { 'com/example/' => 77, 'com/' => 30 } - @my_plugin.report path_a - + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Total coverage of 32.9%. Improve this to at least 50%/) expect(@dangerfile.status_report[:markdowns][0].message).to include('| `com/example/CachedRepository` | 50% | 77% | :warning: |') end it 'test with overlapped package coverage and bigger class coverage' do path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" @@ -101,12 +97,11 @@ 'com/example/' => 77, 'com/' => 30 } @my_plugin.minimum_class_coverage_map = { 'com/example/CachedRepository' => 100 } - @my_plugin.report path_a - + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Total coverage of 32.9%. Improve this to at least 50%/) expect(@dangerfile.status_report[:markdowns][0].message).to include('| `com/example/CachedRepository` | 50% | 100% | :warning: |') end it 'test with overlapped package coverage and lower class coverage' do path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" @@ -116,12 +111,11 @@ 'com/example/' => 90, 'com/' => 85 } @my_plugin.minimum_class_coverage_map = { 'com/example/CachedRepository' => 80 } - @my_plugin.report path_a - + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Total coverage of 32.9%. Improve this to at least 50%/) expect(@dangerfile.status_report[:markdowns][0].message).to include('| `com/example/CachedRepository` | 50% | 80% | :warning: |') end it 'checks modified files when "only_check_new_files" attribute is false' do path_a = "#{File.dirname(__FILE__)}/fixtures/output_c.xml" @@ -154,11 +148,11 @@ @my_plugin.minimum_project_coverage_percentage = 50 @my_plugin.minimum_class_coverage_percentage = 70 @my_plugin.only_check_new_files = true - @my_plugin.report path_a + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Class coverage is below minimum. Improve to at least 70%/) expect(@dangerfile.status_report[:markdowns][0].message).to include('### JaCoCo Code Coverage 55.59% :white_check_mark:') expect(@dangerfile.status_report[:markdowns][0].message).to include('| Class | Covered | Required | Status |') expect(@dangerfile.status_report[:markdowns][0].message).to include('|:---|:---:|:---:|:---:|') expect(@dangerfile.status_report[:markdowns][0].message).to include('| `io/sample/UseCase` | 66% | 70% | :warning: |') @@ -169,12 +163,11 @@ path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" @my_plugin.minimum_class_coverage_percentage = 80 @my_plugin.minimum_project_coverage_percentage = 50 - @my_plugin.report(path_a, 'http://test.com/') - + expect { @my_plugin.report(path_a, 'http://test.com/') }.to raise_error(CoverageRequirementsNotMetError, /Total coverage of 32.9%. Improve this to at least 50%. Class coverage is below minimum. Improve to at least 80%/) expect(@dangerfile.status_report[:markdowns][0].message).to include('| [`com/example/CachedRepository`](http://test.com/com.example/CachedRepository.html) | 50% | 80% | :warning: |') end it 'When option "fail_no_coverage_data_found" is set to optionally fail, it doesn\'t fail the execution' do path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" @@ -232,11 +225,11 @@ path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" @my_plugin.minimum_project_coverage_percentage = 30 @my_plugin.minimum_class_coverage_percentage = 60 - @my_plugin.report path_a + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Class coverage is below minimum. Improve to at least 60%/) expected = "### JaCoCo Code Coverage 32.9% :white_check_mark:\n" expected += "#### There are classes that do not meet coverage requirement :warning:\n" expected += "| Class | Covered | Required | Status |\n" expected += "|:---|:---:|:---:|:---:|\n" @@ -266,11 +259,11 @@ @my_plugin.minimum_project_coverage_percentage = 30 @my_plugin.minimum_class_coverage_percentage = 60 @my_plugin.subtitle_failure = 'Too bad :(' - @my_plugin.report path_a + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Class coverage is below minimum. Improve to at least 60%/) expected = "### JaCoCo Code Coverage 32.9% :white_check_mark:\n" expected += "#### Too bad :(\n" expected += "| Class | Covered | Required | Status |\n" expected += "|:---|:---:|:---:|:---:|\n" @@ -309,11 +302,11 @@ it 'branch coverage takes over line coverage for classes, when instruction coverage is not available' do path_a = "#{File.dirname(__FILE__)}/fixtures/output_e.xml" @my_plugin.minimum_class_coverage_percentage = 50 - @my_plugin.report path_a + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Class coverage is below minimum. Improve to at least 50%/) expect(@dangerfile.status_report[:markdowns][0].message).to include('| `com/example/CachedRepository` | 42% | 50% | :warning: |') end it 'line coverage takes over for classes, when both instruction coverage and branch coverage are not available' do @@ -322,9 +315,45 @@ @my_plugin.minimum_class_coverage_percentage = 50 @my_plugin.report path_a expect(@dangerfile.status_report[:markdowns][0].message).to include('| `com/example/CachedRepository` | 93% | 50% | :white_check_mark: |') + end + + describe 'with CachedRepository containing @Composable annotation' do + before do + allow(File).to receive(:exist?).with('src/java/com/example/CachedRepository.java').and_return(true) + allow(File).to receive(:read).with('src/java/com/example/CachedRepository.java').and_return('package com.kevin.mia.mikaela class Vika { @Composable fun someUiWidget() {} }') + end + + it 'applies minimum_composable_class_coverage_percentage' do + path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" + + @my_plugin.minimum_class_coverage_percentage = 55 + @my_plugin.minimum_composable_class_coverage_percentage = 45 + + @my_plugin.report path_a + + expect(@dangerfile.status_report[:markdowns][0].message).to include('| `com/example/CachedRepository` | 50% | 45% | :white_check_mark: |') + end + end + + describe 'with CachedRepository _not_ containing @Composable annotation' do + before do + allow(File).to receive(:exist?).with('src/java/com/example/CachedRepository.java').and_return(true) + allow(File).to receive(:read).with('src/java/com/example/CachedRepository.java').and_return('package com.kevin.mia.mikaela class Vika { fun main() {} }') + end + + it 'does not apply minimum_composable_class_coverage_percentage' do + path_a = "#{File.dirname(__FILE__)}/fixtures/output_a.xml" + + @my_plugin.minimum_class_coverage_percentage = 55 + @my_plugin.minimum_composable_class_coverage_percentage = 45 + + expect { @my_plugin.report(path_a) }.to raise_error(CoverageRequirementsNotMetError, /Class coverage is below minimum. Improve to at least 55%/) + + expect(@dangerfile.status_report[:markdowns][0].message).to include('| `com/example/CachedRepository` | 50% | 55% | :warning: |') + end end end end end