AAPT2: Forward @TestApi in resource comments to JavaDoc
Bug: 37894597 Test: make aapt2_tests Change-Id: I357fb84941bfbb3892a8c46feb47f55b865b6649
This commit is contained in:
@@ -22,7 +22,9 @@
|
||||
#include "test/Test.h"
|
||||
#include "util/Util.h"
|
||||
|
||||
using android::StringPiece;
|
||||
using ::android::StringPiece;
|
||||
using ::testing::HasSubstr;
|
||||
using ::testing::Not;
|
||||
|
||||
namespace aapt {
|
||||
|
||||
@@ -52,17 +54,15 @@ TEST(JavaClassGeneratorTest, TransformInvalidJavaIdentifierCharacter) {
|
||||
.AddSimple("android:id/hey-man", ResourceId(0x01020000))
|
||||
.AddValue("android:attr/cool.attr", ResourceId(0x01010000),
|
||||
test::AttributeBuilder(false).Build())
|
||||
.AddValue(
|
||||
"android:styleable/hey.dude", ResourceId(0x01030000),
|
||||
test::StyleableBuilder()
|
||||
.AddItem("android:attr/cool.attr", ResourceId(0x01010000))
|
||||
.Build())
|
||||
.AddValue("android:styleable/hey.dude", ResourceId(0x01030000),
|
||||
test::StyleableBuilder()
|
||||
.AddItem("android:attr/cool.attr", ResourceId(0x01010000))
|
||||
.Build())
|
||||
.Build();
|
||||
|
||||
std::unique_ptr<IAaptContext> context =
|
||||
test::ContextBuilder()
|
||||
.AddSymbolSource(
|
||||
util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.AddSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.SetNameManglerPolicy(NameManglerPolicy{"android"})
|
||||
.Build();
|
||||
JavaClassGenerator generator(context.get(), table.get(), {});
|
||||
@@ -72,14 +72,9 @@ TEST(JavaClassGeneratorTest, TransformInvalidJavaIdentifierCharacter) {
|
||||
|
||||
std::string output = out.str();
|
||||
|
||||
EXPECT_NE(std::string::npos,
|
||||
output.find("public static final int hey_man=0x01020000;"));
|
||||
|
||||
EXPECT_NE(std::string::npos,
|
||||
output.find("public static final int[] hey_dude={"));
|
||||
|
||||
EXPECT_NE(std::string::npos,
|
||||
output.find("public static final int hey_dude_cool_attr=0;"));
|
||||
EXPECT_THAT(output, HasSubstr("public static final int hey_man=0x01020000;"));
|
||||
EXPECT_THAT(output, HasSubstr("public static final int[] hey_dude={"));
|
||||
EXPECT_THAT(output, HasSubstr("public static final int hey_dude_cool_attr=0;"));
|
||||
}
|
||||
|
||||
TEST(JavaClassGeneratorTest, CorrectPackageNameIsUsed) {
|
||||
@@ -92,8 +87,7 @@ TEST(JavaClassGeneratorTest, CorrectPackageNameIsUsed) {
|
||||
|
||||
std::unique_ptr<IAaptContext> context =
|
||||
test::ContextBuilder()
|
||||
.AddSymbolSource(
|
||||
util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.AddSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.SetNameManglerPolicy(NameManglerPolicy{"android"})
|
||||
.Build();
|
||||
JavaClassGenerator generator(context.get(), table.get(), {});
|
||||
@@ -101,11 +95,10 @@ TEST(JavaClassGeneratorTest, CorrectPackageNameIsUsed) {
|
||||
ASSERT_TRUE(generator.Generate("android", "com.android.internal", &out));
|
||||
|
||||
std::string output = out.str();
|
||||
EXPECT_NE(std::string::npos, output.find("package com.android.internal;"));
|
||||
EXPECT_NE(std::string::npos,
|
||||
output.find("public static final int one=0x01020000;"));
|
||||
EXPECT_EQ(std::string::npos, output.find("two"));
|
||||
EXPECT_EQ(std::string::npos, output.find("com_foo$two"));
|
||||
EXPECT_THAT(output, HasSubstr("package com.android.internal;"));
|
||||
EXPECT_THAT(output, HasSubstr("public static final int one=0x01020000;"));
|
||||
EXPECT_THAT(output, Not(HasSubstr("two")));
|
||||
EXPECT_THAT(output, Not(HasSubstr("com_foo$two")));
|
||||
}
|
||||
|
||||
TEST(JavaClassGeneratorTest, AttrPrivateIsWrittenAsAttr) {
|
||||
@@ -118,8 +111,7 @@ TEST(JavaClassGeneratorTest, AttrPrivateIsWrittenAsAttr) {
|
||||
|
||||
std::unique_ptr<IAaptContext> context =
|
||||
test::ContextBuilder()
|
||||
.AddSymbolSource(
|
||||
util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.AddSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.SetNameManglerPolicy(NameManglerPolicy{"android"})
|
||||
.Build();
|
||||
JavaClassGenerator generator(context.get(), table.get(), {});
|
||||
@@ -127,9 +119,8 @@ TEST(JavaClassGeneratorTest, AttrPrivateIsWrittenAsAttr) {
|
||||
ASSERT_TRUE(generator.Generate("android", &out));
|
||||
|
||||
std::string output = out.str();
|
||||
EXPECT_NE(std::string::npos, output.find("public static final class attr"));
|
||||
EXPECT_EQ(std::string::npos,
|
||||
output.find("public static final class ^attr-private"));
|
||||
EXPECT_THAT(output, HasSubstr("public static final class attr"));
|
||||
EXPECT_THAT(output, Not(HasSubstr("public static final class ^attr-private")));
|
||||
}
|
||||
|
||||
TEST(JavaClassGeneratorTest, OnlyWritePublicResources) {
|
||||
@@ -140,16 +131,13 @@ TEST(JavaClassGeneratorTest, OnlyWritePublicResources) {
|
||||
.AddSimple("android:id/one", ResourceId(0x01020000))
|
||||
.AddSimple("android:id/two", ResourceId(0x01020001))
|
||||
.AddSimple("android:id/three", ResourceId(0x01020002))
|
||||
.SetSymbolState("android:id/one", ResourceId(0x01020000),
|
||||
SymbolState::kPublic)
|
||||
.SetSymbolState("android:id/two", ResourceId(0x01020001),
|
||||
SymbolState::kPrivate)
|
||||
.SetSymbolState("android:id/one", ResourceId(0x01020000), SymbolState::kPublic)
|
||||
.SetSymbolState("android:id/two", ResourceId(0x01020001), SymbolState::kPrivate)
|
||||
.Build();
|
||||
|
||||
std::unique_ptr<IAaptContext> context =
|
||||
test::ContextBuilder()
|
||||
.AddSymbolSource(
|
||||
util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.AddSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.SetNameManglerPolicy(NameManglerPolicy{"android"})
|
||||
.Build();
|
||||
|
||||
@@ -160,10 +148,9 @@ TEST(JavaClassGeneratorTest, OnlyWritePublicResources) {
|
||||
std::stringstream out;
|
||||
ASSERT_TRUE(generator.Generate("android", &out));
|
||||
std::string output = out.str();
|
||||
EXPECT_NE(std::string::npos,
|
||||
output.find("public static final int one=0x01020000;"));
|
||||
EXPECT_EQ(std::string::npos, output.find("two"));
|
||||
EXPECT_EQ(std::string::npos, output.find("three"));
|
||||
EXPECT_THAT(output, HasSubstr("public static final int one=0x01020000;"));
|
||||
EXPECT_THAT(output, Not(HasSubstr("two")));
|
||||
EXPECT_THAT(output, Not(HasSubstr("three")));
|
||||
}
|
||||
|
||||
options.types = JavaClassGeneratorOptions::SymbolTypes::kPublicPrivate;
|
||||
@@ -172,11 +159,9 @@ TEST(JavaClassGeneratorTest, OnlyWritePublicResources) {
|
||||
std::stringstream out;
|
||||
ASSERT_TRUE(generator.Generate("android", &out));
|
||||
std::string output = out.str();
|
||||
EXPECT_NE(std::string::npos,
|
||||
output.find("public static final int one=0x01020000;"));
|
||||
EXPECT_NE(std::string::npos,
|
||||
output.find("public static final int two=0x01020001;"));
|
||||
EXPECT_EQ(std::string::npos, output.find("three"));
|
||||
EXPECT_THAT(output, HasSubstr("public static final int one=0x01020000;"));
|
||||
EXPECT_THAT(output, HasSubstr("public static final int two=0x01020001;"));
|
||||
EXPECT_THAT(output, Not(HasSubstr("three")));
|
||||
}
|
||||
|
||||
options.types = JavaClassGeneratorOptions::SymbolTypes::kAll;
|
||||
@@ -185,12 +170,9 @@ TEST(JavaClassGeneratorTest, OnlyWritePublicResources) {
|
||||
std::stringstream out;
|
||||
ASSERT_TRUE(generator.Generate("android", &out));
|
||||
std::string output = out.str();
|
||||
EXPECT_NE(std::string::npos,
|
||||
output.find("public static final int one=0x01020000;"));
|
||||
EXPECT_NE(std::string::npos,
|
||||
output.find("public static final int two=0x01020001;"));
|
||||
EXPECT_NE(std::string::npos,
|
||||
output.find("public static final int three=0x01020002;"));
|
||||
EXPECT_THAT(output, HasSubstr("public static final int one=0x01020000;"));
|
||||
EXPECT_THAT(output, HasSubstr("public static final int two=0x01020001;"));
|
||||
EXPECT_THAT(output, HasSubstr("public static final int three=0x01020002;"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -246,8 +228,7 @@ TEST(JavaClassGeneratorTest, EmitOtherPackagesAttributesInStyleable) {
|
||||
|
||||
std::unique_ptr<IAaptContext> context =
|
||||
test::ContextBuilder()
|
||||
.AddSymbolSource(
|
||||
util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.AddSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.SetNameManglerPolicy(NameManglerPolicy{"android"})
|
||||
.Build();
|
||||
JavaClassGenerator generator(context.get(), table.get(), {});
|
||||
@@ -256,8 +237,8 @@ TEST(JavaClassGeneratorTest, EmitOtherPackagesAttributesInStyleable) {
|
||||
EXPECT_TRUE(generator.Generate("android", &out));
|
||||
|
||||
std::string output = out.str();
|
||||
EXPECT_NE(std::string::npos, output.find("int foo_bar="));
|
||||
EXPECT_NE(std::string::npos, output.find("int foo_com_lib_bar="));
|
||||
EXPECT_THAT(output, HasSubstr("int foo_bar="));
|
||||
EXPECT_THAT(output, HasSubstr("int foo_com_lib_bar="));
|
||||
}
|
||||
|
||||
TEST(JavaClassGeneratorTest, CommentsForSimpleResourcesArePresent) {
|
||||
@@ -271,24 +252,22 @@ TEST(JavaClassGeneratorTest, CommentsForSimpleResourcesArePresent) {
|
||||
|
||||
std::unique_ptr<IAaptContext> context =
|
||||
test::ContextBuilder()
|
||||
.AddSymbolSource(
|
||||
util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.AddSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.SetNameManglerPolicy(NameManglerPolicy{"android"})
|
||||
.Build();
|
||||
JavaClassGenerator generator(context.get(), table.get(), {});
|
||||
std::stringstream out;
|
||||
ASSERT_TRUE(generator.Generate("android", &out));
|
||||
std::string actual = out.str();
|
||||
std::string output = out.str();
|
||||
|
||||
const char* expectedText =
|
||||
const char* expected_text =
|
||||
R"EOF(/**
|
||||
* This is a comment
|
||||
* @deprecated
|
||||
*/
|
||||
@Deprecated
|
||||
public static final int foo=0x01010000;)EOF";
|
||||
|
||||
EXPECT_NE(std::string::npos, actual.find(expectedText));
|
||||
EXPECT_THAT(output, HasSubstr(expected_text));
|
||||
}
|
||||
|
||||
TEST(JavaClassGeneratorTest, CommentsForEnumAndFlagAttributesArePresent) {}
|
||||
@@ -298,8 +277,7 @@ TEST(JavaClassGeneratorTest, CommentsForStyleablesAndNestedAttributesArePresent)
|
||||
attr.SetComment(StringPiece("This is an attribute"));
|
||||
|
||||
Styleable styleable;
|
||||
styleable.entries.push_back(
|
||||
Reference(test::ParseNameOrDie("android:attr/one")));
|
||||
styleable.entries.push_back(Reference(test::ParseNameOrDie("android:attr/one")));
|
||||
styleable.SetComment(StringPiece("This is a styleable"));
|
||||
|
||||
std::unique_ptr<ResourceTable> table =
|
||||
@@ -312,8 +290,7 @@ TEST(JavaClassGeneratorTest, CommentsForStyleablesAndNestedAttributesArePresent)
|
||||
|
||||
std::unique_ptr<IAaptContext> context =
|
||||
test::ContextBuilder()
|
||||
.AddSymbolSource(
|
||||
util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.AddSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.SetNameManglerPolicy(NameManglerPolicy{"android"})
|
||||
.Build();
|
||||
JavaClassGeneratorOptions options;
|
||||
@@ -321,12 +298,12 @@ TEST(JavaClassGeneratorTest, CommentsForStyleablesAndNestedAttributesArePresent)
|
||||
JavaClassGenerator generator(context.get(), table.get(), options);
|
||||
std::stringstream out;
|
||||
ASSERT_TRUE(generator.Generate("android", &out));
|
||||
std::string actual = out.str();
|
||||
std::string output = out.str();
|
||||
|
||||
EXPECT_NE(std::string::npos, actual.find("attr name android:one"));
|
||||
EXPECT_NE(std::string::npos, actual.find("attr description"));
|
||||
EXPECT_NE(std::string::npos, actual.find(attr.GetComment().data()));
|
||||
EXPECT_NE(std::string::npos, actual.find(styleable.GetComment().data()));
|
||||
EXPECT_THAT(output, HasSubstr("attr name android:one"));
|
||||
EXPECT_THAT(output, HasSubstr("attr description"));
|
||||
EXPECT_THAT(output, HasSubstr(attr.GetComment()));
|
||||
EXPECT_THAT(output, HasSubstr(styleable.GetComment()));
|
||||
}
|
||||
|
||||
TEST(JavaClassGeneratorTest, CommentsForRemovedAttributesAreNotPresentInClass) {
|
||||
@@ -341,8 +318,7 @@ TEST(JavaClassGeneratorTest, CommentsForRemovedAttributesAreNotPresentInClass) {
|
||||
|
||||
std::unique_ptr<IAaptContext> context =
|
||||
test::ContextBuilder()
|
||||
.AddSymbolSource(
|
||||
util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.AddSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get()))
|
||||
.SetNameManglerPolicy(NameManglerPolicy{"android"})
|
||||
.Build();
|
||||
JavaClassGeneratorOptions options;
|
||||
@@ -350,17 +326,17 @@ TEST(JavaClassGeneratorTest, CommentsForRemovedAttributesAreNotPresentInClass) {
|
||||
JavaClassGenerator generator(context.get(), table.get(), options);
|
||||
std::stringstream out;
|
||||
ASSERT_TRUE(generator.Generate("android", &out));
|
||||
std::string actual = out.str();
|
||||
std::string output = out.str();
|
||||
|
||||
EXPECT_EQ(std::string::npos, actual.find("@attr name android:one"));
|
||||
EXPECT_EQ(std::string::npos, actual.find("@attr description"));
|
||||
EXPECT_THAT(output, Not(HasSubstr("@attr name android:one")));
|
||||
EXPECT_THAT(output, Not(HasSubstr("@attr description")));
|
||||
|
||||
// We should find @removed only in the attribute javadoc and not anywhere else
|
||||
// (i.e. the class
|
||||
// javadoc).
|
||||
const size_t pos = actual.find("removed");
|
||||
EXPECT_NE(std::string::npos, pos);
|
||||
EXPECT_EQ(std::string::npos, actual.find("removed", pos + 1));
|
||||
// (i.e. the class javadoc).
|
||||
const std::string kRemoved("removed");
|
||||
ASSERT_THAT(output, HasSubstr(kRemoved));
|
||||
std::string after_first_match = output.substr(output.find(kRemoved) + kRemoved.size());
|
||||
EXPECT_THAT(after_first_match, Not(HasSubstr(kRemoved)));
|
||||
}
|
||||
|
||||
TEST(JavaClassGeneratorTest, GenerateOnResourcesLoadedCallbackForSharedLibrary) {
|
||||
@@ -381,19 +357,17 @@ TEST(JavaClassGeneratorTest, GenerateOnResourcesLoadedCallbackForSharedLibrary)
|
||||
|
||||
JavaClassGeneratorOptions options;
|
||||
options.use_final = false;
|
||||
options.rewrite_callback_options = OnResourcesLoadedCallbackOptions{
|
||||
{"com.foo", "com.boo"},
|
||||
};
|
||||
options.rewrite_callback_options = OnResourcesLoadedCallbackOptions{{"com.foo", "com.boo"}};
|
||||
JavaClassGenerator generator(context.get(), table.get(), options);
|
||||
|
||||
std::stringstream out;
|
||||
ASSERT_TRUE(generator.Generate("android", &out));
|
||||
|
||||
std::string actual = out.str();
|
||||
std::string output = out.str();
|
||||
|
||||
EXPECT_NE(std::string::npos, actual.find("void onResourcesLoaded"));
|
||||
EXPECT_NE(std::string::npos, actual.find("com.foo.R.onResourcesLoaded"));
|
||||
EXPECT_NE(std::string::npos, actual.find("com.boo.R.onResourcesLoaded"));
|
||||
EXPECT_THAT(output, HasSubstr("void onResourcesLoaded"));
|
||||
EXPECT_THAT(output, HasSubstr("com.foo.R.onResourcesLoaded"));
|
||||
EXPECT_THAT(output, HasSubstr("com.boo.R.onResourcesLoaded"));
|
||||
}
|
||||
|
||||
} // namespace aapt
|
||||
|
||||
Reference in New Issue
Block a user