diff options
Diffstat (limited to 'artd/path_utils_test.cc')
-rw-r--r-- | artd/path_utils_test.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/artd/path_utils_test.cc b/artd/path_utils_test.cc index 9ce40c5d41..4162da33f6 100644 --- a/artd/path_utils_test.cc +++ b/artd/path_utils_test.cc @@ -26,12 +26,23 @@ namespace artd { namespace { using ::aidl::com::android::server::art::ArtifactsPath; +using ::aidl::com::android::server::art::DexMetadataPath; +using ::aidl::com::android::server::art::VdexPath; using ::android::base::testing::HasError; using ::android::base::testing::HasValue; using ::android::base::testing::WithMessage; +using std::literals::operator""s; // NOLINT + class PathUtilsTest : public CommonArtTest {}; +TEST_F(PathUtilsTest, BuildArtBinPath) { + auto scratch_dir = std::make_unique<ScratchDir>(); + auto art_root_env = ScopedUnsetEnvironmentVariable("ANDROID_ART_ROOT"); + setenv("ANDROID_ART_ROOT", scratch_dir->GetPath().c_str(), /*overwrite=*/1); + EXPECT_THAT(BuildArtBinPath("foo"), HasValue(scratch_dir->GetPath() + "/bin/foo")); +} + TEST_F(PathUtilsTest, BuildOatPath) { EXPECT_THAT( BuildOatPath(ArtifactsPath{.dexPath = "/a/b.apk", .isa = "arm64", .isInDalvikCache = false}), @@ -61,6 +72,12 @@ TEST_F(PathUtilsTest, BuildOatPathNonNormalDexPath) { HasError(WithMessage("Path '/a/c/../b.apk' is not in normal form"))); } +TEST_F(PathUtilsTest, BuildOatPathNul) { + EXPECT_THAT(BuildOatPath(ArtifactsPath{ + .dexPath = "/a/\0/b.apk"s, .isa = "arm64", .isInDalvikCache = false}), + HasError(WithMessage("Path '/a/\0/b.apk' has invalid character '\\0'"s))); +} + TEST_F(PathUtilsTest, BuildOatPathInvalidDexExtension) { EXPECT_THAT(BuildOatPath(ArtifactsPath{ .dexPath = "/a/b.invalid", .isa = "arm64", .isInDalvikCache = false}), @@ -81,6 +98,21 @@ TEST_F(PathUtilsTest, OatPathToArtPath) { EXPECT_EQ(OatPathToArtPath("/a/oat/arm64/b.odex"), "/a/oat/arm64/b.art"); } +TEST_F(PathUtilsTest, BuildDexMetadataPath) { + EXPECT_THAT(BuildDexMetadataPath(DexMetadataPath{.dexPath = "/a/b.apk"}), HasValue("/a/b.dm")); +} + +TEST_F(PathUtilsTest, BuildDexMetadataPathForVdex) { + EXPECT_THAT(BuildDexMetadataPath(VdexPath(DexMetadataPath{.dexPath = "/a/b.apk"})), + HasValue("/a/b.dm")); +} + +TEST_F(PathUtilsTest, BuildVdexPath) { + EXPECT_THAT( + BuildVdexPath(ArtifactsPath{.dexPath = "/a/b.apk", .isa = "arm64", .isInDalvikCache = false}), + HasValue("/a/oat/arm64/b.vdex")); +} + } // namespace } // namespace artd } // namespace art |