* [PATCH] report: encode XML Character Entities in xUnit report
@ 2017-09-30 3:46 Theodore Ts'o
2017-09-30 3:58 ` Theodore Ts'o
0 siblings, 1 reply; 2+ messages in thread
From: Theodore Ts'o @ 2017-09-30 3:46 UTC (permalink / raw)
To: fstests; +Cc: Theodore Ts'o, Dmitry Monakhov
Since the xUnit report is an XML document, special XML characters such
as '<', '>', '&', etc. have to be encoded as "<", ">", etc.
Otherwise programs parsing something like this:
<testcase classname="xfstests.global" name="generic/450" time="0">
<skipped message="Only test on sector size < half of block size" />
</testcase>
Will get choke the unescaped '<' character in the skipped message.
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: Dmitry Monakhov <dmonakhov@openvz.org>
---
common/report | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/common/report b/common/report
index 15a63db8..bb689836 100644
--- a/common/report
+++ b/common/report
@@ -25,6 +25,15 @@ REPORT_ENV_LIST="$REPORT_ENV_LIST OVL_UPPER"
REPORT_ENV_LIST="$REPORT_ENV_LIST OVL_LOWER"
REPORT_ENV_LIST="$REPORT_ENV_LIST OVL_WORK"
+encode_xml()
+{
+ sed -e 's/&/\&/g' \
+ -e 's/>/\>/g' \
+ -e 's/</\</g' \
+ -e "s/'/\'/g" \
+ -e 's/"/\"/g'
+}
+
#
# Xunit format report functions
_xunit_add_property()
@@ -86,7 +95,7 @@ _xunit_make_testcase_report()
;;
"notrun")
if [ -f $seqres.notrun ]; then
- local msg=`cat $seqres.notrun`
+ local msg=`cat $seqres.notrun | encode_xml`
echo -e "\t\t<skipped message=\"$msg\" />" >> $report
else
echo -e "\t\t<skipped/>" >> $report
@@ -103,20 +112,20 @@ _xunit_make_testcase_report()
if [ -s $seqres.full ]; then
echo -e "\t\t<system-out>" >> $report
printf '<![CDATA[\n' >>$report
- cat $seqres.full | tr -dc '[:print:][:space:]' >>$report
+ cat $seqres.full | tr -dc '[:print:][:space:]' | encode_xml >>$report
printf ']]>\n' >>$report
echo -e "\t\t</system-out>" >> $report
fi
if [ -f $seqres.dmesg ]; then
echo -e "\t\t<system-err>" >> $report
printf '<![CDATA[\n' >>$report
- cat $seqres.dmesg | tr -dc '[:print:][:space:]' >>$report
+ cat $seqres.dmesg | tr -dc '[:print:][:space:]' | encode_xml >>$report
printf ']]>\n' >>$report
echo -e "\t\t</system-err>" >> $report
elif [ -s $seqres.out.bad ]; then
echo -e "\t\t<system-err>" >> $report
printf '<![CDATA[\n' >>$report
- $diff $seq.out $seqres.out.bad >>$report
+ $diff $seq.out $seqres.out.bad | encode_xml >>$report
printf ']]>\n' >>$report
echo -e "\t\t</system-err>" >> $report
fi
--
2.11.0.rc0.7.gbe5a750
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] report: encode XML Character Entities in xUnit report
2017-09-30 3:46 [PATCH] report: encode XML Character Entities in xUnit report Theodore Ts'o
@ 2017-09-30 3:58 ` Theodore Ts'o
0 siblings, 0 replies; 2+ messages in thread
From: Theodore Ts'o @ 2017-09-30 3:58 UTC (permalink / raw)
To: fstests; +Cc: Dmitry Monakhov
On Fri, Sep 29, 2017 at 11:46:21PM -0400, Theodore Ts'o wrote:
> Since the xUnit report is an XML document, special XML characters such
> as '<', '>', '&', etc. have to be encoded as "<", ">", etc.
> Otherwise programs parsing something like this:
>
> <testcase classname="xfstests.global" name="generic/450" time="0">
> <skipped message="Only test on sector size < half of block size" />
> </testcase>
>
> Will get choke the unescaped '<' character in the skipped message.
The last line should be replaced by:
... will choke on the unescaped '<' character in the 'messages'
attribute of the 'skipped' element.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-09-30 3:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-30 3:46 [PATCH] report: encode XML Character Entities in xUnit report Theodore Ts'o
2017-09-30 3:58 ` Theodore Ts'o
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.