if ENV['COVERAGE'] == "1" SimpleCov.start do add_filter "/test/" add_filter "/bin/" add_filter "/scripts/" add_filter "/tmp/" add_filter "/vendor/" add_filter "/spec/" end all_files = Dir['**/*.rb'] base_result = {} all_files.each do |file| absolute = File::expand_path(file) lines = File.readlines(absolute, :encoding => 'UTF-8') base_result[absolute] = lines.map do |l| l.encode!('UTF-16', 'UTF-8', :invalid => :replace, :replace => '') l.encode!('UTF-8', 'UTF-16') l.strip! l.empty? || l =~ /^end$/ || l[0] == '#' ? nil : 0 end end SimpleCov.at_exit do coverage_result = Coverage.result covered_files = coverage_result.keys covered_files.each do |covered_file| base_result.delete(covered_file) end merged = SimpleCov::Result.new(coverage_result).original_result.merge_resultset(base_result) result = SimpleCov::Result.new(merged) result.format! end end