44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/ruby_branch_cover.rb', line 44
def read_json_and_getxml(filepath)
file = File.read(filepath)
data_hash = JSON.parse(file)
file_elements = []
unless data_hash.empty? || data_hash['RSpec'] == nil || data_hash['RSpec']['coverage'] == nil
files_map = data_hash['RSpec']['coverage']
files_map.each do
|filename,value|
branches = value['branches']
line_to_cover_array = []
unless branches.keys.size == 0
branches.each do
|branch, condtions_map|
line_number = branch.split(',')[2].strip
not_covered = find_notcovered_branches condtions_map
covered = condtions_map.keys.size-not_covered
line_tocover_element = {lineNumber:line_number , covered: covered > 0 , branchesToCover: condtions_map.keys.size, coveredBranches:covered}
index = check_for_duplicate_line line_number, line_to_cover_array
if index != -1
old_line_tocover_element = line_to_cover_array[index]
old_line_tocover_element[:branchesToCover] = old_line_tocover_element[:branchesToCover] + line_tocover_element[:branchesToCover]
old_line_tocover_element[:coveredBranches] = old_line_tocover_element[:coveredBranches] + line_tocover_element[:coveredBranches]
old_line_tocover_element[:covered] = old_line_tocover_element[:covered] && line_tocover_element[:covered]
line_to_cover_array[index] = old_line_tocover_element
else
line_to_cover_array.push(line_tocover_element)
end
end
file_element = {path: filename, lineElements: line_to_cover_array}
file_elements.push(file_element)
end
end
xml = Builder::XmlMarkup.new(:target => @output, :indent => 2)
puts "Total Files: #{file_elements.size}"
prepare_xml_builder xml, file_elements
File.write("coverage/branch-coverage.xml", xml.to_xml)
if file_elements.size > 0
return true
else
return false
end
else
xml = Builder::XmlMarkup.new(:target => @output, :indent => 2)
puts "Total Files: #{file_elements.size}"
prepare_xml_builder xml, file_elements
File.write("coverage/branch-coverage.xml", xml.to_xml)
return false
end
end
|