summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorTianjie Xu <xunchang@google.com>2019-08-06 21:32:05 +0200
committerBryan Ferris <bferris@google.com>2020-02-13 20:16:38 +0100
commitcd8faf7eeead6fd6ee5912ddd26dab5ab6c7dda7 (patch)
tree514f930addae708edfb05b471e8d60933c1d0d52 /tests
parentMerge "Revert "Force package installation with FUSE unless the package stores on device"" into qt-qpr1-dev-plus-aosp (diff)
downloadandroid_bootable_recovery-cd8faf7eeead6fd6ee5912ddd26dab5ab6c7dda7.tar
android_bootable_recovery-cd8faf7eeead6fd6ee5912ddd26dab5ab6c7dda7.tar.gz
android_bootable_recovery-cd8faf7eeead6fd6ee5912ddd26dab5ab6c7dda7.tar.bz2
android_bootable_recovery-cd8faf7eeead6fd6ee5912ddd26dab5ab6c7dda7.tar.lz
android_bootable_recovery-cd8faf7eeead6fd6ee5912ddd26dab5ab6c7dda7.tar.xz
android_bootable_recovery-cd8faf7eeead6fd6ee5912ddd26dab5ab6c7dda7.tar.zst
android_bootable_recovery-cd8faf7eeead6fd6ee5912ddd26dab5ab6c7dda7.zip
Diffstat (limited to 'tests')
-rw-r--r--tests/Android.bp1
-rw-r--r--tests/unit/install_test.cpp28
2 files changed, 29 insertions, 0 deletions
diff --git a/tests/Android.bp b/tests/Android.bp
index bde1bc5f3..4c23255ad 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -92,6 +92,7 @@ librecovery_static_libs = [
"libhidlbase",
"liblp",
"libtinyxml2",
+ "libc++fs",
]
cc_test {
diff --git a/tests/unit/install_test.cpp b/tests/unit/install_test.cpp
index 370fbdcc5..ee753494c 100644
--- a/tests/unit/install_test.cpp
+++ b/tests/unit/install_test.cpp
@@ -35,6 +35,7 @@
#include "install/wipe_device.h"
#include "otautil/paths.h"
#include "private/setup_commands.h"
+#include "recovery_utils/roots.h"
static void BuildZipArchive(const std::map<std::string, std::string>& file_map, int fd,
int compression_type) {
@@ -513,3 +514,30 @@ TEST(InstallTest, CheckPackageMetadata_ab_post_timestamp) {
"\n");
TestCheckPackageMetadata(metadata, OtaType::AB, true);
}
+
+TEST(InstallTest, SetupPackageMount_package_path) {
+ load_volume_table();
+ bool install_with_fuse;
+
+ // Setup should fail if the input path doesn't exist.
+ ASSERT_FALSE(SetupPackageMount("/does_not_exist", &install_with_fuse));
+
+ // Package should be installed with fuse if it's not in /cache.
+ TemporaryDir temp_dir;
+ TemporaryFile update_package(temp_dir.path);
+ ASSERT_TRUE(SetupPackageMount(update_package.path, &install_with_fuse));
+ ASSERT_TRUE(install_with_fuse);
+
+ // Setup should fail if the input path isn't canonicalized.
+ std::string uncanonical_package_path = android::base::Join(
+ std::vector<std::string>{
+ temp_dir.path,
+ "..",
+ android::base::Basename(temp_dir.path),
+ android::base::Basename(update_package.path),
+ },
+ '/');
+
+ ASSERT_EQ(0, access(uncanonical_package_path.c_str(), R_OK));
+ ASSERT_FALSE(SetupPackageMount(uncanonical_package_path, &install_with_fuse));
+}