lib/simplecov-lcov.rb in simplecov-lcov-0.7.0 vs lib/simplecov-lcov.rb in simplecov-lcov-0.8.0
- old
+ new
@@ -81,20 +81,51 @@
.tap { |name| name << '.lcov' }
end
def format_file(file)
filename = file.filename.gsub("#{SimpleCov.root}/", './')
- "SF:#{filename}\n#{format_lines(file)}\nend_of_record\n"
+ pieces = []
+ pieces << "SF:#{filename}"
+ pieces << format_lines(file)
+
+ if SimpleCov.branch_coverage?
+ branch_data = format_branches(file)
+ pieces << branch_data if branch_data.length > 0
+ pieces << "BRF:#{file.total_branches.length}"
+ pieces << "BRH:#{file.covered_branches.length}"
+ end
+ pieces << "end_of_record"
+ pieces << ""
+ pieces.join("\n")
end
+ def format_branches(file)
+ branch_idx = 0
+ filtered_branches(file)
+ .map do |branch|
+ branch_idx += 1
+ format_branch(branch, branch_idx)
+ end
+ .join("\n")
+ end
+
def format_lines(file)
filtered_lines(file)
.map { |line| format_line(line) }
.join("\n")
end
def filtered_lines(file)
file.lines.reject(&:never?).reject(&:skipped?)
+ end
+
+ def filtered_branches(file)
+ file.branches.reject(&:skipped?)
+ end
+
+ def format_branch(branch, branch_idx)
+ taken = branch.coverage == 0 ? '-' : branch.coverage
+ "BRDA:#{branch.report_line},0,#{branch_idx},#{taken}"
end
def format_line(line)
"DA:#{line.number},#{line.coverage}"
end