10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/affected_tests/map_merger.rb', line 10
def run(map_file_paths:, output_path:)
map_infos = map_file_paths.map do |map_file_path|
JSON.parse(File.read(map_file_path))
end
revisions = map_infos.map { |map_info| map_info["revision"] }.uniq
raise "map files weren't generated by same revision" if revisions.size != 1
keys = map_infos.flat_map { |map_info| map_info["map"].keys }.uniq
result_map = {}
keys.each do |key|
map_infos.each do |map_info|
map = map_info["map"]
next if map[key].nil?
result_map[key] ||= Set.new
map[key].each do |test_file_path|
result_map[key] << test_file_path
end
end
end
result = {
revision: revisions.first,
map: result_map.transform_values(&:to_a)
}
File.write(output_path, JSON.dump(result))
end
|