class Coverfield::Source::Class
Represents a class within a source file
Attributes
coverage[R]
hints[R]
methods[R]
module_name[R]
name[R]
node[R]
source_file[R]
Public Class Methods
new(class_name, module_name, node, source_file)
click to toggle source
Constructor
# File lib/coverfield/source/class.rb, line 8 def initialize(class_name, module_name, node, source_file) @name = class_name @module_name = module_name @node = node @methods = [] @source_file = source_file @coverage = 0 @hints = [] find_methods end
Public Instance Methods
calculate_coverage()
click to toggle source
Calculates the coverage of that class based on the relevant methods and sets the @coverage and the @hints fields
# File lib/coverfield/source/class.rb, line 43 def calculate_coverage @coverage = 0 @hints = [] test_file = source_file.test_file methods.each do |method| # Is the method covered? if test_file.cover?(full_qualified_name, method.name) @coverage += 1 else # Should it be covered? if method.nocov? @coverage += 1 else # If it should be covered, but isn't, create a hint method_name = "#{name}.#{method.name}".red @hints << "Missing test for #{method_name}" end end end end
full_qualified_name()
click to toggle source
Returns the full qualified name like Coverfield::Source::Class
# File lib/coverfield/source/class.rb, line 21 def full_qualified_name name = @name name = "#{@module_name}::#{name}" unless @module_name.empty? name end
method_count()
click to toggle source
Returns the total amount of methods within the class
# File lib/coverfield/source/class.rb, line 36 def method_count @methods.size end
relevant_method_count()
click to toggle source
Returns the amount of methods, which should be covered by tests
# File lib/coverfield/source/class.rb, line 29 def relevant_method_count relevant_methods = @methods.select { |m| !m.nocov?} relevant_methods.size end
Private Instance Methods
find_methods()
click to toggle source
Finds all methods within the class
# File lib/coverfield/source/class.rb, line 67 def find_methods node.each_node(:def) do |node| @methods << Coverfield::Source::Method.new(*node, self) end end