Module: Kettle::Soup::Cover

Defined in:
lib/kettle/soup/cover.rb,
lib/kettle/soup/cover/version.rb

Defined Under Namespace

Modules: Version Classes: Error

Constant Summary collapse

FALSE =
"false"
TRUE =
"true"
FORMATTER_PLUGINS =
{
  # HTML for Humans
  html: {
    type: :html,
    klass: "HTMLFormatter",
    lib: "simplecov-html",
  },
  # XML for Jenkins
  xml: {
    type: :xml,
    klass: "CoberturaFormatter",
    lib: "simplecov-cobertura",
  },
  # RCOV for Hudson
  rcov: {
    type: :rcov,
    klass: "RcovFormatter",
    lib: "simplecov-rcov",
  },
  # LCOV for GCOV
  lcov: {
    type: :lcov,
    klass: "LcovFormatter",
    lib: "simplecov-lcov",
  },
  # JSON for CodeClimate
  json: {
    type: :json,
    klass: "JSONFormatter",
    lib: "simplecov_json_formatter",
  },
  # TTY / Console output
  tty: {
    type: :tty,
    klass: "Console",
    lib: "simplecov-console",
  },
}
CI =
ENV.fetch("CI", FALSE)
COMMAND_NAME =
ENV.fetch("K_SOUP_COMMAND_NAME", "RSpec (COVERAGE)")
COVERAGE_DIR =
ENV.fetch("K_SOUP_COV_DIR", "coverage")
IS_CI =
CI.casecmp?(TRUE)
DO_COV =
ENV.fetch("K_SOUP_DO_COV", CI).casecmp?(TRUE)
FILTER_DIRS =
ENV.fetch(
"K_SOUP_FILTER_DIRS",
"bin,certs,checksums,config,docs,features,gemfiles,pkg,results,sig,spec,src,test,test-results,vendor",
      )
.split(",")
.map { |dir_name| %r{^/#{dir_name}/} }
FORMATTERS =
ENV.fetch(
"K_SOUP_FORMATTERS",
IS_CI ? "html,xml,rcov,lcov,json,tty" : "",
      )
.split(",")
.map { |fmt_name| FORMATTER_PLUGINS[fmt_name.to_sym] }
MIN_COVERAGE_HARD =
ENV.fetch("K_SOUP_COV_MIN_HARD", FALSE).casecmp?(TRUE)
MIN_COVERAGE_BRANCH =
ENV.fetch("K_SOUP_COV_MIN_BRANCH", "80").to_i
MIN_COVERAGE_LINE =
ENV.fetch("K_SOUP_COV_MIN_LINE", "80").to_i
MULTI_FORMATTERS_DEFAULT =
if IS_CI
  CI
else
  FORMATTERS.any? ? TRUE : FALSE
end
MULTI_FORMATTERS =
ENV.fetch("K_SOUP_COV_MULTI_FORMATTERS", MULTI_FORMATTERS_DEFAULT).casecmp?(TRUE)
USE_MERGING =
ENV.fetch("K_SOUP_USE_MERGING", FALSE)
VERBOSE =
ENV.fetch("K_SOUP_VERBOSE", FALSE).casecmp?(TRUE)

Class Method Summary collapse

Class Method Details

.load_formattersObject



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/kettle/soup/cover.rb', line 95

module_function def load_formatters
  SimpleCov.formatters = FORMATTERS
    .each_with_object([]) do |fmt_data, formatters|
    require fmt_data[:lib].to_s

    klass = SimpleCov::Formatter.const_get(fmt_data[:klass])

    if fmt_data[:type] == :lcov
      klass.config do |c|
        c.report_with_single_file = true
        c.single_report_path = "#{Kettle::Soup::Cover::COVERAGE_DIR}/lcov.info"
      end
    end

    formatters << klass
  end
end