summaryrefslogtreecommitdiff
path: root/tools/aapt2/java/ProguardRules_test.cpp
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2017-11-09 11:29:39 -0800
committerAdam Lesinski <adamlesinski@google.com>2017-11-16 12:06:17 -0800
commita693c4a32ebed4e96dcc1cf6a706e8ebbb004db2 (patch)
tree902f4d5abd493ccb8087b941676e2562c8db128b /tools/aapt2/java/ProguardRules_test.cpp
parent60303333dc8ad61e640992cee2b5c601be73faf8 (diff)
AAPT2: Move all file output to FileOutputStream
FileOutputStream is safe to use on Windows, as it opens files using our compatibility API. Bug: 68262818 Test: make aapt2_tests Change-Id: Ib0b27e93edd609b49b1327db7d9867a002198ebb
Diffstat (limited to 'tools/aapt2/java/ProguardRules_test.cpp')
-rw-r--r--tools/aapt2/java/ProguardRules_test.cpp49
1 files changed, 22 insertions, 27 deletions
diff --git a/tools/aapt2/java/ProguardRules_test.cpp b/tools/aapt2/java/ProguardRules_test.cpp
index 802c56a47de4..37d1a5fbaeb8 100644
--- a/tools/aapt2/java/ProguardRules_test.cpp
+++ b/tools/aapt2/java/ProguardRules_test.cpp
@@ -17,13 +17,23 @@
#include "java/ProguardRules.h"
#include "link/Linkers.h"
+#include "io/StringStream.h"
#include "test/Test.h"
+using ::aapt::io::StringOutputStream;
using ::testing::HasSubstr;
using ::testing::Not;
namespace aapt {
+std::string GetKeepSetString(const proguard::KeepSet& set) {
+ std::string out;
+ StringOutputStream sout(&out);
+ proguard::WriteKeepSet(set, &sout);
+ sout.Flush();
+ return out;
+}
+
TEST(ProguardRulesTest, FragmentNameRuleIsEmitted) {
std::unique_ptr<IAaptContext> context = test::ContextBuilder().Build();
std::unique_ptr<xml::XmlResource> layout = test::BuildXmlDom(R"(
@@ -34,10 +44,8 @@ TEST(ProguardRulesTest, FragmentNameRuleIsEmitted) {
proguard::KeepSet set;
ASSERT_TRUE(proguard::CollectProguardRules(layout.get(), &set));
- std::stringstream out;
- ASSERT_TRUE(proguard::WriteKeepSet(&out, set));
+ std::string actual = GetKeepSetString(set);
- std::string actual = out.str();
EXPECT_THAT(actual, HasSubstr("com.foo.Bar"));
}
@@ -50,10 +58,8 @@ TEST(ProguardRulesTest, FragmentClassRuleIsEmitted) {
proguard::KeepSet set;
ASSERT_TRUE(proguard::CollectProguardRules(layout.get(), &set));
- std::stringstream out;
- ASSERT_TRUE(proguard::WriteKeepSet(&out, set));
+ std::string actual = GetKeepSetString(set);
- std::string actual = out.str();
EXPECT_THAT(actual, HasSubstr("com.foo.Bar"));
}
@@ -68,10 +74,8 @@ TEST(ProguardRulesTest, FragmentNameAndClassRulesAreEmitted) {
proguard::KeepSet set;
ASSERT_TRUE(proguard::CollectProguardRules(layout.get(), &set));
- std::stringstream out;
- ASSERT_TRUE(proguard::WriteKeepSet(&out, set));
+ std::string actual = GetKeepSetString(set);
- std::string actual = out.str();
EXPECT_THAT(actual, HasSubstr("com.foo.Bar"));
EXPECT_THAT(actual, HasSubstr("com.foo.Baz"));
}
@@ -87,10 +91,8 @@ TEST(ProguardRulesTest, CustomViewRulesAreEmitted) {
proguard::KeepSet set;
ASSERT_TRUE(proguard::CollectProguardRules(layout.get(), &set));
- std::stringstream out;
- ASSERT_TRUE(proguard::WriteKeepSet(&out, set));
+ std::string actual = GetKeepSetString(set);
- std::string actual = out.str();
EXPECT_THAT(actual, HasSubstr("com.foo.Bar"));
}
@@ -126,11 +128,10 @@ TEST(ProguardRulesTest, IncludedLayoutRulesAreConditional) {
ASSERT_TRUE(proguard::CollectProguardRules(bar_layout.get(), &set));
ASSERT_TRUE(proguard::CollectProguardRules(foo_layout.get(), &set));
- std::stringstream out;
- ASSERT_TRUE(proguard::WriteKeepSet(&out, set));
+ std::string actual = GetKeepSetString(set);
- std::string actual = out.str();
EXPECT_THAT(actual, HasSubstr("-if class **.R$layout"));
+ EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Bar { <init>(...); }"));
EXPECT_THAT(actual, HasSubstr("int foo"));
EXPECT_THAT(actual, HasSubstr("int bar"));
EXPECT_THAT(actual, HasSubstr("com.foo.Bar"));
@@ -148,10 +149,9 @@ TEST(ProguardRulesTest, AliasedLayoutRulesAreConditional) {
set.AddReference({test::ParseNameOrDie("layout/bar"), {}}, layout->file.name);
ASSERT_TRUE(proguard::CollectProguardRules(layout.get(), &set));
- std::stringstream out;
- ASSERT_TRUE(proguard::WriteKeepSet(&out, set));
+ std::string actual = GetKeepSetString(set);
- std::string actual = out.str();
+ EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Bar { <init>(...); }"));
EXPECT_THAT(actual, HasSubstr("-if class **.R$layout"));
EXPECT_THAT(actual, HasSubstr("int foo"));
EXPECT_THAT(actual, HasSubstr("int bar"));
@@ -170,11 +170,10 @@ TEST(ProguardRulesTest, NonLayoutReferencesAreUnconditional) {
set.AddReference({test::ParseNameOrDie("style/MyStyle"), {}}, layout->file.name);
ASSERT_TRUE(proguard::CollectProguardRules(layout.get(), &set));
- std::stringstream out;
- ASSERT_TRUE(proguard::WriteKeepSet(&out, set));
+ std::string actual = GetKeepSetString(set);
- std::string actual = out.str();
EXPECT_THAT(actual, Not(HasSubstr("-if")));
+ EXPECT_THAT(actual, HasSubstr("-keep class com.foo.Bar { <init>(...); }"));
}
TEST(ProguardRulesTest, ViewOnClickRuleIsEmitted) {
@@ -187,10 +186,8 @@ TEST(ProguardRulesTest, ViewOnClickRuleIsEmitted) {
proguard::KeepSet set;
ASSERT_TRUE(proguard::CollectProguardRules(layout.get(), &set));
- std::stringstream out;
- ASSERT_TRUE(proguard::WriteKeepSet(&out, set));
+ std::string actual = GetKeepSetString(set);
- std::string actual = out.str();
EXPECT_THAT(actual, HasSubstr("bar_method"));
}
@@ -208,10 +205,8 @@ TEST(ProguardRulesTest, MenuRulesAreEmitted) {
proguard::KeepSet set;
ASSERT_TRUE(proguard::CollectProguardRules(menu.get(), &set));
- std::stringstream out;
- ASSERT_TRUE(proguard::WriteKeepSet(&out, set));
+ std::string actual = GetKeepSetString(set);
- std::string actual = out.str();
EXPECT_THAT(actual, HasSubstr("on_click"));
EXPECT_THAT(actual, HasSubstr("com.foo.Bar"));
EXPECT_THAT(actual, HasSubstr("com.foo.Baz"));