65def pytest_sessionfinish(session, exitstatus):
66 if not hasattr(session, "items"):
67
68 return
69 if os.environ.get("DISABLE_CTEST_MEASUREMENTS") == "1":
70
71 return
72
73 outcomes = defaultdict(list)
74 for key in results:
75 if key.endswith(".outcome"):
76 outcomes[results[key]].append(key[:-8])
77 results.update(
78 (f"outcome.{outcome}", sorted(tests)) for outcome, tests in outcomes.items()
79 )
80
81 ignore_keys = {"test_fixture_setup.completed_process"}
82 template = (
83 '<DartMeasurement type="text/string" name="{name}">{value}</DartMeasurement>'
84 )
85
86 to_print = [
87 (key, value)
88 for key, value in results.items()
89 if not any(key.endswith(ignore_key) for ignore_key in ignore_keys) and value
90 ]
91 to_print.sort()
92 for key, value in to_print:
93 sanitized_value = XSS.escape(sanitize_for_xml(str(value)))
94
95 key = key.replace("/", "_")
96 print(template.format(name=key, value=sanitized_value), end="")