[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] Handle special characters in Junit report

From: Branko ─îibej <brane_at_xbc.nu>
Date: Fri, 04 Dec 2009 10:37:41 +0100

Bhuvaneswaran A wrote:
> The failure message for few tests contain special characters, ex:
> prop_tests.py. As a result, it creates an invalid xml file and not being
> displayed in Hudson.
>
> This commit fixes this issue, also tracked in issue 3541. With this fix,
> the test results are displayed in Hudson, especially the results
> specific to 1.6.x solaris build.
> http://subversion.tigris.org/issues/show_bug.cgi?id=3541
>
> Index: tools/dev/gen_junit_report.py
> =======================================
> --- tools/dev/gen_junit_report.py (revision 886204)
> +++ tools/dev/gen_junit_report.py (working copy)
> @@ -46,6 +46,16 @@
> data = data.replace(char, encode[char])
> return data
> +def remove_special_characters(data):
> + """remove special characters in test failure reasons"""
> + if not data:
> + return data
> + chars_table = "".join([chr(n) for n in xrange(256)])
> + # remove all special characters upto ascii value 31, except line
> feed (10)
> + # and carriage return (13)
> + chars_to_remove = chars_table[0:9] + chars_table[11:12] +
> chars_table[14:31]
> + return data.translate(chars_table, chars_to_remove)

You want to rebuild the table every single time? Be serious.
Also, wouldn't it be more proper to find out why the tests put control
characters in the failure description than to just blindly throw them away?

> +
> def start_junit():
> """define the beginning of xml document"""
> head = """<?xml version="1.0" encoding="UTF-8"?>"""
> @@ -72,6 +82,7 @@
> """mark the test case as FAILED"""
> casename = xml_encode(casename)
> sub_test_name = test_name.replace('.', '-')
> + reason = remove_special_characters(reason)
> case = """<testcase time="ELAPSED_CASE_%s" name="%s" classname="%s">
> <failure type="Failed"><![CDATA[%s]]></failure>
> </testcase>""" % (test_name, casename, sub_test_name, reason)

Oh yeah. I'm going to write a test that fails and the reason will be
"]]>", how would you like that? :)

-- Brane
Received on 2009-12-04 10:38:18 CET

This is an archived mail posted to the Subversion Dev mailing list.