Loading tools/aapt2/util/Files.cpp +12 −6 Original line number Diff line number Diff line Loading @@ -251,10 +251,13 @@ bool AppendArgsFromFile(StringPiece path, std::vector<std::string>* out_arglist, return false; } for (StringPiece line : util::Tokenize(contents, ' ')) { for (StringPiece line : util::Tokenize(contents, '\n')) { line = util::TrimWhitespace(line); if (!line.empty()) { out_arglist->emplace_back(line); for (StringPiece arg : util::Tokenize(line, ' ')) { arg = util::TrimWhitespace(arg); if (!arg.empty()) { out_arglist->emplace_back(arg); } } } return true; Loading @@ -270,10 +273,13 @@ bool AppendSetArgsFromFile(StringPiece path, std::unordered_set<std::string>* ou return false; } for (StringPiece line : util::Tokenize(contents, ' ')) { for (StringPiece line : util::Tokenize(contents, '\n')) { line = util::TrimWhitespace(line); if (!line.empty()) { out_argset->emplace(line); for (StringPiece arg : util::Tokenize(line, ' ')) { arg = util::TrimWhitespace(arg); if (!arg.empty()) { out_argset->emplace(arg); } } } return true; Loading tools/aapt2/util/Files_test.cpp +42 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ using ::android::base::StringPrintf; using ::testing::ElementsAre; using ::testing::UnorderedElementsAre; namespace aapt { namespace file { Loading @@ -34,9 +37,11 @@ constexpr const char sTestDirSep = '\\'; constexpr const char sTestDirSep = '/'; #endif class FilesTest : public ::testing::Test { class FilesTest : public TestDirectoryFixture { public: void SetUp() override { TestDirectoryFixture::SetUp(); std::stringstream builder; builder << "hello" << sDirSep << "there"; expected_path_ = builder.str(); Loading Loading @@ -66,6 +71,42 @@ TEST_F(FilesTest, AppendPathWithLeadingOrTrailingSeparators) { EXPECT_EQ(expected_path_, base); } TEST_F(FilesTest, AppendArgsFromFile) { const std::string args_file = GetTestPath("args.txt"); WriteFile(args_file, " \n" "arg1 arg2 arg3 \n" " arg4 arg5"); std::vector<std::string> args; std::string error; ASSERT_TRUE(AppendArgsFromFile(args_file, &args, &error)); EXPECT_THAT(args, ElementsAre("arg1", "arg2", "arg3", "arg4", "arg5")); } TEST_F(FilesTest, AppendArgsFromFile_InvalidFile) { std::vector<std::string> args; std::string error; ASSERT_FALSE(AppendArgsFromFile(GetTestPath("not_found.txt"), &args, &error)); } TEST_F(FilesTest, AppendSetArgsFromFile) { const std::string args_file = GetTestPath("args.txt"); WriteFile(args_file, " \n" "arg2 arg4 arg1 \n" " arg5 arg3"); std::unordered_set<std::string> args; std::string error; ASSERT_TRUE(AppendSetArgsFromFile(args_file, &args, &error)); EXPECT_THAT(args, UnorderedElementsAre("arg1", "arg2", "arg3", "arg4", "arg5")); } TEST_F(FilesTest, AppendSetArgsFromFile_InvalidFile) { std::unordered_set<std::string> args; std::string error; ASSERT_FALSE(AppendSetArgsFromFile(GetTestPath("not_found.txt"), &args, &error)); } #ifdef _WIN32 TEST_F(FilesTest, WindowsMkdirsLongPath) { // Creating directory paths longer than the Windows maximum path length (260 charatcers) should Loading Loading
tools/aapt2/util/Files.cpp +12 −6 Original line number Diff line number Diff line Loading @@ -251,10 +251,13 @@ bool AppendArgsFromFile(StringPiece path, std::vector<std::string>* out_arglist, return false; } for (StringPiece line : util::Tokenize(contents, ' ')) { for (StringPiece line : util::Tokenize(contents, '\n')) { line = util::TrimWhitespace(line); if (!line.empty()) { out_arglist->emplace_back(line); for (StringPiece arg : util::Tokenize(line, ' ')) { arg = util::TrimWhitespace(arg); if (!arg.empty()) { out_arglist->emplace_back(arg); } } } return true; Loading @@ -270,10 +273,13 @@ bool AppendSetArgsFromFile(StringPiece path, std::unordered_set<std::string>* ou return false; } for (StringPiece line : util::Tokenize(contents, ' ')) { for (StringPiece line : util::Tokenize(contents, '\n')) { line = util::TrimWhitespace(line); if (!line.empty()) { out_argset->emplace(line); for (StringPiece arg : util::Tokenize(line, ' ')) { arg = util::TrimWhitespace(arg); if (!arg.empty()) { out_argset->emplace(arg); } } } return true; Loading
tools/aapt2/util/Files_test.cpp +42 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ using ::android::base::StringPrintf; using ::testing::ElementsAre; using ::testing::UnorderedElementsAre; namespace aapt { namespace file { Loading @@ -34,9 +37,11 @@ constexpr const char sTestDirSep = '\\'; constexpr const char sTestDirSep = '/'; #endif class FilesTest : public ::testing::Test { class FilesTest : public TestDirectoryFixture { public: void SetUp() override { TestDirectoryFixture::SetUp(); std::stringstream builder; builder << "hello" << sDirSep << "there"; expected_path_ = builder.str(); Loading Loading @@ -66,6 +71,42 @@ TEST_F(FilesTest, AppendPathWithLeadingOrTrailingSeparators) { EXPECT_EQ(expected_path_, base); } TEST_F(FilesTest, AppendArgsFromFile) { const std::string args_file = GetTestPath("args.txt"); WriteFile(args_file, " \n" "arg1 arg2 arg3 \n" " arg4 arg5"); std::vector<std::string> args; std::string error; ASSERT_TRUE(AppendArgsFromFile(args_file, &args, &error)); EXPECT_THAT(args, ElementsAre("arg1", "arg2", "arg3", "arg4", "arg5")); } TEST_F(FilesTest, AppendArgsFromFile_InvalidFile) { std::vector<std::string> args; std::string error; ASSERT_FALSE(AppendArgsFromFile(GetTestPath("not_found.txt"), &args, &error)); } TEST_F(FilesTest, AppendSetArgsFromFile) { const std::string args_file = GetTestPath("args.txt"); WriteFile(args_file, " \n" "arg2 arg4 arg1 \n" " arg5 arg3"); std::unordered_set<std::string> args; std::string error; ASSERT_TRUE(AppendSetArgsFromFile(args_file, &args, &error)); EXPECT_THAT(args, UnorderedElementsAre("arg1", "arg2", "arg3", "arg4", "arg5")); } TEST_F(FilesTest, AppendSetArgsFromFile_InvalidFile) { std::unordered_set<std::string> args; std::string error; ASSERT_FALSE(AppendSetArgsFromFile(GetTestPath("not_found.txt"), &args, &error)); } #ifdef _WIN32 TEST_F(FilesTest, WindowsMkdirsLongPath) { // Creating directory paths longer than the Windows maximum path length (260 charatcers) should Loading