mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 12:17:11 +01:00 
			
		
		
		
	Fixes for XML encoding.
This commit fixes the following scenario: * You have a test that compares strings with embedded control characters. * The test fails. * You are using JUnit tests within TeamCity. Before this commit, the JUnit report watcher fails on parsing the XML for two reasons: the control characters are missing a semicolon at the end, and the XML document doesn't specify that it is XML 1.1. XML 1.0 --- what we get if we don't specify an XML version --- doesn't support embedding control characters --- see http://stackoverflow.com/questions/404107/why-are-control-characters-illegal-in-xml for all of the gory details. This is based on PR #588 by @mrpi
This commit is contained in:
		| @@ -406,27 +406,27 @@ TEST_CASE( "Tabs and newlines show in output", "[.][whitespace][failing]" ) { | ||||
|  | ||||
|  | ||||
| TEST_CASE( "toString on const wchar_t const pointer returns the string contents", "[toString]" ) { | ||||
| 	const wchar_t * const s = L"wide load"; | ||||
| 	std::string result = Catch::toString( s ); | ||||
| 	CHECK( result == "\"wide load\"" ); | ||||
|         const wchar_t * const s = L"wide load"; | ||||
|         std::string result = Catch::toString( s ); | ||||
|         CHECK( result == "\"wide load\"" ); | ||||
| } | ||||
|  | ||||
| TEST_CASE( "toString on const wchar_t pointer returns the string contents", "[toString]" ) { | ||||
| 	const wchar_t * s = L"wide load"; | ||||
| 	std::string result = Catch::toString( s ); | ||||
| 	CHECK( result == "\"wide load\"" ); | ||||
|         const wchar_t * s = L"wide load"; | ||||
|         std::string result = Catch::toString( s ); | ||||
|         CHECK( result == "\"wide load\"" ); | ||||
| } | ||||
|  | ||||
| TEST_CASE( "toString on wchar_t const pointer returns the string contents", "[toString]" ) { | ||||
| 	wchar_t * const s = const_cast<wchar_t* const>( L"wide load" ); | ||||
| 	std::string result = Catch::toString( s ); | ||||
| 	CHECK( result == "\"wide load\"" ); | ||||
|         wchar_t * const s = const_cast<wchar_t* const>( L"wide load" ); | ||||
|         std::string result = Catch::toString( s ); | ||||
|         CHECK( result == "\"wide load\"" ); | ||||
| } | ||||
|  | ||||
| TEST_CASE( "toString on wchar_t returns the string contents", "[toString]" ) { | ||||
| 	wchar_t * s = const_cast<wchar_t*>( L"wide load" ); | ||||
| 	std::string result = Catch::toString( s ); | ||||
| 	CHECK( result == "\"wide load\"" ); | ||||
|         wchar_t * s = const_cast<wchar_t*>( L"wide load" ); | ||||
|         std::string result = Catch::toString( s ); | ||||
|         CHECK( result == "\"wide load\"" ); | ||||
| } | ||||
|  | ||||
| inline std::string encode( std::string const& str, Catch::XmlEncode::ForWhat forWhat = Catch::XmlEncode::ForTextNodes ) { | ||||
| @@ -458,10 +458,10 @@ TEST_CASE( "XmlEncode" ) { | ||||
|         REQUIRE( encode( stringWithQuotes, Catch::XmlEncode::ForAttributes ) == "don't "quote" me on that" ); | ||||
|     } | ||||
|     SECTION( "string with control char (1)" ) { | ||||
|         REQUIRE( encode( "[\x01]" ) == "[]" ); | ||||
|         REQUIRE( encode( "[\x01]" ) == "[]" ); | ||||
|     } | ||||
|     SECTION( "string with control char (x7F)" ) { | ||||
|         REQUIRE( encode( "[\x7F]" ) == "[]" ); | ||||
|         REQUIRE( encode( "[\x7F]" ) == "[]" ); | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Robert A Zeh
					Robert A Zeh