diff options
| -rw-r--r-- | build/Android.gtest.mk | 10 | ||||
| -rw-r--r-- | tools/dexanalyze/dexanalyze.cc | 6 | ||||
| -rw-r--r-- | tools/dexanalyze/dexanalyze_test.cc | 12 |
3 files changed, 25 insertions, 3 deletions
diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk index 3daaf0156e..b481352b60 100644 --- a/build/Android.gtest.mk +++ b/build/Android.gtest.mk @@ -277,6 +277,16 @@ ART_GTEST_dexdump_test_TARGET_DEPS := \ $(TARGET_CORE_IMAGE_DEFAULT_32) \ dexdump2-target +# The dexanalyze test requires an image and the dexanalyze utility. +ART_GTEST_dexanalyze_test_HOST_DEPS := \ + $(HOST_CORE_IMAGE_DEFAULT_64) \ + $(HOST_CORE_IMAGE_DEFAULT_32) \ + dexanalyze-host +ART_GTEST_dexanalyze_test_TARGET_DEPS := \ + $(TARGET_CORE_IMAGE_DEFAULT_64) \ + $(TARGET_CORE_IMAGE_DEFAULT_32) \ + dexanalyze-target + # The dexlayout test requires an image and the dexlayout utility. # TODO: rename into dexdump when migration completes ART_GTEST_dexlayout_test_HOST_DEPS := \ diff --git a/tools/dexanalyze/dexanalyze.cc b/tools/dexanalyze/dexanalyze.cc index 0b08beed70..58b1fc7ba3 100644 --- a/tools/dexanalyze/dexanalyze.cc +++ b/tools/dexanalyze/dexanalyze.cc @@ -138,7 +138,7 @@ class DexAnalyze { // TODO: once added, use an api to android::base to read a std::vector<uint8_t>. if (!android::base::ReadFileToString(filename.c_str(), &content)) { LOG(ERROR) << "ReadFileToString failed for " + filename << std::endl; - continue; + return 2; } std::vector<std::unique_ptr<const DexFile>> dex_files; const DexFileLoader dex_file_loader; @@ -150,14 +150,14 @@ class DexAnalyze { &error_msg, &dex_files)) { LOG(ERROR) << "OpenAll failed for " + filename << " with " << error_msg << std::endl; - continue; + return 3; } for (std::unique_ptr<const DexFile>& dex_file : dex_files) { if (options.dump_per_input_dex_) { Analysis current(&options); if (!current.ProcessDexFile(*dex_file)) { LOG(ERROR) << "Failed to process " << filename << " with error " << error_msg; - continue; + return 4; } LOG(INFO) << "Analysis for " << dex_file->GetLocation() << std::endl; current.Dump(LOG_STREAM(INFO)); diff --git a/tools/dexanalyze/dexanalyze_test.cc b/tools/dexanalyze/dexanalyze_test.cc index c9b8f53d24..96be3f9b8d 100644 --- a/tools/dexanalyze/dexanalyze_test.cc +++ b/tools/dexanalyze/dexanalyze_test.cc @@ -36,10 +36,22 @@ class DexAnalyzeTest : public CommonRuntimeTest { } }; +TEST_F(DexAnalyzeTest, NoInputFileGiven) { + DexAnalyzeExec({ "-a" }, /*expect_success*/ false); +} + +TEST_F(DexAnalyzeTest, CantOpenInput) { + DexAnalyzeExec({ "-a", "/non/existent/path" }, /*expect_success*/ false); +} + TEST_F(DexAnalyzeTest, TestAnalyzeMultidex) { DexAnalyzeExec({ "-a", GetTestDexFileName("MultiDex") }, /*expect_success*/ true); } +TEST_F(DexAnalyzeTest, TestAnalizeCoreDex) { + DexAnalyzeExec({ "-a", GetLibCoreDexFileNames()[0] }, /*expect_success*/ true); +} + TEST_F(DexAnalyzeTest, TestInvalidArg) { DexAnalyzeExec({ "-invalid-option" }, /*expect_success*/ false); } |