1ROBOT_LISTENER_API_VERSION = 2
2
3# callbacks
4def start_suite(name, attrs):
5    print("**** Starting suite '{}' with {} tests:{}".format(attrs["source"], attrs["totaltests"], attrs["tests"]))
6
7def end_suite(name, attrs):
8    print("**** Finished suite '{}' in {}ms: {}.".format(attrs["source"], attrs["elapsedtime"], attrs["statistics"]))
9
10def start_test(name, attrs):
11    print("+++++ Starting test '{}': ({}:{})".format(attrs["longname"], attrs["source"], attrs["lineno"]))
12
13def end_test(name, attrs):
14    print("+++++ Finished test '{}' in {}ms with status {}:{} ({}:{})".format(attrs["longname"], attrs["elapsedtime"], attrs["status"], attrs["message"], attrs["source"], attrs["lineno"]))
15
16def end_keyword(name, attrs):
17    if attrs["source"] == None or "renode-keywords.robot" in attrs["source"]:
18        return
19
20    print("{: <10} {: >6}ms  {}    {} ({}:{})".format(attrs["type"], attrs["elapsedtime"], attrs["kwname"], '  '.join(attrs["args"]), attrs["source"], attrs["lineno"]))
21