for (std::string::const_iterator x= arg.begin(), end= arg.end(); x != end; ++x)
{
unsigned char c= *x;
- if (' ' <= c and c <= '~' and c != '\\' and c != '"' and c != '>' and c != '<')
+ if (c == '&')
{
- escaped_string+= c;
+ escaped_string+= "&";
}
else if (c == '>')
{
- escaped_string+= '&';
- escaped_string+= 'g';
- escaped_string+= 't';
- escaped_string+= ';';
+ escaped_string+= ">";
}
else if (c == '<')
{
- escaped_string+= '&';
- escaped_string+= 'l';
- escaped_string+= 't';
- escaped_string+= ';';
+ escaped_string+= "<";
+ }
+ else if (c == '\'')
+ {
+ escaped_string+= "'"; break;
+ }
+ else if (c == '"')
+ {
+ escaped_string+= """;
+ }
+ else if (c == ' ')
+ {
+ escaped_string+= ' ';
+ }
+ else if (isalnum(c))
+ {
+ escaped_string+= c;
}
else
{
- escaped_string+= '\\';
- switch (c) {
- case '"': escaped_string+= '"'; break;
- case '\\': escaped_string+= '\\'; break;
- case '\t': escaped_string+='t'; break;
- case '\r': escaped_string+='r'; break;
- case '\n': escaped_string+='n'; break;
- default:
- char const* const hexdig= "0123456789ABCDEF";
- escaped_string+= 'x';
- escaped_string+= hexdig[c >> 4];
- escaped_string+= hexdig[c & 0xF];
- }
+ char const* const hexdig= "0123456789ABCDEF";
+ escaped_string+= "&#x";
+ escaped_string+= hexdig[c >> 4];
+ escaped_string+= hexdig[c & 0xF];
+ escaped_string+= ';';
}
}
escaped_string+= '"';
{
output << "\t<testsuite name="
<< escape4XML((*framework_iter)->name(), escaped_string)
- << " classname=\"\" package=\"\">"
- << std::endl;
+#if 0
+ << " classname=\"\" package=\"\""
+#endif
+ << ">" << std::endl;
for (TestCases::iterator case_iter= (*framework_iter)->formatter()->testcases().begin();
case_iter != (*framework_iter)->formatter()->testcases().end();
<< escape4XML((*case_iter)->name(), escaped_string)
<< " time=\""
<< (*case_iter)->timer().elapsed_milliseconds()
- << "\">"
- << std::endl;
+ << "\"";
switch ((*case_iter)->result())
{
case TEST_SKIPPED:
+ output << ">" << std::endl;
output << "\t\t <skipped/>" << std::endl;
+ output << "\t\t</testcase>" << std::endl;
break;
case TEST_FAILURE:
+ output << ">" << std::endl;
output << "\t\t <failure message=\"\" type=\"\"/>"<< std::endl;
+ output << "\t\t</testcase>" << std::endl;
break;
case TEST_SUCCESS:
+ output << "/>" << std::endl;
break;
}
- output << "\t\t</testcase>" << std::endl;
}
output << "\t</testsuite>" << std::endl;
}