return AppInstallerPtr(new tpk::TpkInstaller(pkgmgr));
}
+TpkBackendInterface::AppInstallerPtr
+TpkBackendInterface::CreateFailExpectedInstaller(
+ ci::PkgMgrPtr pkgmgr, int fail_at) const {
+ return AppInstallerPtr(new FailExpectedTpkInstaller(pkgmgr, fail_at));
+}
+
TpkBackendInterface::CommandResult
TpkBackendInterface::InstallWithTEP(
const bf::path& path, const bf::path& tep) const {
#ifndef UNIT_TESTS_SMOKE_UTILS_H_
#define UNIT_TESTS_SMOKE_UTILS_H_
-#include <common/pkgmgr_interface.h>
#include <common/app_installer.h>
+#include <common/pkgmgr_interface.h>
+#include <common/step/configuration/step_fail.h>
#include <unit_tests/common/smoke_utils.h>
#include <memory>
#include <utility>
#include "tpk/tpk_app_query_interface.h"
+#include "tpk/tpk_installer.h"
namespace smoke_test {
AppQueryInterfacePtr CreateQueryInterface() const override;
AppInstallerPtr CreateInstaller(
common_installer::PkgMgrPtr pkgmgr) const override;
+ AppInstallerPtr CreateFailExpectedInstaller(
+ common_installer::PkgMgrPtr pkgmgr, int fail_at) const override;
+};
+
+#define OVERRIDE_STEPS_BLOCK(STEPS) \
+ void STEPS() override { \
+ tpk::TpkInstaller::STEPS(); \
+ if (fail_at_ > -1) \
+ AddStepAtIndex<common_installer::configuration::StepFail>(fail_at_); \
+ else \
+ AddStep<common_installer::configuration::StepFail>(); \
+ } \
+
+class FailExpectedTpkInstaller : public tpk::TpkInstaller {
+ public:
+ explicit FailExpectedTpkInstaller(
+ common_installer::PkgMgrPtr pkgmgr, int fail_at)
+ : tpk::TpkInstaller(pkgmgr), fail_at_(fail_at) { }
+
+ private:
+ OVERRIDE_STEPS_BLOCK(InstallSteps)
+ OVERRIDE_STEPS_BLOCK(UpdateSteps)
+ OVERRIDE_STEPS_BLOCK(UninstallSteps)
+ OVERRIDE_STEPS_BLOCK(ReinstallSteps)
+ OVERRIDE_STEPS_BLOCK(DeltaSteps)
+ OVERRIDE_STEPS_BLOCK(MoveSteps)
+ OVERRIDE_STEPS_BLOCK(RecoverySteps)
+ OVERRIDE_STEPS_BLOCK(MountInstallSteps)
+ OVERRIDE_STEPS_BLOCK(MountUpdateSteps)
+ OVERRIDE_STEPS_BLOCK(ManifestDirectInstallSteps)
+ OVERRIDE_STEPS_BLOCK(ManifestDirectUpdateSteps)
+ OVERRIDE_STEPS_BLOCK(ManifestPartialInstallSteps)
+ OVERRIDE_STEPS_BLOCK(ManifestPartialUpdateSteps)
+ OVERRIDE_STEPS_BLOCK(PartialUninstallSteps)
+ OVERRIDE_STEPS_BLOCK(ReadonlyUpdateInstallSteps)
+ OVERRIDE_STEPS_BLOCK(ReadonlyUpdateUninstallSteps)
+ OVERRIDE_STEPS_BLOCK(DisablePkgSteps)
+ OVERRIDE_STEPS_BLOCK(EnablePkgSteps)
+ OVERRIDE_STEPS_BLOCK(MigrateExtImgSteps)
+ OVERRIDE_STEPS_BLOCK(RecoverDBSteps)
+
+ int fail_at_;
};
} // namespace smoke_test