diff options
| -rw-r--r-- | runtime/utils.cc | 2 | ||||
| -rw-r--r-- | runtime/utils_test.cc | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/runtime/utils.cc b/runtime/utils.cc index 8e810a7663..bf36bf3e85 100644 --- a/runtime/utils.cc +++ b/runtime/utils.cc @@ -1196,7 +1196,7 @@ std::string GetDalvikCacheFilenameOrDie(const std::string& location) { LOG(FATAL) << "Expected path in location to be absolute: "<< location; } std::string cache_file(location, 1); // skip leading slash - if (!EndsWith(location, ".dex") || !EndsWith(location, ".art")) { + if (!EndsWith(location, ".dex") && !EndsWith(location, ".art")) { cache_file += "/"; cache_file += DexFile::kClassesDex; } diff --git a/runtime/utils_test.cc b/runtime/utils_test.cc index 2633964b57..b43177b4fd 100644 --- a/runtime/utils_test.cc +++ b/runtime/utils_test.cc @@ -335,4 +335,18 @@ TEST_F(UtilsTest, EndsWith) { EXPECT_FALSE(EndsWith("oo", "foo")); } +void CheckGetDalvikCacheFilenameOrDie(const char* in, const char* out) { + std::string expected(getenv("ANDROID_DATA")); + expected += "/dalvik-cache/"; + expected += out; + EXPECT_STREQ(expected.c_str(), GetDalvikCacheFilenameOrDie(in).c_str()); +} + +TEST_F(UtilsTest, GetDalvikCacheFilenameOrDie) { + CheckGetDalvikCacheFilenameOrDie("/system/app/Foo.apk", "system@app@Foo.apk@classes.dex"); + CheckGetDalvikCacheFilenameOrDie("/data/app/foo-1.apk", "data@app@foo-1.apk@classes.dex"); + CheckGetDalvikCacheFilenameOrDie("/system/framework/core.jar", "system@framework@core.jar@classes.dex"); + CheckGetDalvikCacheFilenameOrDie("/system/framework/boot.art", "system@framework@boot.art"); +} + } // namespace art |