2174 """Prepare the test result directory in the destination directory storing 2175 into it the result fields. 2176 A summary of the test result is stored both in a file in the test directory 2177 and in the global summary file. 2180 summary[
"id"] = result.GetId()
2181 summary[
"outcome"] = result.GetOutcome()
2182 summary[
"cause"] = result.GetCause()
2183 summary[
"fields"] = result.keys()
2184 summary[
"fields"].sort()
2187 for f
in [
"id",
"outcome",
"cause"]:
2188 summary[f] = str(summary[f])
2189 summary[
"fields"] =
map(str, summary[
"fields"])
2194 if "qmtest.start_time" in summary[
"fields"]:
2195 haveStartDate =
True 2197 haveStartDate =
False 2198 if "qmtest.end_time" in summary[
"fields"]:
2205 self.
_startTime = calendar.timegm(time.strptime(
2206 result[
"qmtest.start_time"],
"%Y-%m-%dT%H:%M:%SZ"))
2207 if self._StartTestTime.text
is None:
2208 self._StartDateTime.text = time.strftime(
2209 "%b %d %H:%M %Z", time.localtime(self.
_startTime))
2210 self._StartTestTime.text = str(self.
_startTime)
2211 self._site.set(
"BuildStamp", result[
"qmtest.start_time"])
2215 self.
_endTime = calendar.timegm(time.strptime(
2216 result[
"qmtest.end_time"],
"%Y-%m-%dT%H:%M:%SZ"))
2219 tl = ET.Element(
"Test")
2220 tl.text = summary[
"id"]
2221 self._TestList.insert(0, tl)
2224 Test = ET.Element(
"Test")
2225 if summary[
"outcome"] ==
"PASS":
2226 Test.set(
"Status",
"passed")
2227 elif summary[
"outcome"] ==
"FAIL":
2228 Test.set(
"Status",
"failed")
2229 elif summary[
"outcome"] ==
"SKIPPED" or summary[
"outcome"] ==
"UNTESTED":
2230 Test.set(
"Status",
"skipped")
2231 elif summary[
"outcome"] ==
"ERROR":
2232 Test.set(
"Status",
"failed")
2233 Name = ET.SubElement(Test,
"Name",)
2234 Name.text = summary[
"id"]
2235 Results = ET.SubElement(Test,
"Results")
2238 self._Testing.insert(3, Test)
2240 if haveStartDate
and haveEndDate:
2243 testduration = str(delta)
2244 Testduration = ET.SubElement(Results,
"NamedMeasurement")
2245 Testduration.set(
"name",
"Execution Time")
2246 Testduration.set(
"type",
"numeric/float")
2247 value = ET.SubElement(Testduration,
"Value")
2248 value.text = testduration
2251 for n
in (
"qmtest.end_time",
"qmtest.start_time",
"qmtest.cause",
"ExecTest.stdout"):
2252 if n
in summary[
"fields"]:
2253 summary[
"fields"].remove(n)
2257 if "ExecTest.exit_code" in summary[
"fields"]:
2258 summary[
"fields"].remove(
"ExecTest.exit_code")
2259 ExitCode = ET.SubElement(Results,
"NamedMeasurement")
2260 ExitCode.set(
"name",
"exit_code")
2261 ExitCode.set(
"type",
"numeric/integer")
2262 value = ET.SubElement(ExitCode,
"Value")
2264 result[
"ExecTest.exit_code"])
2266 TestStartTime = ET.SubElement(Results,
"NamedMeasurement")
2267 TestStartTime.set(
"name",
"Start_Time")
2268 TestStartTime.set(
"type",
"String")
2269 value = ET.SubElement(TestStartTime,
"Value")
2272 "%b %d %H:%M %Z %Y", time.localtime(self.
_startTime)))
2276 TestEndTime = ET.SubElement(Results,
"NamedMeasurement")
2277 TestEndTime.set(
"name",
"End_Time")
2278 TestEndTime.set(
"type",
"String")
2279 value = ET.SubElement(TestEndTime,
"Value")
2282 "%b %d %H:%M %Z %Y", time.localtime(self.
_endTime)))
2286 if summary[
"cause"]:
2287 FailureCause = ET.SubElement(Results,
"NamedMeasurement")
2288 FailureCause.set(
"name",
"Cause")
2289 FailureCause.set(
"type",
"String")
2290 value = ET.SubElement(FailureCause,
"Value")
2295 for field
in summary[
"fields"]:
2296 fields[field] = ET.SubElement(Results,
"NamedMeasurement")
2297 fields[field].set(
"type",
"String")
2298 fields[field].set(
"name", field)
2299 value = ET.SubElement(fields[field],
"Value")
2301 if "<pre>" in result[field][0:6]:
2306 if result.has_key(
"ExecTest.stdout"):
2307 Measurement = ET.SubElement(Results,
"Measurement")
2308 value = ET.SubElement(Measurement,
"Value")
2309 if "<pre>" in result[
"ExecTest.stdout"][0:6]:
2311 result[
"ExecTest.stdout"][5:-6])
2314 result[
"ExecTest.stdout"])
2318 self._tree.write(self.
_xmlFile,
"utf-8")
def escape_xml_illegal_chars(val, replacement='?')
def WriteResult(self, result)
struct GAUDI_API map
Parametrisation class for map-like implementation.
def convert_xml_illegal_chars(val)