From 90b777c42ebb4b7f22dab2231a6ede17aa440ef5 Mon Sep 17 00:00:00 2001 From: Bartlomiej Kunikowski Date: Fri, 18 Nov 2016 11:43:39 +0100 Subject: [PATCH] Fix for MountUpdateMode_Rollback_Hybrid The backup directory was not removed in undo for StepTpkPreparePackageDirectory. Verify: # su - app_fw $ /usr/bin/wgt-backend-ut/smoke-test Submit together: - https://review.tizen.org/gerrit/#/c/98724/ Requires: - https://review.tizen.org/gerrit/#/c/97898/ Change-Id: Ief869db12206cc7c05424ab56848aa2089b86788 Signed-off-by: jongmyeongko --- .../step_tpk_update_package_directory.cc | 26 +++++++++++++--------- .../filesystem/step_tpk_update_package_directory.h | 1 + 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/tpk/step/filesystem/step_tpk_update_package_directory.cc b/src/tpk/step/filesystem/step_tpk_update_package_directory.cc index 0ec0789..03ca4f8 100644 --- a/src/tpk/step/filesystem/step_tpk_update_package_directory.cc +++ b/src/tpk/step/filesystem/step_tpk_update_package_directory.cc @@ -74,6 +74,19 @@ ci::Step::Status StepTpkUpdatePackageDirectory::RestoreDirectory( return Status::OK; } +ci::Step::Status StepTpkUpdatePackageDirectory::RemoveDirectory( + const boost::filesystem::path& dir_path) { + if (bf::exists(dir_path)) { + bs::error_code error; + bf::remove_all(dir_path, error); + if (error) { + LOG(ERROR) << "Failed to remove directory: " << dir_path; + return Status::APP_DIR_ERROR; + } + } + return Status::OK; +} + ci::Step::Status StepTpkUpdatePackageDirectory::BackupEntries() { bf::path backup_path = ci::GetBackupPathForPackagePath(context_->pkg_path.get()); @@ -98,15 +111,7 @@ ci::Step::Status StepTpkUpdatePackageDirectory::process() { ci::Step::Status StepTpkUpdatePackageDirectory::clean() { bf::path backup_path = ci::GetBackupPathForPackagePath(context_->pkg_path.get()); - if (bf::exists(backup_path)) { - bs::error_code error; - bf::remove(backup_path, error); - if (error) { - LOG(ERROR) << "Failed to remove backup path: " << backup_path; - return Status::APP_DIR_ERROR; - } - } - return Status::OK; + return RemoveDirectory(backup_path); } ci::Step::Status StepTpkUpdatePackageDirectory::undo() { @@ -118,7 +123,8 @@ ci::Step::Status StepTpkUpdatePackageDirectory::undo() { if (status != Status::OK) return status; } - return Status::OK; + + return RemoveDirectory(backup_path); } } // namespace filesystem diff --git a/src/tpk/step/filesystem/step_tpk_update_package_directory.h b/src/tpk/step/filesystem/step_tpk_update_package_directory.h index b33d9b4..9f0fea6 100644 --- a/src/tpk/step/filesystem/step_tpk_update_package_directory.h +++ b/src/tpk/step/filesystem/step_tpk_update_package_directory.h @@ -41,6 +41,7 @@ class TPK_BACKEND_EXPORT_API StepTpkUpdatePackageDirectory const boost::filesystem::path& backup_path); Status RestoreDirectory(const std::string& entry, const boost::filesystem::path& backup_path); + Status RemoveDirectory(const boost::filesystem::path& dir_path); STEP_NAME(TpkUpdatePackageDirectory) }; -- 2.7.4