From 1d358ff5bb59f56ab19aa31d6afcf82c46b7c7bc Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Wed, 6 Mar 2019 15:06:49 -0800 Subject: Fix aapt2 whitespace diffs from aapt(1) CDATA blocks were being processed differently in aapt2 so this change fixes aapt2 to not treat cdata blocks differently and still trime whitespace. Also, aapt did not process escapes when compiling xml files. This change removes over-processing of xml text nodes. All test strings are what aapt(1) would output. Test: aapt2_tests Bug: 124470332 Change-Id: I90ee0c1e5e9208f8a5c60cee93e3ba02712c9b2c --- tools/aapt2/ResourceParser_test.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'tools/aapt2/ResourceParser_test.cpp') diff --git a/tools/aapt2/ResourceParser_test.cpp b/tools/aapt2/ResourceParser_test.cpp index 25b76b0c1fa0..251ca0c9256e 100644 --- a/tools/aapt2/ResourceParser_test.cpp +++ b/tools/aapt2/ResourceParser_test.cpp @@ -1195,27 +1195,26 @@ TEST_F(ResourceParserTest, ParseIdItem) { } TEST_F(ResourceParserTest, ParseCData) { - std::string input = R"( - )"; - + // Double quotes should still change the state of whitespace processing + std::string input = R"(Hello' ]]> World)"; ASSERT_TRUE(TestParse(input)); - String* output = test::GetValue(&table_, "string/foo"); + auto output = test::GetValue(&table_, "string/foo"); ASSERT_THAT(output, NotNull()); - EXPECT_THAT(*output, StrValueEq("some text and ' apostrophe")); + EXPECT_THAT(*output, StrValueEq(std::string("Hello ' World").data())); - // Double quotes should not change the state of whitespace processing - input = R"(Hello' ]]> World)"; + input = R"()"; ASSERT_TRUE(TestParse(input)); output = test::GetValue(&table_, "string/foo2"); ASSERT_THAT(output, NotNull()); - EXPECT_THAT(*output, StrValueEq(std::string("Hello \"' World").data())); + EXPECT_THAT(*output, StrValueEq(std::string("Hello World").data())); - // Cdata blocks should not have their whitespace trimmed + // Cdata blocks should have their whitespace trimmed input = R"( )"; ASSERT_TRUE(TestParse(input)); output = test::GetValue(&table_, "string/foo3"); ASSERT_THAT(output, NotNull()); - EXPECT_THAT(*output, StrValueEq(std::string(" text ").data())); + EXPECT_THAT(*output, StrValueEq(std::string("text").data())); input = R"( )"; ASSERT_TRUE(TestParse(input)); @@ -1227,7 +1226,11 @@ TEST_F(ResourceParserTest, ParseCData) { ASSERT_TRUE(TestParse(input)); output = test::GetValue(&table_, "string/foo5"); ASSERT_THAT(output, NotNull()); - EXPECT_THAT(*output, StrValueEq(std::string(" ").data())); + EXPECT_THAT(*output, StrValueEq(std::string("").data())); + + // Single quotes must still be escaped + input = R"()"; + ASSERT_FALSE(TestParse(input)); } } // namespace aapt -- cgit v1.2.3