Class: Xcov::Target
Instance Attribute Summary collapse
-
#covered_lines ⇒ Object
number of covered lines in target.
-
#executable_lines ⇒ Object
number of executable lines in target.
-
#file_templates ⇒ Object
Returns the value of attribute file_templates.
-
#files ⇒ Object
Returns the value of attribute files.
-
#name ⇒ Object
Returns the value of attribute name.
Attributes inherited from Base
#coverage, #coverage_color, #displayable_coverage, #id
Class Method Summary collapse
- .by_coverage_with_ignored_at_the_end ⇒ Object
- .calculate_number_of_covered_lines(files) ⇒ Object
- .calculate_number_of_executable_lines(files) ⇒ Object
-
.map(dictionary) ⇒ Object
Class methods.
- .select_non_ignored_files(files) ⇒ Object
Instance Method Summary collapse
- #html_value ⇒ Object
-
#initialize(name, executable, covered, files) ⇒ Target
constructor
A new instance of Target.
- #json_value ⇒ Object
- #markdown_value ⇒ Object
- #print_description ⇒ Object
Methods inherited from Base
#coverage_emoji, #create_coverage_color, #create_displayable_coverage, create_id, #create_summary, template
Constructor Details
#initialize(name, executable, covered, files) ⇒ Target
Returns a new instance of Target.
12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/xcov/model/target.rb', line 12 def initialize(name, executable, covered, files) @name = CGI::escapeHTML(name) @executable_lines = executable @covered_lines = covered @files = files # we cast to floats because integers always return 0 @coverage = executable == 0 ? 0.0 : covered.to_f / executable # avoid ZeroDivisionError @displayable_coverage = self.create_displayable_coverage @coverage_color = self.create_coverage_color @id = Target.create_id(name) end |
Instance Attribute Details
#covered_lines ⇒ Object
number of covered lines in target
8 9 10 |
# File 'lib/xcov/model/target.rb', line 8 def covered_lines @covered_lines end |
#executable_lines ⇒ Object
number of executable lines in target
7 8 9 |
# File 'lib/xcov/model/target.rb', line 7 def executable_lines @executable_lines end |
#file_templates ⇒ Object
Returns the value of attribute file_templates.
10 11 12 |
# File 'lib/xcov/model/target.rb', line 10 def file_templates @file_templates end |
#files ⇒ Object
Returns the value of attribute files.
9 10 11 |
# File 'lib/xcov/model/target.rb', line 9 def files @files end |
#name ⇒ Object
Returns the value of attribute name.
6 7 8 |
# File 'lib/xcov/model/target.rb', line 6 def name @name end |
Class Method Details
.by_coverage_with_ignored_at_the_end ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/xcov/model/target.rb', line 72 def self.by_coverage_with_ignored_at_the_end lambda { |lhs, rhs| if lhs.ignored == rhs.ignored # sort by coverage if files are both ignored # or none of them are ignored (lhs.coverage <=> rhs.coverage) else # ignored files will come at the end (lhs.ignored ? 1:0) <=> (rhs.ignored ? 1:0) end } end |
.calculate_number_of_covered_lines(files) ⇒ Object
89 90 91 92 93 94 95 |
# File 'lib/xcov/model/target.rb', line 89 def self.calculate_number_of_covered_lines(files) return 0 if files.nil? || files.empty? files.reduce(0) do |partial_result, file| partial_result + file.number_of_covered_lines end end |
.calculate_number_of_executable_lines(files) ⇒ Object
97 98 99 100 101 102 103 |
# File 'lib/xcov/model/target.rb', line 97 def self.calculate_number_of_executable_lines(files) return 0 if files.nil? || files.empty? files.reduce(0) do |partial_result, file| partial_result + file.number_of_executable_lines end end |
.map(dictionary) ⇒ Object
Class methods
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/xcov/model/target.rb', line 59 def self.map(dictionary) name = dictionary["name"] files = dictionary["files"].map { |file| Source.map(file)} files = files.sort &by_coverage_with_ignored_at_the_end non_ignored_files = Target.select_non_ignored_files(files) executable = Target.calculate_number_of_executable_lines(non_ignored_files) covered = Target.calculate_number_of_covered_lines(non_ignored_files) Target.new(name, executable, covered, files) end |
.select_non_ignored_files(files) ⇒ Object
85 86 87 |
# File 'lib/xcov/model/target.rb', line 85 def self.select_non_ignored_files(files) files.select { |file| !file.ignored } end |
Instance Method Details
#html_value ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/xcov/model/target.rb', line 31 def html_value @file_templates = "" @files.each do |file| @file_templates << file.html_value end Function.template("target").result(binding) end |
#json_value ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/xcov/model/target.rb', line 49 def json_value { "name" => @name, "coverage" => @coverage, "files" => @files ? @files.map{ |file| file.json_value } : [] } end |
#markdown_value ⇒ Object
40 41 42 43 44 45 46 47 |
# File 'lib/xcov/model/target.rb', line 40 def markdown_value markdown = "## Current coverage for #{@name} is `#{@displayable_coverage}`\n" return markdown << "✅ *No files affecting coverage found*\n\n---\n" if @files.empty? markdown << "Files changed | - | - \n--- | --- | ---\n" markdown << "#{@files.map { |file| file.markdown_value }.join("")}\n---\n" markdown end |
#print_description ⇒ Object
24 25 26 27 28 29 |
# File 'lib/xcov/model/target.rb', line 24 def print_description puts "\t#{@name} (#{@coverage})" @files.each do |file| file.print_description end end |