6
7
8
9
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
40
41
42
43
44
45
46
47
48
49
|
# File 'trainer/lib/trainer/plist_test_summary_parser.rb', line 6
def parse_content(raw_json, xcpretty_naming)
data = raw_json["TestableSummaries"].collect do |testable_summary|
summary_row = {
project_path: testable_summary["ProjectPath"],
target_name: testable_summary["TargetName"],
test_name: testable_summary["TestName"],
duration: testable_summary["Tests"].map { |current_test| current_test["Duration"] }.inject(:+),
tests: unfold_tests(testable_summary["Tests"]).collect do |current_test|
test_group, test_name = test_group_and_name(testable_summary, current_test, xcpretty_naming)
current_row = {
identifier: current_test["TestIdentifier"],
test_group: test_group,
name: test_name,
object_class: current_test["TestObjectClass"],
status: current_test["TestStatus"],
guid: current_test["TestSummaryGUID"],
duration: current_test["Duration"]
}
if current_test["FailureSummaries"]
current_row[:failures] = current_test["FailureSummaries"].collect do |current_failure|
{
file_name: current_failure['FileName'],
line_number: current_failure['LineNumber'],
message: current_failure['Message'],
performance_failure: current_failure['PerformanceFailure'],
failure_message: "#{current_failure['Message']} (#{current_failure['FileName']}:#{current_failure['LineNumber']})"
}
end
end
current_row
end
}
summary_row[:number_of_tests] = summary_row[:tests].count
summary_row[:number_of_failures] = summary_row[:tests].find_all { |a| (a[:failures] || []).count > 0 }.count
summary_row[:number_of_tests_excluding_retries] = summary_row[:number_of_tests]
summary_row[:number_of_failures_excluding_retries] = summary_row[:number_of_failures]
summary_row[:number_of_retries] = 0
summary_row
end
data
end
|