class SimpleCov::Formatter::Console

Constants

ATTRIBUTES
VERSION

Public Instance Methods

branches_missed(missed_branches) click to toggle source
# File lib/simplecov-console.rb, line 120
def branches_missed(missed_branches)
  missed_branches.group_by(&:start_line).map do |line_number, branches|
    "#{line_number}[#{branches.map(&:type).join(',')}]"
  end
end
colorize(s) click to toggle source
# File lib/simplecov-console.rb, line 184
def colorize(s)
  return s if !use_colors?

  s =~ /([\d.]+)/
  n = $1.to_f
  if n >= 90 then
    ANSI.green { s }
  elsif n >= 80 then
    ANSI.yellow { s }
  else
    ANSI.red { s }
  end
end
format(result) click to toggle source
# File lib/simplecov-console.rb, line 50
def format(result)
  include_output_style

  root = nil
  if Module.const_defined? :ROOT then
    root = ROOT
  elsif Module.const_defined?(:Rails) && Rails.respond_to?(:root) then
    root = Rails.root.to_s
  elsif ENV["BUNDLE_GEMFILE"] then
    root = File.dirname(ENV["BUNDLE_GEMFILE"])
  else
    root = Dir.pwd
  end

  puts
  puts "COVERAGE: #{colorize(pct(result.covered_percent))} -- #{result.covered_lines}/#{result.total_lines} lines in #{result.files.size} files"
  show_branch_coverage = show_branch_coverage?(result)
  if show_branch_coverage
    puts "BRANCH COVERAGE: #{colorize(pct(result.coverage_statistics[:branch].percent))} -- #{result.covered_branches}/#{result.total_branches} branches in #{result.files.size} files"
  end
  puts

  if root.nil? then
    return
  end

  if SimpleCov::Formatter::Console.sort == 'coverage'
    if show_branch_coverage
      files = result.files.sort do |a,b|
        (a.covered_percent <=> b.covered_percent).nonzero? ||
          (a.coverage_statistics[:branch].percent <=> b.coverage_statistics[:branch].percent)
      end
    else
      files = result.files.sort_by(&:covered_percent)
    end
  else
    files = result.files.to_a
  end

  covered_files = 0

  unless SimpleCov::Formatter::Console.show_covered
    files.select!{ |file|
      if file.covered_percent == 100 && (!show_branch_coverage || file.coverage_statistics[:branch].percent == 100) then
        covered_files += 1
        false
      else
        true
      end
    }
    if files.nil? or files.empty? then
      return
    end
  end

  max_rows = SimpleCov::Formatter::Console.max_rows

  if ![-1, nil].include?(max_rows) && files.size > max_rows then
    puts "showing bottom (worst) #{max_rows} of #{files.size} files"
    files = files.slice(0, max_rows)
  end

  puts output(files, root, show_branch_coverage)

  if covered_files > 0 then
    puts "#{covered_files} file(s) with 100% coverage not shown"
  end

end
include_output_style() click to toggle source
# File lib/simplecov-console.rb, line 34
def include_output_style
  if SimpleCov::Formatter::Console.output_style == 'block' then
    require 'simplecov-console/output/block'
    extend BlockOutput
  else
    # default to table
    require 'simplecov-console/output/table'
    extend TableOutput
  end
end
missed(missed_lines) click to toggle source

Group missed lines for better display

@param [Array<SimpleCov::SourceFile::Line>] missed array of missed lines reported by SimpleCov

@return [Array<String>] Missing groups of lines

# File lib/simplecov-console.rb, line 131
def missed(missed_lines)
  groups = {}
  base = nil
  previous = nil
  missed_lines.each do |src|
    ln = src.line_number
    if base && previous && (ln - 1) == previous
      groups[base] += 1
      previous = ln
    else
      base = ln
      groups[base] = 0
      previous = base
    end
  end

  group_str = []
  groups.map do |starting_line, length|
    if length > 0
      group_str << "#{starting_line}-#{starting_line + length}"
    else
      group_str << "#{starting_line}"
    end
  end

  max_lines = SimpleCov::Formatter::Console.max_lines
  if max_lines > 0 && group_str.size > max_lines then
    # Show at most N missing groups of lines
    group_str = group_str[0, SimpleCov::Formatter::Console.max_lines] << "..."
  end

  group_str
end
pct(number) click to toggle source
# File lib/simplecov-console.rb, line 176
def pct(number)
  sprintf("%6.2f%%", number)
end
show_branch_coverage?(result) click to toggle source
# File lib/simplecov-console.rb, line 45
def show_branch_coverage?(result)
  Gem::Version.new(SimpleCov::VERSION) >= Gem::Version.new('0.18.5') &&
    result.coverage_statistics[:branch]
end
trunc(str) click to toggle source

Truncate string to at most N chars (as defined by missing_len)

# File lib/simplecov-console.rb, line 166
def trunc(str)
  return str if str.include?("...") # already truncated, skip

  len = SimpleCov::Formatter::Console.missing_len
  if len > 0 && str.size > len then
    str = str[0, len].gsub(/,(\s+)?$/, '') + ' ...'
  end
  str
end
use_colors?() click to toggle source
# File lib/simplecov-console.rb, line 180
def use_colors?
  SimpleCov::Formatter::Console.use_colors
end