2240 def WriteResult(self, result):
2241 """Prepare the test result directory in the destination directory storing 2242 into it the result fields. 2243 A summary of the test result is stored both in a file in the test directory 2244 and in the global summary file. 2247 summary[
"id"] = result.GetId()
2248 summary[
"outcome"] = result.GetOutcome()
2249 summary[
"cause"] = result.GetCause()
2250 summary[
"fields"] = result.keys()
2251 summary[
"fields"].sort()
2254 for f
in [
"id",
"outcome",
"cause"]:
2255 summary[f] = str(summary[f])
2256 summary[
"fields"] =
map(str, summary[
"fields"])
2261 if "qmtest.start_time" in summary[
"fields"]:
2262 haveStartDate =
True 2264 haveStartDate =
False 2265 if "qmtest.end_time" in summary[
"fields"]:
2272 self._startTime = calendar.timegm(
2273 time.strptime(result[
"qmtest.start_time"],
2274 "%Y-%m-%dT%H:%M:%SZ"))
2275 if self._StartTestTime.text
is None:
2276 self._StartDateTime.text = time.strftime(
2277 "%b %d %H:%M %Z", time.localtime(self._startTime))
2278 self._StartTestTime.text = str(self._startTime)
2279 self._site.set(
"BuildStamp", result[
"qmtest.start_time"])
2283 self._endTime = calendar.timegm(
2284 time.strptime(result[
"qmtest.end_time"],
"%Y-%m-%dT%H:%M:%SZ"))
2287 tl = ET.Element(
"Test")
2288 tl.text = summary[
"id"]
2289 self._TestList.
insert(0, tl)
2292 Test = ET.Element(
"Test")
2293 if summary[
"outcome"] ==
"PASS":
2294 Test.set(
"Status",
"passed")
2295 elif summary[
"outcome"] ==
"FAIL":
2296 Test.set(
"Status",
"failed")
2297 elif summary[
"outcome"] ==
"SKIPPED" or summary[
2298 "outcome"] ==
"UNTESTED":
2299 Test.set(
"Status",
"skipped")
2300 elif summary[
"outcome"] ==
"ERROR":
2301 Test.set(
"Status",
"failed")
2302 Name = ET.SubElement(
2306 Name.text = summary[
"id"]
2307 Results = ET.SubElement(Test,
"Results")
2310 self._Testing.
insert(3, Test)
2312 if haveStartDate
and haveEndDate:
2314 delta = self._endTime - self._startTime
2315 testduration = str(delta)
2316 Testduration = ET.SubElement(Results,
"NamedMeasurement")
2317 Testduration.set(
"name",
"Execution Time")
2318 Testduration.set(
"type",
"numeric/float")
2319 value = ET.SubElement(Testduration,
"Value")
2320 value.text = testduration
2323 for n
in (
"qmtest.end_time",
"qmtest.start_time",
"qmtest.cause",
2325 if n
in summary[
"fields"]:
2326 summary[
"fields"].remove(n)
2330 if "ExecTest.exit_code" in summary[
"fields"]:
2331 summary[
"fields"].remove(
"ExecTest.exit_code")
2332 ExitCode = ET.SubElement(Results,
"NamedMeasurement")
2333 ExitCode.set(
"name",
"exit_code")
2334 ExitCode.set(
"type",
"numeric/integer")
2335 value = ET.SubElement(ExitCode,
"Value")
2337 result[
"ExecTest.exit_code"])
2339 TestStartTime = ET.SubElement(Results,
"NamedMeasurement")
2340 TestStartTime.set(
"name",
"Start_Time")
2341 TestStartTime.set(
"type",
"String")
2342 value = ET.SubElement(TestStartTime,
"Value")
2345 time.strftime(
"%b %d %H:%M %Z %Y",
2346 time.localtime(self._startTime)))
2350 TestEndTime = ET.SubElement(Results,
"NamedMeasurement")
2351 TestEndTime.set(
"name",
"End_Time")
2352 TestEndTime.set(
"type",
"String")
2353 value = ET.SubElement(TestEndTime,
"Value")
2356 time.strftime(
"%b %d %H:%M %Z %Y",
2357 time.localtime(self._endTime)))
2361 if summary[
"cause"]:
2362 FailureCause = ET.SubElement(Results,
"NamedMeasurement")
2363 FailureCause.set(
"name",
"Cause")
2364 FailureCause.set(
"type",
"String")
2365 value = ET.SubElement(FailureCause,
"Value")
2370 for field
in summary[
"fields"]:
2371 fields[field] = ET.SubElement(Results,
"NamedMeasurement")
2372 fields[field].set(
"type",
"String")
2373 fields[field].set(
"name", field)
2374 value = ET.SubElement(fields[field],
"Value")
2376 if "<pre>" in result[field][0:6]:
2381 if "ExecTest.stdout" in result:
2382 Measurement = ET.SubElement(Results,
"Measurement")
2383 value = ET.SubElement(Measurement,
"Value")
2384 if "<pre>" in result[
"ExecTest.stdout"][0:6]:
2386 result[
"ExecTest.stdout"][5:-6])
2389 result[
"ExecTest.stdout"])
2393 self._tree.write(self._xmlFile,
"utf-8")
def escape_xml_illegal_chars(val, replacement='?')
struct GAUDI_API map
Parametrisation class for map-like implementation.
def convert_xml_illegal_chars(val)
constexpr struct ranges::Gaudi::Functional::details::insert_t insert