diff options
author | Adam Lesinski <adamlesinski@google.com> | 2017-10-11 16:50:37 -0700 |
---|---|---|
committer | Adam Lesinski <adamlesinski@google.com> | 2017-10-12 16:02:00 -0700 |
commit | 873ef0e2302a1581dbcb83b49cefc95dcc41f5a0 (patch) | |
tree | ef00b0878f81644c2cbb37d7f4e5b5a2fc0a5c0c /libs/androidfw/tests/TestHelpers.cpp | |
parent | df043ee75cffd64017fd5a571b1e79ee763ea62e (diff) |
libandroidfw_tests: package test data correctly
- Convert to use soong, which allows bundling test data with benchmarks.
- Also separate libandroidfw_benchmarks so that it doesn't depend
on gtest.
Test: manual
Change-Id: I45bd222fafa87172c77b7f5bb2a7a89ddca72361
Diffstat (limited to 'libs/androidfw/tests/TestHelpers.cpp')
-rw-r--r-- | libs/androidfw/tests/TestHelpers.cpp | 90 |
1 files changed, 20 insertions, 70 deletions
diff --git a/libs/androidfw/tests/TestHelpers.cpp b/libs/androidfw/tests/TestHelpers.cpp index 1e763a5e53a8..9e320a21b534 100644 --- a/libs/androidfw/tests/TestHelpers.cpp +++ b/libs/androidfw/tests/TestHelpers.cpp @@ -16,67 +16,22 @@ #include "TestHelpers.h" -#include <libgen.h> -#include <unistd.h> - -#include <memory> -#include <string> - -#include "android-base/file.h" -#include "android-base/logging.h" -#include "android-base/strings.h" #include "ziparchive/zip_archive.h" -namespace android { - -static std::string sTestDataPath; +using ::testing::AssertionFailure; +using ::testing::AssertionResult; +using ::testing::AssertionSuccess; -// Extract the directory of the current executable path. -static std::string GetExecutableDir() { - const std::string path = base::GetExecutablePath(); - std::unique_ptr<char, decltype(&std::free)> mutable_path = {strdup(path.c_str()), std::free}; - std::string executable_dir = dirname(mutable_path.get()); - return executable_dir; -} - -void InitializeTest(int* argc, char** argv) { - // Set the default test data path to be the executable path directory. - SetTestDataPath(GetExecutableDir()); - - for (int i = 1; i < *argc; i++) { - const std::string arg = argv[i]; - if (base::StartsWith(arg, "--testdata=")) { - SetTestDataPath(arg.substr(strlen("--testdata="))); - for (int j = i; j != *argc; j++) { - argv[j] = argv[j + 1]; - } - --(*argc); - --i; - } else if (arg == "-h" || arg == "--help") { - std::cerr << "\nAdditional options specific to this test:\n" - " --testdata=[PATH]\n" - " Specify the location of test data used within the tests.\n"; - exit(1); - } - } -} - -void SetTestDataPath(const std::string& path) { sTestDataPath = path; } - -const std::string& GetTestDataPath() { - CHECK(!sTestDataPath.empty()) << "no test data path set."; - return sTestDataPath; -} +namespace android { -::testing::AssertionResult ReadFileFromZipToString(const std::string& zip_path, - const std::string& file, - std::string* out_contents) { +AssertionResult ReadFileFromZipToString(const std::string& zip_path, const std::string& file, + std::string* out_contents) { out_contents->clear(); ::ZipArchiveHandle handle; int32_t result = OpenArchive(zip_path.c_str(), &handle); if (result != 0) { - return ::testing::AssertionFailure() << "Failed to open zip '" << zip_path - << "': " << ::ErrorCodeString(result); + return AssertionFailure() << "Failed to open zip '" << zip_path + << "': " << ::ErrorCodeString(result); } ::ZipString name(file.c_str()); @@ -84,8 +39,8 @@ const std::string& GetTestDataPath() { result = ::FindEntry(handle, name, &entry); if (result != 0) { ::CloseArchive(handle); - return ::testing::AssertionFailure() << "Could not find file '" << file << "' in zip '" - << zip_path << "' : " << ::ErrorCodeString(result); + return AssertionFailure() << "Could not find file '" << file << "' in zip '" << zip_path + << "' : " << ::ErrorCodeString(result); } out_contents->resize(entry.uncompressed_length); @@ -94,41 +49,36 @@ const std::string& GetTestDataPath() { out_contents->size()); if (result != 0) { ::CloseArchive(handle); - return ::testing::AssertionFailure() << "Failed to extract file '" << file << "' from zip '" - << zip_path << "': " << ::ErrorCodeString(result); + return AssertionFailure() << "Failed to extract file '" << file << "' from zip '" << zip_path + << "': " << ::ErrorCodeString(result); } ::CloseArchive(handle); - return ::testing::AssertionSuccess(); + return AssertionSuccess(); } -::testing::AssertionResult IsStringEqual(const ResTable& table, uint32_t resource_id, - const char* expected_str) { +AssertionResult IsStringEqual(const ResTable& table, uint32_t resource_id, + const char* expected_str) { Res_value val; ssize_t block = table.getResource(resource_id, &val, MAY_NOT_BE_BAG); if (block < 0) { - return ::testing::AssertionFailure() << "could not find resource"; + return AssertionFailure() << "could not find resource"; } if (val.dataType != Res_value::TYPE_STRING) { - return ::testing::AssertionFailure() << "resource is not a string"; + return AssertionFailure() << "resource is not a string"; } const ResStringPool* pool = table.getTableStringBlock(block); if (pool == NULL) { - return ::testing::AssertionFailure() << "table has no string pool for block " << block; + return AssertionFailure() << "table has no string pool for block " << block; } const String8 actual_str = pool->string8ObjectAt(val.data); if (String8(expected_str) != actual_str) { - return ::testing::AssertionFailure() << actual_str.string(); + return AssertionFailure() << actual_str.string(); } - return ::testing::AssertionSuccess() << actual_str.string(); -} - -std::string GetStringFromPool(const ResStringPool* pool, uint32_t idx) { - String8 str = pool->string8ObjectAt(idx); - return std::string(str.string(), str.length()); + return AssertionSuccess() << actual_str.string(); } } // namespace android |