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

Commit 69e5e282 authored by Izabela Orlowska's avatar Izabela Orlowska Committed by Android (Google) Code Review
Browse files

Merge "Use case-sensitive regular expressions in --no-compress-regex"

parents 43429e77 5b89b2d3
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -264,8 +264,8 @@ class LinkCommand : public Command {
        &options_.keep_raw_values);
    AddOptionalFlag("--no-compress-regex",
        "Do not compress extensions matching the regular expression. Remember to\n"
            " use the '$' symbol for end of line. Uses a non case-sensitive\n"
            " ECMAScript regular expression grammar.",
            "use the '$' symbol for end of line. Uses a case-sensitive ECMAScript"
            "regular expression grammar.",
        &no_compress_regex);
    AddOptionalSwitch("--warn-manifest-validation",
        "Treat manifest validation errors as warnings.",
+2 −2
Original line number Diff line number Diff line
@@ -436,9 +436,9 @@ void SetLongVersionCode(xml::Element* manifest, uint64_t version) {
}

std::regex GetRegularExpression(const std::string &input) {
  // Standard ECMAScript grammar plus case insensitive.
  // Standard ECMAScript grammar.
  std::regex case_insensitive(
      input, std::regex_constants::icase | std::regex_constants::ECMAScript);
      input, std::regex_constants::ECMAScript);
  return case_insensitive;
}

+22 −3
Original line number Diff line number Diff line
@@ -383,13 +383,32 @@ TEST (UtilTest, AdjustSplitConstraintsForMinSdk) {
  EXPECT_NE(*adjusted_contraints[1].configs.begin(), ConfigDescription::DefaultConfig());
}

// TODO(127793905): Enable test
/*TEST(UtilTest, RegularExperssions) {
TEST (UtilTest, RegularExperssionsSimple) {
  std::string valid(".bc$");
  std::regex expression = GetRegularExpression(valid);
  EXPECT_TRUE(std::regex_search("file.abc", expression));
  EXPECT_TRUE(std::regex_search("file.123bc", expression));
  EXPECT_FALSE(std::regex_search("abc.zip", expression));
}*/
}

TEST (UtilTest, RegularExpressionComplex) {
  std::string valid("\\.(d|D)(e|E)(x|X)$");
  std::regex expression = GetRegularExpression(valid);
  EXPECT_TRUE(std::regex_search("file.dex", expression));
  EXPECT_TRUE(std::regex_search("file.DEX", expression));
  EXPECT_TRUE(std::regex_search("file.dEx", expression));
  EXPECT_FALSE(std::regex_search("file.dexx", expression));
  EXPECT_FALSE(std::regex_search("dex.file", expression));
  EXPECT_FALSE(std::regex_search("file.adex", expression));
}

TEST (UtilTest, RegularExpressionNonEnglish) {
  std::string valid("\\.(k|K)(o|O)(ń|Ń)(c|C)(ó|Ó)(w|W)(k|K)(a|A)$");
  std::regex expression = GetRegularExpression(valid);
  EXPECT_TRUE(std::regex_search("file.końcówka", expression));
  EXPECT_TRUE(std::regex_search("file.KOŃCÓWKA", expression));
  EXPECT_TRUE(std::regex_search("file.kOńcÓwkA", expression));
  EXPECT_FALSE(std::regex_search("file.koncowka", expression));
}

}  // namespace aapt