diff --git a/README.md b/README.md index 48ea0e9..fa0a1e1 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ Once installed, `pronto run` will include undercover warnings. You can verify th `pronto-undercover` stores options passed to undercover in `.pronto.yml`. Please note that `--git-dir` and `--compare` options are not available, because `pronto-undercover` uses `Pronto::Git` instead of undercover's implementation. +`min-coverage`: Minimum coverage for `coverage:`, not raise warning if more than it. + Available options: ``` @@ -33,6 +35,7 @@ pronto-undercover: path: path/to/project lcov: path/to/project/coverage/report.lcov ruby-syntax: ruby19 + min-coverage: 1 ``` ## License diff --git a/lib/pronto/undercover.rb b/lib/pronto/undercover.rb index dfa8854..31dd508 100644 --- a/lib/pronto/undercover.rb +++ b/lib/pronto/undercover.rb @@ -41,6 +41,9 @@ def patch_to_undercover_message(patch) .added_lines .select { |line| line.new_lineno == msg_line_no } .map do |line| + # binding.pry + next if warning.coverage_f >= min_coverage + lines = untested_lines_for(warning) path = line.patch.delta.new_file[:path] msg = "#{warning.node.human_name} #{warning.node.name} missing tests" \ @@ -85,5 +88,12 @@ def undercover_options opts << "-p#{config['path']}" if config['path'] ::Undercover::Options.new.parse(opts) end + + def min_coverage + @min_coverage ||= ENV['PRONTO_UNDERCOVER_MIN_COVERAGE'] || + Pronto::ConfigFile.new.to_h.dig('pronto-undercover', + 'min-coverage') || + 1 + end end end diff --git a/pronto-undercover.gemspec b/pronto-undercover.gemspec index 2fd57f2..f03b23d 100644 --- a/pronto-undercover.gemspec +++ b/pronto-undercover.gemspec @@ -30,4 +30,5 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'simplecov-html' spec.add_development_dependency 'simplecov-lcov' spec.add_development_dependency 'timecop' + spec.metadata['rubygems_mfa_required'] = 'true' end diff --git a/spec/pronto/undercover_spec.rb b/spec/pronto/undercover_spec.rb index cffd02f..3877704 100644 --- a/spec/pronto/undercover_spec.rb +++ b/spec/pronto/undercover_spec.rb @@ -11,7 +11,8 @@ { 'lcov' => 'coverage/lcov/fixtures.lcov', 'path' => '.', - 'ruby-syntax' => 'ruby22' + 'ruby-syntax' => 'ruby22', + 'min-coverage' => 1 } end subject { Pronto::Undercover.new(patches) } @@ -47,6 +48,12 @@ expect(msg.runner).to eq(Pronto::Undercover) end + it 'not report if coverage >= min_coverage' do + write_config('min-coverage' => 0.5) + results = Pronto.run(:staged, 'test.git', nil) + expect(results.size).to eq(1) + end + it 'passes options from .pronto.yml to Undercover::Report' do write_config(valid_config) @@ -95,9 +102,7 @@ end def write_config(yaml_config_hash) - File.open('.pronto.yml', 'w') do |config_file| - config_file.write({'pronto-undercover' => yaml_config_hash}.to_yaml) - end + File.write('.pronto.yml', {'pronto-undercover' => yaml_config_hash}.to_yaml) end def delete_config