Class: SimpleCov::SourceFile::Branch

Inherits:
Object
  • Object
show all
Defined in:
lib/simplecov/source_file/branch.rb

Overview

Representing single branch that has been detected in coverage report. Give us support methods that handle needed calculations.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(start_line:, end_line:, coverage:, inline:, type:) ⇒ Branch

Returns a new instance of Branch.



11
12
13
14
15
16
17
18
# File 'lib/simplecov/source_file/branch.rb', line 11

def initialize(start_line:, end_line:, coverage:, inline:, type:)
  @start_line = start_line
  @end_line   = end_line
  @coverage   = coverage
  @inline     = inline
  @type       = type
  @skipped    = false
end

Instance Attribute Details

#coverageObject (readonly)

Returns the value of attribute coverage.



9
10
11
# File 'lib/simplecov/source_file/branch.rb', line 9

def coverage
  @coverage
end

#end_lineObject (readonly)

Returns the value of attribute end_line.



9
10
11
# File 'lib/simplecov/source_file/branch.rb', line 9

def end_line
  @end_line
end

#start_lineObject (readonly)

Returns the value of attribute start_line.



9
10
11
# File 'lib/simplecov/source_file/branch.rb', line 9

def start_line
  @start_line
end

#typeObject (readonly)

Returns the value of attribute type.



9
10
11
# File 'lib/simplecov/source_file/branch.rb', line 9

def type
  @type
end

Instance Method Details

#covered?Boolean

Return true if there is relevant count defined > 0

Returns:

  • (Boolean)


29
30
31
# File 'lib/simplecov/source_file/branch.rb', line 29

def covered?
  !skipped? && coverage.positive?
end

#inline?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/simplecov/source_file/branch.rb', line 20

def inline?
  @inline
end

#missed?Boolean

Check if branch missed or not

Returns:

  • (Boolean)


38
39
40
# File 'lib/simplecov/source_file/branch.rb', line 38

def missed?
  !skipped? && coverage.zero?
end

#overlaps_with?(line_range) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/simplecov/source_file/branch.rb', line 68

def overlaps_with?(line_range)
  start_line <= line_range.end && end_line >= line_range.begin
end

#reportArray

Return array with coverage count and badge

Returns:

  • (Array)


77
78
79
# File 'lib/simplecov/source_file/branch.rb', line 77

def report
  [type, coverage]
end

#report_lineObject

The line on which we want to report the coverage

Usually we choose the line above the start of the branch (so that it shows up at if/else) because that

  • highlights the condition

  • makes it distinguishable if the first line of the branch is an inline branch (see the nested_branches fixture)



50
51
52
53
54
55
56
# File 'lib/simplecov/source_file/branch.rb', line 50

def report_line
  if inline?
    start_line
  else
    start_line - 1
  end
end

#skipped!Object

Flags the branch as skipped



59
60
61
# File 'lib/simplecov/source_file/branch.rb', line 59

def skipped!
  @skipped = true
end

#skipped?Boolean

Returns true if the branch was marked skipped by virtue of nocov comments.

Returns:

  • (Boolean)


64
65
66
# File 'lib/simplecov/source_file/branch.rb', line 64

def skipped?
  @skipped
end