Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
signalapp
GitHub Repository: signalapp/Signal-iOS
Path: blob/main/Scripts/parse-xcresult.py
1 views
1
#!/usr/bin/env python3
2
3
import json
4
import sys
5
from pathlib import Path
6
7
8
def parse_xcresult(data):
9
# Calculate duration
10
start_time = data.get("startTime")
11
finish_time = data.get("finishTime")
12
duration = finish_time - start_time if start_time and finish_time else 0
13
14
# Get test counts
15
total = data.get("totalTestCount", 0)
16
passed = data.get("passedTests", 0)
17
failed = data.get("failedTests", 0)
18
19
# Print summary
20
print()
21
print("********")
22
print(f"Ran {total} tests in {duration:.0f} seconds.")
23
print(f"{passed} tests passed.")
24
print(f"{failed} tests failed.")
25
print("********")
26
27
# Print failures if any
28
failures = data.get("testFailures", [])
29
if failures:
30
for failure in failures:
31
print()
32
test_id = failure.get("testIdentifierString", "N/A")
33
error = failure.get("failureText", "N/A")
34
print("Test failed:")
35
print(f" {test_id}")
36
print(f" {error}")
37
38
39
def main():
40
if len(sys.argv) < 2:
41
print("Usage: parse_xcresult.py <path_to_json_file>")
42
sys.exit(1)
43
44
json_file = Path(sys.argv[1])
45
46
try:
47
with open(json_file, "r") as f:
48
data = json.load(f)
49
parse_xcresult(data)
50
except Exception as e:
51
print(f"Error: {e}")
52
sys.exit(1)
53
54
55
if __name__ == "__main__":
56
main()
57
58