diff options
author | 2019-01-23 11:10:52 -0800 | |
---|---|---|
committer | 2019-01-23 11:11:12 -0800 | |
commit | b7be7934b05c810978466c151e17c4e199e7272b (patch) | |
tree | c3c36329b3b26ce09b45c95a36195663340cf796 | |
parent | 3b943e777e57c6f3c7351c23daea2f12ac8ea928 (diff) |
Hold data pointer reference to AAPT2 test file
To try and solve test flakiness, hold the unique_ptr in the method scope to make sure it's cleaned up after we assert on it.
Bug: 123079798
Test: gonna merge and check for failures, since it passes locally
Change-Id: Id348d1112832cbb82f605a84ef675c25a7488b11
-rw-r--r-- | tools/aapt2/cmd/Convert_test.cpp | 12 | ||||
-rw-r--r-- | tools/aapt2/cmd/Link_test.cpp | 12 | ||||
-rw-r--r-- | tools/aapt2/test/Fixture.cpp | 16 | ||||
-rw-r--r-- | tools/aapt2/test/Fixture.h | 6 |
4 files changed, 34 insertions, 12 deletions
diff --git a/tools/aapt2/cmd/Convert_test.cpp b/tools/aapt2/cmd/Convert_test.cpp index 2e4315086105..8da5bb8d5dd6 100644 --- a/tools/aapt2/cmd/Convert_test.cpp +++ b/tools/aapt2/cmd/Convert_test.cpp @@ -53,7 +53,11 @@ TEST_F(ConvertTest, RemoveRawXmlStrings) { // Load the binary xml tree android::ResXMLTree tree; std::unique_ptr<LoadedApk> apk = LoadedApk::LoadApkFromPath(out_convert_apk, &diag); - AssertLoadXml(apk.get(), "res/xml/test.xml", &tree); + + std::unique_ptr<io::IData> data = OpenFileAsData(apk.get(), "res/xml/test.xml"); + ASSERT_THAT(data, Ne(nullptr)); + + AssertLoadXml(apk.get(), data.get(), &tree); // Check that the raw string index has not been assigned EXPECT_THAT(tree.getAttributeValueStringID(0), Eq(-1)); @@ -87,7 +91,11 @@ TEST_F(ConvertTest, KeepRawXmlStrings) { // Load the binary xml tree android::ResXMLTree tree; std::unique_ptr<LoadedApk> apk = LoadedApk::LoadApkFromPath(out_convert_apk, &diag); - AssertLoadXml(apk.get(), "res/xml/test.xml", &tree); + + std::unique_ptr<io::IData> data = OpenFileAsData(apk.get(), "res/xml/test.xml"); + ASSERT_THAT(data, Ne(nullptr)); + + AssertLoadXml(apk.get(), data.get(), &tree); // Check that the raw string index has been set to the correct string pool entry int32_t raw_index = tree.getAttributeValueStringID(0); diff --git a/tools/aapt2/cmd/Link_test.cpp b/tools/aapt2/cmd/Link_test.cpp index 3c8b72d3cb2c..9ea93f638aff 100644 --- a/tools/aapt2/cmd/Link_test.cpp +++ b/tools/aapt2/cmd/Link_test.cpp @@ -43,7 +43,11 @@ TEST_F(LinkTest, RemoveRawXmlStrings) { // Load the binary xml tree android::ResXMLTree tree; std::unique_ptr<LoadedApk> apk = LoadedApk::LoadApkFromPath(out_apk, &diag); - AssertLoadXml(apk.get(), "res/xml/test.xml", &tree); + + std::unique_ptr<io::IData> data = OpenFileAsData(apk.get(), "res/xml/test.xml"); + ASSERT_THAT(data, Ne(nullptr)); + + AssertLoadXml(apk.get(), data.get(), &tree); // Check that the raw string index has not been assigned EXPECT_THAT(tree.getAttributeValueStringID(0), Eq(-1)); @@ -67,7 +71,11 @@ TEST_F(LinkTest, KeepRawXmlStrings) { // Load the binary xml tree android::ResXMLTree tree; std::unique_ptr<LoadedApk> apk = LoadedApk::LoadApkFromPath(out_apk, &diag); - AssertLoadXml(apk.get(), "res/xml/test.xml", &tree); + + std::unique_ptr<io::IData> data = OpenFileAsData(apk.get(), "res/xml/test.xml"); + ASSERT_THAT(data, Ne(nullptr)); + + AssertLoadXml(apk.get(), data.get(), &tree); // Check that the raw string index has been set to the correct string pool entry int32_t raw_index = tree.getAttributeValueStringID(0); diff --git a/tools/aapt2/test/Fixture.cpp b/tools/aapt2/test/Fixture.cpp index aae79fafc0a6..3fcdfb70a524 100644 --- a/tools/aapt2/test/Fixture.cpp +++ b/tools/aapt2/test/Fixture.cpp @@ -133,16 +133,18 @@ std::string CommandTestFixture::GetDefaultManifest() { return manifest_file; } -void CommandTestFixture::AssertLoadXml(LoadedApk *apk, const android::StringPiece &xml_path, +std::unique_ptr<io::IData> CommandTestFixture::OpenFileAsData(LoadedApk* apk, + const android::StringPiece& path) { + return apk + ->GetFileCollection() + ->FindFile(path) + ->OpenAsData(); +} + +void CommandTestFixture::AssertLoadXml(LoadedApk* apk, const io::IData* data, android::ResXMLTree *out_tree) { ASSERT_THAT(apk, Ne(nullptr)); - io::IFile* file = apk->GetFileCollection()->FindFile(xml_path); - ASSERT_THAT(file, Ne(nullptr)); - - std::unique_ptr<io::IData> data = file->OpenAsData(); - ASSERT_THAT(data, Ne(nullptr)); - out_tree->setTo(data->data(), data->size()); ASSERT_THAT(out_tree->getError(), Eq(android::OK)); while (out_tree->next() != android::ResXMLTree::START_TAG) { diff --git a/tools/aapt2/test/Fixture.h b/tools/aapt2/test/Fixture.h index 89d3b7b751a0..3079c757f61a 100644 --- a/tools/aapt2/test/Fixture.h +++ b/tools/aapt2/test/Fixture.h @@ -83,8 +83,12 @@ class CommandTestFixture : public TestDirectoryFixture { // Creates a minimal android manifest within the test directory and returns the file path. std::string GetDefaultManifest(); + // Returns pointer to data inside APK files + std::unique_ptr<io::IData> OpenFileAsData(LoadedApk* apk, + const android::StringPiece& path); + // Asserts that loading the tree from the specified file in the apk succeeds. - void AssertLoadXml(LoadedApk* apk, const android::StringPiece& xml_path, + void AssertLoadXml(LoadedApk* apk, const io::IData* data, android::ResXMLTree* out_tree); private: |