Mock a /postinstall dir at test time
Bug: 172696594
Test: treehugger
Change-Id: Ib6264569d090dc61fc9ded5f833e3841ec16a8dd
diff --git a/payload_consumer/postinstall_runner_action.cc b/payload_consumer/postinstall_runner_action.cc
index d452a64..6a6d687 100644
--- a/payload_consumer/postinstall_runner_action.cc
+++ b/payload_consumer/postinstall_runner_action.cc
@@ -53,6 +53,18 @@
using std::string;
using std::vector;
+PostinstallRunnerAction::PostinstallRunnerAction(
+ BootControlInterface* boot_control, HardwareInterface* hardware)
+ : boot_control_(boot_control), hardware_(hardware) {
+#ifdef __ANDROID__
+ fs_mount_dir_ = "/postinstall";
+#else // __ANDROID__
+ base::FilePath temp_dir;
+ TEST_AND_RETURN(base::CreateNewTempDirectory("au_postint_mount", &temp_dir));
+ fs_mount_dir_ = temp_dir.value();
+#endif // __ANDROID__
+}
+
void PostinstallRunnerAction::PerformAction() {
CHECK(HasInputObject());
CHECK(boot_control_);
@@ -135,13 +147,6 @@
// Perform post-install for the current_partition_ partition. At this point we
// need to call CompletePartitionPostinstall to complete the operation and
// cleanup.
-#ifdef __ANDROID__
- fs_mount_dir_ = "/postinstall";
-#else // __ANDROID__
- base::FilePath temp_dir;
- TEST_AND_RETURN(base::CreateNewTempDirectory("au_postint_mount", &temp_dir));
- fs_mount_dir_ = temp_dir.value();
-#endif // __ANDROID__
if (!utils::FileExists(fs_mount_dir_.c_str())) {
LOG(ERROR) << "Mount point " << fs_mount_dir_
diff --git a/payload_consumer/postinstall_runner_action.h b/payload_consumer/postinstall_runner_action.h
index e404107..178d72a 100644
--- a/payload_consumer/postinstall_runner_action.h
+++ b/payload_consumer/postinstall_runner_action.h
@@ -19,6 +19,7 @@
#include <memory>
#include <string>
+#include <utility>
#include <vector>
#include <base/files/file_descriptor_watcher_posix.h>
@@ -40,8 +41,7 @@
class PostinstallRunnerAction : public InstallPlanAction {
public:
PostinstallRunnerAction(BootControlInterface* boot_control,
- HardwareInterface* hardware)
- : boot_control_(boot_control), hardware_(hardware) {}
+ HardwareInterface* hardware);
// InstallPlanAction overrides.
void PerformAction() override;
@@ -68,6 +68,9 @@
friend class PostinstallRunnerActionTest;
FRIEND_TEST(PostinstallRunnerActionTest, ProcessProgressLineTest);
+ // exposed for testing purposes only
+ void SetMountDir(std::string dir) { fs_mount_dir_ = std::move(dir); }
+
void PerformPartitionPostinstall();
// Called whenever the |progress_fd_| has data available to read.
diff --git a/payload_consumer/postinstall_runner_action_unittest.cc b/payload_consumer/postinstall_runner_action_unittest.cc
index 9b330d9..a9ed5b1 100644
--- a/payload_consumer/postinstall_runner_action_unittest.cc
+++ b/payload_consumer/postinstall_runner_action_unittest.cc
@@ -216,6 +216,9 @@
auto runner_action = std::make_unique<PostinstallRunnerAction>(
&fake_boot_control_, &fake_hardware_);
postinstall_action_ = runner_action.get();
+ base::FilePath temp_dir;
+ TEST_AND_RETURN(base::CreateNewTempDirectory("postinstall", &temp_dir));
+ postinstall_action_->SetMountDir(temp_dir.value());
runner_action->set_delegate(setup_action_delegate_);
BondActions(feeder_action.get(), runner_action.get());
auto collector_action =