| 227 | self._add_simple("error", bin_xml_escape(msg), str(report.longrepr)) |
| 228 | |
| 229 | def append_skipped(self, report: TestReport) -> None: |
| 230 | if hasattr(report, "wasxfail"): |
| 231 | xfailreason = report.wasxfail |
| 232 | if xfailreason.startswith("reason: "): |
| 233 | xfailreason = xfailreason[8:] |
| 234 | xfailreason = bin_xml_escape(xfailreason) |
| 235 | skipped = ET.Element("skipped", type="pytest.xfail", message=xfailreason) |
| 236 | self.append(skipped) |
| 237 | else: |
| 238 | assert isinstance(report.longrepr, tuple) |
| 239 | filename, lineno, skipreason = report.longrepr |
| 240 | if skipreason.startswith("Skipped: "): |
| 241 | skipreason = skipreason[9:] |
| 242 | details = f"{filename}:{lineno}: {skipreason}" |
| 243 | |
| 244 | skipped = ET.Element( |
| 245 | "skipped", type="pytest.skip", message=bin_xml_escape(skipreason) |
| 246 | ) |
| 247 | skipped.text = bin_xml_escape(details) |
| 248 | self.append(skipped) |
| 249 | self.write_captured_output(report) |
| 250 | |
| 251 | def finalize(self) -> None: |
| 252 | data = self.to_xml() |