From 420785e6d0bdecd6849aa9e609e39fb1906a5bc0 Mon Sep 17 00:00:00 2001 From: Jake Wharton Date: Mon, 11 Jun 2018 15:40:48 -0400 Subject: [PATCH] Improve tests for ProGuard rules, add transition tests Test: make aapt2_tests Change-Id: If3300a9f82ad90189b74aab03c0d7f649e74e3f3 --- tools/aapt2/java/ProguardRules_test.cpp | 58 +++++++++++++++++++------ 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/tools/aapt2/java/ProguardRules_test.cpp b/tools/aapt2/java/ProguardRules_test.cpp index bbc6f9f644142..a548f4a144ec5 100644 --- a/tools/aapt2/java/ProguardRules_test.cpp +++ b/tools/aapt2/java/ProguardRules_test.cpp @@ -71,7 +71,7 @@ TEST(ProguardRulesTest, FragmentNameRuleIsEmitted) { std::string actual = GetKeepSetString(set); - EXPECT_THAT(actual, HasSubstr("com.foo.Bar")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Bar { (...); }")); } TEST(ProguardRulesTest, FragmentClassRuleIsEmitted) { @@ -85,7 +85,7 @@ TEST(ProguardRulesTest, FragmentClassRuleIsEmitted) { std::string actual = GetKeepSetString(set); - EXPECT_THAT(actual, HasSubstr("com.foo.Bar")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Bar { (...); }")); } TEST(ProguardRulesTest, FragmentNameAndClassRulesAreEmitted) { @@ -101,8 +101,8 @@ TEST(ProguardRulesTest, FragmentNameAndClassRulesAreEmitted) { std::string actual = GetKeepSetString(set); - EXPECT_THAT(actual, HasSubstr("com.foo.Bar")); - EXPECT_THAT(actual, HasSubstr("com.foo.Baz")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Bar { (...); }")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Baz { (...); }")); } TEST(ProguardRulesTest, NavigationFragmentNameAndClassRulesAreEmitted) { @@ -128,9 +128,9 @@ TEST(ProguardRulesTest, NavigationFragmentNameAndClassRulesAreEmitted) { ASSERT_TRUE(proguard::CollectProguardRules(context.get(), navigation.get(), &set)); std::string actual = GetKeepSetString(set); - EXPECT_THAT(actual, HasSubstr("com.package.Foo")); - EXPECT_THAT(actual, HasSubstr("com.package.Bar")); - EXPECT_THAT(actual, HasSubstr("com.base.Nested")); + EXPECT_THAT(actual, HasSubstr("-keep class com.package.Foo { (...); }")); + EXPECT_THAT(actual, HasSubstr("-keep class com.package.Bar { (...); }")); + EXPECT_THAT(actual, HasSubstr("-keep class com.base.Nested { (...); }")); } TEST(ProguardRulesTest, CustomViewRulesAreEmitted) { @@ -146,7 +146,7 @@ TEST(ProguardRulesTest, CustomViewRulesAreEmitted) { std::string actual = GetKeepSetString(set); - EXPECT_THAT(actual, HasSubstr("com.foo.Bar")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Bar { (...); }")); } TEST(ProguardRulesTest, IncludedLayoutRulesAreConditional) { @@ -187,7 +187,6 @@ TEST(ProguardRulesTest, IncludedLayoutRulesAreConditional) { EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Bar { (...); }")); EXPECT_THAT(actual, HasSubstr("int foo")); EXPECT_THAT(actual, HasSubstr("int bar")); - EXPECT_THAT(actual, HasSubstr("com.foo.Bar")); } TEST(ProguardRulesTest, AliasedLayoutRulesAreConditional) { @@ -208,7 +207,6 @@ TEST(ProguardRulesTest, AliasedLayoutRulesAreConditional) { EXPECT_THAT(actual, HasSubstr("-if class **.R$layout")); EXPECT_THAT(actual, HasSubstr("int foo")); EXPECT_THAT(actual, HasSubstr("int bar")); - EXPECT_THAT(actual, HasSubstr("com.foo.Bar")); } TEST(ProguardRulesTest, NonLayoutReferencesAreUnconditional) { @@ -241,7 +239,7 @@ TEST(ProguardRulesTest, ViewOnClickRuleIsEmitted) { std::string actual = GetKeepSetString(set); - EXPECT_THAT(actual, HasSubstr("bar_method")); + EXPECT_THAT(actual, HasSubstr("-keepclassmembers class * { *** bar_method(...); }")); } TEST(ProguardRulesTest, MenuRulesAreEmitted) { @@ -260,10 +258,42 @@ TEST(ProguardRulesTest, MenuRulesAreEmitted) { std::string actual = GetKeepSetString(set); - EXPECT_THAT(actual, HasSubstr("on_click")); - EXPECT_THAT(actual, HasSubstr("com.foo.Bar")); - EXPECT_THAT(actual, HasSubstr("com.foo.Baz")); + EXPECT_THAT(actual, HasSubstr("-keepclassmembers class * { *** on_click(...); }")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Bar { (...); }")); + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Baz { (...); }")); EXPECT_THAT(actual, Not(HasSubstr("com.foo.Bat"))); } +TEST(ProguardRulesTest, TransitionPathMotionRulesAreEmitted) { + std::unique_ptr context = test::ContextBuilder().Build(); + std::unique_ptr transition = test::BuildXmlDom(R"( + + + )"); + transition->file.name = test::ParseNameOrDie("transition/foo"); + + proguard::KeepSet set; + ASSERT_TRUE(proguard::CollectProguardRules(context.get(), transition.get(), &set)); + + std::string actual = GetKeepSetString(set); + + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Bar { (...); }")); +} + +TEST(ProguardRulesTest, TransitionRulesAreEmitted) { + std::unique_ptr context = test::ContextBuilder().Build(); + std::unique_ptr transitionSet = test::BuildXmlDom(R"( + + + )"); + transitionSet->file.name = test::ParseNameOrDie("transition/foo"); + + proguard::KeepSet set; + ASSERT_TRUE(proguard::CollectProguardRules(context.get(), transitionSet.get(), &set)); + + std::string actual = GetKeepSetString(set); + + EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Bar { (...); }")); +} + } // namespace aapt