class SimpleCov::Formatter::LcovFormatter
Custom Formatter to generate lcov style coverage for simplecov
def self.output_directory
==== Return
Output directory for generated files.
def self.output_directory File.join(SimpleCov.coverage_path, 'lcov') end
def create_output_directory!
def create_output_directory! return if Dir.exist?(self.class.output_directory) FileUtils.mkdir_p(self.class.output_directory) end
def format(result)
==== Args
generate lcov style coverage.
def format(result) create_output_directory! result.files.each { |file| write_lcov!(file) } puts "Lcov style coverage report generated for #{result.command_name} to #{SimpleCov::Formatter::LcovFormatter.output_directory}." end
def format_file(file)
def format_file(file) "SF:#{file.filename}\n".tap do |content| file.lines.reject(&:never?).reject(&:skipped?) .each do |line| content << "DA:#{line.number},#{line.coverage}\n" end content << "end_of_record\n" end end
def output_filename(filename)
def output_filename(filename) filename.gsub("#{SimpleCov.root}/", '').gsub('/', '-') .tap { |name| name << '.lcov' } end
def write_lcov!(file)
def write_lcov!(file) File.open(File.join(self.class.output_directory, output_filename(file.filename)), 'w') do |f| f.write format_file(file) end end