[llvm] r332148 - Overhaul unicode handling in xunit output
Michał Górny via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 6 00:14:06 PDT 2018
W dniu pią, 11.05.2018 o godzinie 22∶18 +0000, użytkownik Chris Matthews
via llvm-commits napisał:
> Author: cmatthews
> Date: Fri May 11 15:18:22 2018
> New Revision: 332148
>
> URL: http://llvm.org/viewvc/llvm-project?rev=332148&view=rev
> Log:
> Overhaul unicode handling in xunit output
>
> I have seen a lot of errors where the xunit does not encode unicode
> test output correctly. Handle that explicitly now.
>
> Modified:
> llvm/trunk/utils/lit/lit/Test.py
>
> Modified: llvm/trunk/utils/lit/lit/Test.py
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/Test.py?rev=332148&r1=332147&r2=332148&view=diff
> ==============================================================================
> --- llvm/trunk/utils/lit/lit/Test.py (original)
> +++ llvm/trunk/utils/lit/lit/Test.py Fri May 11 15:18:22 2018
> @@ -371,15 +371,19 @@ class Test:
> class_name = safe_name + "." + "/".join(safe_test_path)
> else:
> class_name = safe_name + "." + safe_name
> - testcase_template = u"<testcase classname='{class_name}' name='{test_name}' time='{time:.2f}'"
> + testcase_template = "<testcase classname='{class_name}' name='{test_name}' time='{time:.2f}'"
> elapsed_time = self.result.elapsed if self.result.elapsed is not None else 0.0
> testcase_xml = testcase_template.format(class_name=class_name, test_name=test_name, time=elapsed_time)
> fil.write(testcase_xml)
> if self.result.code.isFailure:
> - fil.write(u">\n\t<failure ><![CDATA[")
> - fil.write(self.result.output)
> - fil.write(u"]]></failure>\n</testcase>")
> + fil.write(">\n\t<failure ><![CDATA[")
> + if type(self.result.output) == unicode:
> + encoded_output = self.result.output.encode("utf-8", 'ignore')
> + else:
> + encoded_output = self.result.output
> + fil.write(encoded_output)
> + fil.write("]]></failure>\n</testcase>")
> elif self.result.code == UNSUPPORTED:
> - fil.write(u">\n\t<skipped />\n</testcase>\n")
> + fil.write(">\n\t<skipped />\n</testcase>\n")
> else:
> - fil.write(u"/>")
> + fil.write("/>")
>
FYI, this broke Python 3 support in lit:
Traceback (most recent call last):
File "/usr/src/llvm/utils/lit/tests/../lit.py", line 7, in <module>
main()
File "/usr/src/llvm/utils/lit/lit/main.py", line 193, in main
main_with_tmp(builtinParameters)
File "/usr/src/llvm/utils/lit/lit/main.py", line 623, in main_with_tmp
result_test.writeJUnitXML(xunit_output_file)
File "/usr/src/llvm/utils/lit/lit/Test.py", line 381, in writeJUnitXML
if type(self.result.output) == unicode:
NameError: name 'unicode' is not defined
That said, I'm sorry but I wasn't able to find a solution that didn't
make things worse ;-).
--
Best regards,
Michał Górny
More information about the llvm-commits
mailing list