From 3115a4bf23d33079a5081b6bcd259b10701218be Mon Sep 17 00:00:00 2001 From: Alec Leamas Date: Apr 16 2015 17:42:02 +0000 Subject: Handle UTF-8 in XML report (bz #1112667). --- diff --git a/src/FedoraReview/reports.py b/src/FedoraReview/reports.py index 57cf050..f93f215 100644 --- a/src/FedoraReview/reports.py +++ b/src/FedoraReview/reports.py @@ -179,17 +179,22 @@ def write_xml_report(spec, results): def add_xml_result(root, result): ''' Add a failed result to the xml report as a tag. ''' + + def txt2utf(txt): + ''' Convert txt to utf-8. ''' + return unicode(txt, encoding='utf-8', errors='replace') + path = root.find('metadata/file').attrib['given-path'] results = root.find('results') issue = ET.SubElement(results, 'issue', {'test-id': result.name, 'severity': result.type}) - ET.SubElement(issue, 'message').text = result.text + ET.SubElement(issue, 'message').text = txt2utf(result.text) location = ET.SubElement(issue, 'location') ET.SubElement(location, 'file', {'given-path': path}) if result.output_extra: - ET.SubElement(issue, 'notes').text = result.output_extra + ET.SubElement(issue, 'notes').text = txt2utf(result.output_extra) return root root = create_xmltree(spec) @@ -197,6 +202,6 @@ def write_xml_report(spec, results): if result.is_failed: root = add_xml_result(root, result) dom = xml.dom.minidom.parseString(ET.tostring(root)) - prettyxml = dom.toprettyxml(indent=' ') + prettyxml = dom.toprettyxml(indent=' ', encoding='utf-8') with open('report.xml', 'w') as f: f.write(prettyxml)