Expose flags for collapse resource name to 'convert' command.
To achieve this ParseResourceConfig is extracted to Utils.cpp and tests
are moved from Optimize_test.cpp to Util_test.cpp.
Bug: b/249793372
Test: Util_test, Convert_test
Change-Id: I5a0458e3834d5ea62c96013abc14527285e895e0
diff --git a/tools/aapt2/cmd/Util_test.cpp b/tools/aapt2/cmd/Util_test.cpp
index 91accfe..28a6de8 100644
--- a/tools/aapt2/cmd/Util_test.cpp
+++ b/tools/aapt2/cmd/Util_test.cpp
@@ -25,6 +25,7 @@
#include "util/Files.h"
using ::android::ConfigDescription;
+using testing::UnorderedElementsAre;
namespace aapt {
@@ -411,4 +412,61 @@
EXPECT_FALSE(std::regex_search("file.koncowka", expression));
}
+TEST(UtilTest, ParseConfigWithDirectives) {
+ const std::string& content = R"(
+bool/remove_me#remove
+bool/keep_name#no_collapse
+string/foo#no_obfuscate
+dimen/bar#no_obfuscate
+)";
+ aapt::test::Context context;
+ std::unordered_set<ResourceName> resource_exclusion;
+ std::set<ResourceName> name_collapse_exemptions;
+
+ EXPECT_TRUE(ParseResourceConfig(content, &context, resource_exclusion, name_collapse_exemptions));
+
+ EXPECT_THAT(name_collapse_exemptions,
+ UnorderedElementsAre(ResourceName({}, ResourceType::kString, "foo"),
+ ResourceName({}, ResourceType::kDimen, "bar"),
+ ResourceName({}, ResourceType::kBool, "keep_name")));
+ EXPECT_THAT(resource_exclusion,
+ UnorderedElementsAre(ResourceName({}, ResourceType::kBool, "remove_me")));
+}
+
+TEST(UtilTest, ParseConfigResourceWithPackage) {
+ const std::string& content = R"(
+package:bool/remove_me#remove
+)";
+ aapt::test::Context context;
+ std::unordered_set<ResourceName> resource_exclusion;
+ std::set<ResourceName> name_collapse_exemptions;
+
+ EXPECT_FALSE(
+ ParseResourceConfig(content, &context, resource_exclusion, name_collapse_exemptions));
+}
+
+TEST(UtilTest, ParseConfigInvalidName) {
+ const std::string& content = R"(
+package:bool/1231#remove
+)";
+ aapt::test::Context context;
+ std::unordered_set<ResourceName> resource_exclusion;
+ std::set<ResourceName> name_collapse_exemptions;
+
+ EXPECT_FALSE(
+ ParseResourceConfig(content, &context, resource_exclusion, name_collapse_exemptions));
+}
+
+TEST(UtilTest, ParseConfigNoHash) {
+ const std::string& content = R"(
+package:bool/my_bool
+)";
+ aapt::test::Context context;
+ std::unordered_set<ResourceName> resource_exclusion;
+ std::set<ResourceName> name_collapse_exemptions;
+
+ EXPECT_FALSE(
+ ParseResourceConfig(content, &context, resource_exclusion, name_collapse_exemptions));
+}
+
} // namespace aapt