Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca05a906 authored by Mark Punzalan's avatar Mark Punzalan Committed by Automerger Merge Worker
Browse files

Merge "[aapt2] Allow multi-line argument files" into main am: 438d2e20

parents 4508732e 438d2e20
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -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;
@@ -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;
+42 −1
Original line number Diff line number Diff line
@@ -25,6 +25,9 @@

using ::android::base::StringPrintf;

using ::testing::ElementsAre;
using ::testing::UnorderedElementsAre;

namespace aapt {
namespace file {

@@ -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();
@@ -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