Class: Covered::MarkdownSummary

Inherits:
Object
  • Object
show all
Defined in:
lib/covered/markdown_summary.rb

Instance Method Summary collapse

Constructor Details

#initialize(threshold: 1.0) ⇒ MarkdownSummary

Returns a new instance of MarkdownSummary.



13
14
15
# File 'lib/covered/markdown_summary.rb', line 13

def initialize(threshold: 1.0)
  @threshold = threshold
end

Instance Method Details

#call(wrapper, output = $stdout) ⇒ Object

A coverage array gives, for each line, the number of line execution by the interpreter. A nil value means coverage is finishd for this line (lines like else and end).



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/covered/markdown_summary.rb', line 58

def call(wrapper, output = $stdout)
  output.puts "# Coverage Report"
  output.puts
  
  ordered = []
  buffer = StringIO.new
  
  statistics = self.each(wrapper) do |coverage|
    ordered << coverage unless coverage.complete?
  end
  
  statistics.print(output)
  
  if ordered.any?
    output.puts "", "\#\# Least Coverage:", ""
    ordered.sort_by!(&:missing_count).reverse!
    
    ordered.first(5).each do |coverage|
      path = wrapper.relative_path(coverage.path)
      
      output.puts "- `#{path}`: #{coverage.missing_count} lines not executed!"
    end
  end
  
  output.print(buffer.string)
end

#each(wrapper) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/covered/markdown_summary.rb', line 17

def each(wrapper)
  statistics = Statistics.new
  
  wrapper.each do |coverage|
    statistics << coverage
    
    if @threshold.nil? or coverage.ratio < @threshold
      yield coverage
    end
  end
  
  return statistics
end


31
32
33
34
35
36
37
38
39
# File 'lib/covered/markdown_summary.rb', line 31

def print_annotations(output, coverage, line, line_offset)
  if annotations = coverage.annotations[line_offset]
    prefix = "#{line_offset}|".rjust(8) + "*|".rjust(8)
    output.write prefix
    
    output.write line.match(/^\s+/)
    output.puts "\# #{annotations.join(", ")}"
  end
end


45
46
47
48
49
50
51
52
53
54
55
# File 'lib/covered/markdown_summary.rb', line 45

def print_line(output, line, line_offset, count)
  prefix = "#{line_offset}|".rjust(8) + "#{count}|".rjust(8)
  
  output.write prefix
  output.write line
  
  # If there was no newline at end of file, we add one:
  unless line.end_with?($/)
    output.puts
  end
end


41
42
43
# File 'lib/covered/markdown_summary.rb', line 41

def print_line_header(output)
  output.puts "Line|".rjust(8) + "Hits|".rjust(8)
end