-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1069 from bf4/coverage
Add test coverage; account for no artifacts on CI
- Loading branch information
Showing
5 changed files
with
126 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
# https://github.com/colszowka/simplecov#using-simplecov-for-centralized-config | ||
# see https://github.com/colszowka/simplecov/blob/master/lib/simplecov/defaults.rb | ||
# vim: set ft=ruby | ||
|
||
## DEFINE VARIABLES | ||
@minimum_coverage = ENV.fetch('COVERAGE_MINIMUM') { | ||
case (defined?(RUBY_ENGINE) && RUBY_ENGINE) || "ruby" | ||
when 'jruby', 'rbx' | ||
96.0 | ||
else | ||
98.3 | ||
end | ||
}.to_f.round(2) | ||
# rubocop:disable Style/DoubleNegation | ||
ENV['FULL_BUILD'] ||= ENV['CI'] | ||
@running_ci = !!(ENV['FULL_BUILD'] =~ /\Atrue\z/i) | ||
@generate_report = @running_ci || !!(ENV['COVERAGE'] =~ /\Atrue\z/i) | ||
@output = STDOUT | ||
# rubocop:enable Style/DoubleNegation | ||
|
||
## CONFIGURE SIMPLECOV | ||
SimpleCov.pid = $$ # In case there's any forking | ||
|
||
SimpleCov.profiles.define 'app' do | ||
coverage_dir 'coverage' | ||
load_profile 'test_frameworks' | ||
|
||
add_group 'Libraries', 'lib' | ||
|
||
add_group 'Long files' do |src_file| | ||
src_file.lines.count > 100 | ||
end | ||
class MaxLinesFilter < SimpleCov::Filter | ||
def matches?(source_file) | ||
source_file.lines.count < filter_argument | ||
end | ||
end | ||
add_group 'Short files', MaxLinesFilter.new(5) | ||
|
||
# Exclude these paths from analysis | ||
add_filter '/config/' | ||
add_filter '/db/' | ||
add_filter 'tasks' | ||
end | ||
|
||
## START TRACKING COVERAGE (before activating SimpleCov) | ||
require 'coverage' | ||
Coverage.start | ||
|
||
## ADD SOME CUSTOM REPORTING AT EXIT | ||
SimpleCov.at_exit do | ||
header = "#{'*' * 20} SimpleCov Results #{'*' * 20}" | ||
@output.puts | ||
@output.puts header | ||
@output.puts SimpleCov.result.format! | ||
percent = Float(SimpleCov.result.covered_percent) | ||
if percent < @minimum_coverage | ||
@output.puts "Spec coverage was not high enough: "\ | ||
"#{percent.round(2)} is < #{@minimum_coverage}%\n" | ||
exit 1 if @generate_report | ||
else | ||
@output.puts "Nice job! Spec coverage (#{percent.round(2)}) "\ | ||
"is still at or above #{@minimum_coverage}%\n" | ||
end | ||
@output.puts | ||
@output.puts '*' * header.size | ||
end | ||
|
||
## CAPTURE CONFIG IN CLOSURE 'AppCoverage.start' | ||
## to defer running until test/test_helper.rb is loaded. | ||
# rubocop:disable Style/MultilineBlockChain | ||
AppCoverage = Class.new do | ||
def initialize(&block) | ||
@block = block | ||
end | ||
|
||
def start | ||
@block.call | ||
end | ||
end.new do | ||
SimpleCov.start 'app' | ||
if @generate_report | ||
if @running_ci | ||
require 'codeclimate-test-reporter' | ||
@output.puts '[COVERAGE] Running with SimpleCov Simple Formatter and CodeClimate Test Reporter' | ||
formatters = [ | ||
SimpleCov::Formatter::SimpleFormatter, | ||
CodeClimate::TestReporter::Formatter | ||
] | ||
else | ||
@output.puts '[COVERAGE] Running with SimpleCov HTML Formatter' | ||
formatters = [SimpleCov::Formatter::HTMLFormatter] | ||
end | ||
else | ||
formatters = [] | ||
end | ||
SimpleCov.formatters = formatters | ||
end | ||
# rubocop:enable Style/MultilineBlockChain |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,8 @@ | ||
begin | ||
require 'simplecov' | ||
rescue LoadError | ||
end | ||
|
||
require 'bundler/gem_tasks' | ||
|
||
begin | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# https://github.com/colszowka/simplecov/pull/400 | ||
# https://github.com/ruby/ruby/blob/trunk/lib/English.rb | ||
unless defined?(English) | ||
# The exception object passed to +raise+. | ||
alias $ERROR_INFO $! # rubocop:disable Style/SpecialGlobalVars | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters