From: Alexander Richardson Date: Wed, 16 May 2018 09:00:28 +0000 (+0000) Subject: Escape ]]> in xunit xml output X-Git-Tag: llvmorg-7.0.0-rc1~5912 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1bffd0f7414623ca4ed8ae4768b827f29fa173ad;p=platform%2Fupstream%2Fllvm.git Escape ]]> in xunit xml output Summary: This sequence ends the CDATA block so any characters after that are no longer escaped. This can be fixed by replacing "]]>" with "]]]]>". Reviewers: cmatthews Reviewed By: cmatthews Differential Revision: https://reviews.llvm.org/D46886 llvm-svn: 332440 --- diff --git a/llvm/utils/lit/lit/Test.py b/llvm/utils/lit/lit/Test.py index 73289f1..9c18d7e 100644 --- a/llvm/utils/lit/lit/Test.py +++ b/llvm/utils/lit/lit/Test.py @@ -381,7 +381,9 @@ class Test: encoded_output = self.result.output.encode("utf-8", 'ignore') else: encoded_output = self.result.output - fil.write(encoded_output) + # In the unlikely case that the output contains the CDATA terminator + # we wrap it by creating a new CDATA block + fil.write(encoded_output.replace("]]>", "]]]]>")) fil.write("]]>\n") elif self.result.code == UNSUPPORTED: unsupported_features = self.getMissingRequiredFeatures() diff --git a/llvm/utils/lit/tests/Inputs/xunit-output/bad&name.ini b/llvm/utils/lit/tests/Inputs/xunit-output/bad&name.ini index 8dfc685..3234da6 100644 --- a/llvm/utils/lit/tests/Inputs/xunit-output/bad&name.ini +++ b/llvm/utils/lit/tests/Inputs/xunit-output/bad&name.ini @@ -1,7 +1,7 @@ [global] result_code = FAIL -result_output = & < > " +result_output = & < > ]]> &" [results] value0 = 1 -value1 = 2.3456 \ No newline at end of file +value1 = 2.3456 diff --git a/llvm/utils/lit/tests/xunit-output.py b/llvm/utils/lit/tests/xunit-output.py index 436acd3..9d3cd76 100644 --- a/llvm/utils/lit/tests/xunit-output.py +++ b/llvm/utils/lit/tests/xunit-output.py @@ -1,12 +1,14 @@ # Check xunit output # RUN: rm -rf %t.xunit.xml # RUN: not %{lit} --xunit-xml-output %t.xunit.xml %{inputs}/xunit-output +# If xmllint is installed verify that the generated xml is well-formed +# RUN: sh -c 'if command -v xmllint 2>/dev/null; then xmllint --noout %t.xunit.xml; fi' # RUN: FileCheck < %t.xunit.xml %s # CHECK: # CHECK: # CHECK: # CHECK: -# CHECK-NEXT: "]]> +# CHECK-NEXT: ]]]]> &"]]> # CHECK: # CHECK: