#include <stdio.h>
#include <memory>
+#include <string>
+#include <vector>
#include "mock/os_mock.h"
#include "mock/pkgmgr_info_mock.h"
virtual ~PkgFinderTest() {}
virtual void SetUp() {
+ }
+
+ virtual void TearDown() {
+ }
+
+ void SetOldPkgInfo(const char* ro_pkg_id, const char* ro_pkg_type,
+ const char* ro_pkg_version, const char* rw_pkg_id, const char* rw_pkg_type,
+ const char* rw_pkg_version) {
static int k;
pkgmgrinfo_pkginfo_filter_h dummy_filter = (pkgmgrinfo_pkginfo_filter_h)&k;
Invoke([](pkgmgrinfo_pkginfo_filter_h handle,
pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data) -> int {
pkg_cb(nullptr, user_data);
- pkg_cb(nullptr, user_data);
- pkg_cb(nullptr, user_data);
return 0;
})
)
pkg_cb(nullptr, user_data);
return 0;
}));
-
- const char* old_ro_pkgid[] = {
- "org.test.pkg1",
- "org.test.pkg2",
- "org.tizen.app-selector"
- };
-
- const char* old_ro_pkg_type[] = {
- "tpk",
- "wgt",
- "tpk"
- };
-
- const char* old_ro_pkg_version[] = {
- "1.0.0",
- "1.2.0",
- "0.1.0"
- };
-
- const char* old_rw_pkgid[] = {
- "org.tizen.alarm"
- };
-
- const char* old_rw_pkg_type[] = {
- "tpk"
- };
-
- const char* old_rw_pkg_version[] = {
- "1.5.0",
- };
-
EXPECT_CALL(GetMock<PkgMgrInfoMock>(),
pkgmgrinfo_pkginfo_get_pkgid(_, _))
.WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_ro_pkgid[0])), Return(0)))
- .WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_ro_pkgid[1])), Return(0)))
- .WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_ro_pkgid[2])), Return(0)))
+ const_cast<char*>(ro_pkg_id)), Return(0)))
.WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_rw_pkgid[0])), Return(0)));
+ const_cast<char*>(rw_pkg_id)), Return(0)));
EXPECT_CALL(GetMock<PkgMgrInfoMock>(),
pkgmgrinfo_pkginfo_get_type(_, _))
.WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_ro_pkg_type[0])), Return(0)))
+ const_cast<char*>(ro_pkg_type)), Return(0)))
.WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_ro_pkg_type[1])), Return(0)))
- .WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_ro_pkg_type[2])), Return(0)))
- .WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_rw_pkg_type[0])), Return(0)));
+ const_cast<char*>(rw_pkg_type)), Return(0)));
EXPECT_CALL(GetMock<PkgMgrInfoMock>(),
pkgmgrinfo_pkginfo_get_version(_, _))
.WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_ro_pkg_version[0])), Return(0)))
- .WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_ro_pkg_version[1])), Return(0)))
- .WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_ro_pkg_version[2])), Return(0)))
+ const_cast<char*>(ro_pkg_version)), Return(0)))
.WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_rw_pkg_version[0])), Return(0)));
+ const_cast<char*>(rw_pkg_version)), Return(0)));
EXPECT_CALL(GetMock<PkgMgrInfoMock>(), pkgmgrinfo_pkginfo_filter_destroy(_))
.WillRepeatedly(Return(0));
finder_.SetPreloadRwListPath("./tests/unit_tests/pkg_upgrade/data/rw/list.txt");
}
- virtual void TearDown() {
- }
-
PkgFinder finder_;
};
TEST_F(PkgFinderTest, PkgFinder) {
- finder_.Find();
+ SetOldPkgInfo("org.tizen.alarm", "tpk", "1.0.0", // RO
+ "org.test.test1", "wgt", "1.0.0"); // RW
- EXPECT_EQ(finder_.GetOldPkgs().size(), 4);
- EXPECT_EQ(finder_.GetNewPkgs().size(), 5);
+ finder_.Find();
+ EXPECT_EQ(finder_.GetOldPkgs().size(), 2);
+ EXPECT_EQ(finder_.GetNewPkgs().size(), 2);
}
TEST_F(PkgFinderTest, PkgUpgraderFactory) {
PkgUpgraderFactory factory;
- auto list = factory.MakeList(&finder_);
+ SetOldPkgInfo("org.tizen.alarm", "tpk", "1.0.0", // RO
+ "org.test.test1", "wgt", "1.0.0"); // RW
- EXPECT_EQ(list.size(), 6);
+ auto list = factory.MakeList(&finder_);
+ EXPECT_EQ(list.size(), 2);
}
class PkgUpgraderTest : public PkgFinderTest {
void SetUp() override {
PkgFinderTest::SetUp();
EXPECT_CALL(GetMock<OsMock>(), fork())
- .WillRepeatedly(Return(1));
+ .WillRepeatedly(Return(0));
EXPECT_CALL(GetMock<OsMock>(), waitpid(_, _, _))
.WillRepeatedly(DoAll(SetArgPointee<1>(0), Return(1)));
EXPECT_CALL(GetMock<OsMock>(), fchown(_, _, _))
void TearDown() override {
PkgFinderTest::TearDown();
}
+
+ std::string GetCmd(char* const argv[]) {
+ std::string cmd;
+ for (int i = 0; argv[i] != nullptr; i++) {
+ if (i > 0)
+ cmd += " ";
+ cmd += argv[i];
+ }
+ return cmd;
+ }
};
-TEST_F(PkgUpgraderTest, Upgrader) {
+TEST_F(PkgUpgraderTest, Upgrader_RO2RO_RW2RW_HIGH_VERSION) {
Upgrader upgrader;
-
upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ std::vector<std::string> cmds;
+ SetOldPkgInfo("org.tizen.alarm", "tpk", "1.0.0", // RO
+ "org.tizen.new_rw", "tpk", "1.0.0"); // RW
+ // New pkg : org.tizen.alarm 2.0.0 (ro), org.tizen.new_rw 1.2.0 (rw)
+
+ EXPECT_CALL(GetMock<OsMock>(),
+ execvp(_, _))
+ .WillRepeatedly(
+ Invoke([&](const char* file, char* const argv[]) -> int {
+ std::string cmd = GetCmd(argv);
+ cmds.push_back(std::move(cmd));
+ return 0;
+ })
+ );
+
ASSERT_TRUE(upgrader.Process(&finder_));
+ const auto& success = upgrader.GetSuccessList();
+ const auto& failure = upgrader.GetFailureList();
+
+ EXPECT_EQ(success.size(), 2); //RO2RO, RW2RW
+ EXPECT_EQ(failure.size(), 0);
+ EXPECT_EQ(cmds.size(), 5);
+ EXPECT_EQ(cmds[0], "/usr/bin/tpk-backend --preload -y org.tizen.alarm"
+ " --partial-rw --skip-check-reference");
+ EXPECT_EQ(cmds[1], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/share/packages/org.tizen.new_rw.xml -d /");
+ EXPECT_EQ(cmds[2], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/usr/globalapps/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[3], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/etc/skel/apps_rw/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[4], "/usr/bin/tpk-backend -y org.tizen.new_rw --preload-rw "
+ "--skip-check-reference");
+}
+TEST_F(PkgUpgraderTest, Upgrader_RO2RO_RW2RW_SAME_VERSION) {
+ Upgrader upgrader;
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ std::vector<std::string> cmds;
+ SetOldPkgInfo("org.tizen.alarm", "tpk", "2.0.0", // RO
+ "org.tizen.new_rw", "tpk", "1.2.0"); // RW
+ // New pkg : org.tizen.alarm 2.0.0 (ro), org.tizen.new_rw 1.2.0 (rw)
+
+ EXPECT_CALL(GetMock<OsMock>(),
+ execvp(_, _))
+ .WillRepeatedly(
+ Invoke([&](const char* file, char* const argv[]) -> int {
+ std::string cmd = GetCmd(argv);
+ cmds.push_back(std::move(cmd));
+ return 0;
+ })
+ );
+
+ ASSERT_TRUE(upgrader.Process(&finder_));
const auto& success = upgrader.GetSuccessList();
const auto& failure = upgrader.GetFailureList();
- EXPECT_EQ(success.size(), 6);
+ EXPECT_EQ(success.size(), 2); //RO2RO, RW2RW
EXPECT_EQ(failure.size(), 0);
+ EXPECT_EQ(cmds.size(), 0);
+}
+
+TEST_F(PkgUpgraderTest, Upgrader_RO2RO_RW2RW_LOW_VERSION) {
+ Upgrader upgrader;
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ std::vector<std::string> cmds;
+ SetOldPkgInfo("org.tizen.alarm", "tpk", "2.5.0", // RO
+ "org.tizen.new_rw", "tpk", "2.0.0"); // RW
+ // New pkg : org.tizen.alarm 2.0.0 (ro), org.tizen.new_rw 1.2.0 (rw)
+
+ EXPECT_CALL(GetMock<OsMock>(),
+ execvp(_, _))
+ .WillRepeatedly(
+ Invoke([&](const char* file, char* const argv[]) -> int {
+ std::string cmd = GetCmd(argv);
+ cmds.push_back(std::move(cmd));
+ return 0;
+ })
+ );
+
+ ASSERT_TRUE(upgrader.Process(&finder_));
+
+ EXPECT_EQ(cmds.size(), 5);
+ EXPECT_EQ(cmds[0], "/usr/bin/tpk-backend --preload -y org.tizen.alarm"
+ " --partial-rw --skip-check-reference");
+ EXPECT_EQ(cmds[1], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/share/packages/org.tizen.new_rw.xml -d /");
+ EXPECT_EQ(cmds[2], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/usr/globalapps/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[3], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/etc/skel/apps_rw/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[4], "/usr/bin/tpk-backend -y org.tizen.new_rw --preload-rw "
+ "--skip-check-reference");
+}
+
+TEST_F(PkgUpgraderTest, Upgrader_RO_REMOVE) {
+ Upgrader upgrader;
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ std::vector<std::string> cmds;
+ SetOldPkgInfo("org.test.del", "tpk", "1.0.0", // RO
+ "org.tizen.new_rw", "tpk", "1.2.0"); // RW
+ // New pkg : org.tizen.alarm 2.0.0 (ro), org.tizen.new_rw 1.2.0 (rw)
+
+ EXPECT_CALL(GetMock<OsMock>(),
+ execvp(_, _))
+ .WillRepeatedly(
+ Invoke([&](const char* file, char* const argv[]) -> int {
+ std::string cmd = GetCmd(argv);
+ cmds.push_back(std::move(cmd));
+ return 0;
+ })
+ );
+
+ ASSERT_TRUE(upgrader.Process(&finder_));
+ EXPECT_EQ(cmds.size(), 2);
+ EXPECT_EQ(cmds[0], "/usr/bin/tpk-backend --preload -y org.tizen.alarm "
+ "--partial-rw --skip-check-reference");
+ EXPECT_EQ(cmds[1], "/usr/bin/tpk-backend --preload -d org.test.del "
+ "--force-remove --partial-rw");
+}
+
+TEST_F(PkgUpgraderTest, Upgrader_RW_DO_NOT_REMOVE) {
+ Upgrader upgrader;
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ std::vector<std::string> cmds;
+ SetOldPkgInfo("org.tizen.alarm", "tpk", "2.0.0", // RO
+ "org.test.don'tDel", "tpk", "1.0.0"); // RW
+ // New pkg : org.tizen.alarm 2.0.0 (ro), org.tizen.new_rw 1.2.0 (rw)
+
+ EXPECT_CALL(GetMock<OsMock>(),
+ execvp(_, _))
+ .WillRepeatedly(
+ Invoke([&](const char* file, char* const argv[]) -> int {
+ std::string cmd = GetCmd(argv);
+ cmds.push_back(std::move(cmd));
+ return 0;
+ })
+ );
+
+ ASSERT_TRUE(upgrader.Process(&finder_));
+ EXPECT_EQ(cmds.size(), 4);
+ EXPECT_EQ(cmds[0], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/share/packages/org.tizen.new_rw.xml -d /");
+ EXPECT_EQ(cmds[1], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/usr/globalapps/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[2], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/etc/skel/apps_rw/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[3], "/usr/bin/tpk-backend -y org.tizen.new_rw --preload-rw "
+ "--skip-check-reference");
+}
+
+TEST_F(PkgUpgraderTest, Upgrader_RW2RO_HIGH_VERSION) {
+ Upgrader upgrader;
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ std::vector<std::string> cmds;
+ SetOldPkgInfo("org.tizen.test", "tpk", "1.0.0", // RO
+ "org.tizen.alarm", "tpk", "1.5.0"); // RW
+ // New pkg : org.tizen.alarm 2.0.0 (ro), org.tizen.new_rw 1.2.0 (rw)
+
+ EXPECT_CALL(GetMock<OsMock>(),
+ execvp(_, _))
+ .WillRepeatedly(
+ Invoke([&](const char* file, char* const argv[]) -> int {
+ std::string cmd = GetCmd(argv);
+ cmds.push_back(std::move(cmd));
+ return 0;
+ })
+ );
+
+ ASSERT_TRUE(upgrader.Process(&finder_));
+
+ EXPECT_EQ(cmds.size(), 6);
+ EXPECT_EQ(cmds[0], "/usr/bin/tpk-backend -d org.tizen.alarm "
+ "--keep-rwdata");
+ EXPECT_EQ(cmds[1], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/share/packages/org.tizen.new_rw.xml -d /");
+ EXPECT_EQ(cmds[2], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/usr/globalapps/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[3], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/etc/skel/apps_rw/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[4], "/usr/bin/tpk-backend -y org.tizen.new_rw --preload-rw "
+ "--skip-check-reference");
+ EXPECT_EQ(cmds[5], "/usr/bin/tpk-backend --preload -d org.tizen.test "
+ "--force-remove --partial-rw");
+}
+
+TEST_F(PkgUpgraderTest, Upgrader_RW2RO_LOW_VERSION) {
+ Upgrader upgrader;
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ std::vector<std::string> cmds;
+ SetOldPkgInfo("org.tizen.test", "tpk", "1.0.0", // RO
+ "org.tizen.alarm", "tpk", "2.5.0"); // RW
+ // New pkg : org.tizen.alarm 2.0.0 (ro), org.tizen.new_rw 1.2.0 (rw)
+
+ EXPECT_CALL(GetMock<OsMock>(),
+ execvp(_, _))
+ .WillRepeatedly(
+ Invoke([&](const char* file, char* const argv[]) -> int {
+ std::string cmd = GetCmd(argv);
+ cmds.push_back(std::move(cmd));
+ return 0;
+ })
+ );
+
+ ASSERT_TRUE(upgrader.Process(&finder_));
+
+ EXPECT_EQ(cmds.size(), 5);
+ EXPECT_EQ(cmds[0], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/share/packages/org.tizen.new_rw.xml -d /");
+ EXPECT_EQ(cmds[1], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/usr/globalapps/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[2], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/etc/skel/apps_rw/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[3], "/usr/bin/tpk-backend -y org.tizen.new_rw --preload-rw "
+ "--skip-check-reference");
+ EXPECT_EQ(cmds[4], "/usr/bin/tpk-backend --preload -d org.tizen.test "
+ "--force-remove --partial-rw");
+}
+
+TEST_F(PkgUpgraderTest, Upgrader_RW2RO_SAME_VERSION) {
+ Upgrader upgrader;
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ std::vector<std::string> cmds;
+ SetOldPkgInfo("org.tizen.test", "tpk", "1.0.0", // RO
+ "org.tizen.alarm", "tpk", "2.0.0"); // RW
+ // New pkg : org.tizen.alarm 2.0.0 (ro), org.tizen.new_rw 1.2.0 (rw)
+
+ EXPECT_CALL(GetMock<OsMock>(),
+ execvp(_, _))
+ .WillRepeatedly(
+ Invoke([&](const char* file, char* const argv[]) -> int {
+ std::string cmd = GetCmd(argv);
+ cmds.push_back(std::move(cmd));
+ return 0;
+ })
+ );
+
+ ASSERT_TRUE(upgrader.Process(&finder_));
+
+ EXPECT_EQ(cmds.size(), 6);
+ EXPECT_EQ(cmds[0], "/usr/bin/tpk-backend -d org.tizen.alarm "
+ "--keep-rwdata");
+ EXPECT_EQ(cmds[1], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/share/packages/org.tizen.new_rw.xml -d /");
+ EXPECT_EQ(cmds[2], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/usr/globalapps/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[3], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/etc/skel/apps_rw/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[4], "/usr/bin/tpk-backend -y org.tizen.new_rw --preload-rw "
+ "--skip-check-reference");
+ EXPECT_EQ(cmds[5], "/usr/bin/tpk-backend --preload -d org.tizen.test "
+ "--force-remove --partial-rw");
+}
+
+TEST_F(PkgUpgraderTest, Upgrader_RO2RW_HIGH_VERSION) {
+ Upgrader upgrader;
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ std::vector<std::string> cmds;
+ SetOldPkgInfo("org.tizen.new_rw", "tpk", "1.0.0", // RO
+ "org.tizen.alarm", "tpk", "2.0.0"); // RW
+ // New pkg : org.tizen.alarm 2.0.0 (ro), org.tizen.new_rw 1.2.0 (rw)
+
+ EXPECT_CALL(GetMock<OsMock>(),
+ execvp(_, _))
+ .WillRepeatedly(
+ Invoke([&](const char* file, char* const argv[]) -> int {
+ std::string cmd = GetCmd(argv);
+ cmds.push_back(std::move(cmd));
+ return 0;
+ })
+ );
+
+ ASSERT_TRUE(upgrader.Process(&finder_));
+
+ EXPECT_EQ(cmds.size(), 6);
+ EXPECT_EQ(cmds[0], "/usr/bin/tpk-backend -d org.tizen.alarm "
+ "--keep-rwdata");
+ EXPECT_EQ(cmds[1], "/usr/bin/tpk-backend --preload -d org.tizen.new_rw "
+ "--force-remove --keep-rwdata");
+ EXPECT_EQ(cmds[2], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/share/packages/org.tizen.new_rw.xml -d /");
+ EXPECT_EQ(cmds[3], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/usr/globalapps/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[4], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/etc/skel/apps_rw/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[5], "/usr/bin/tpk-backend -y org.tizen.new_rw --preload-rw "
+ "--skip-check-reference");
+}
+
+TEST_F(PkgUpgraderTest, Upgrader_RO2RW_LOW_VERSION) {
+ Upgrader upgrader;
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ std::vector<std::string> cmds;
+ SetOldPkgInfo("org.tizen.new_rw", "tpk", "2.0.0", // RO
+ "org.tizen.alarm", "tpk", "2.0.0"); // RW
+ // New pkg : org.tizen.alarm 2.0.0 (ro), org.tizen.new_rw 1.2.0 (rw)
+
+ EXPECT_CALL(GetMock<OsMock>(),
+ execvp(_, _))
+ .WillRepeatedly(
+ Invoke([&](const char* file, char* const argv[]) -> int {
+ std::string cmd = GetCmd(argv);
+ cmds.push_back(std::move(cmd));
+ return 0;
+ })
+ );
+
+ ASSERT_TRUE(upgrader.Process(&finder_));
+
+ EXPECT_EQ(cmds.size(), 6);
+ EXPECT_EQ(cmds[0], "/usr/bin/tpk-backend -d org.tizen.alarm "
+ "--keep-rwdata");
+ EXPECT_EQ(cmds[1], "/usr/bin/tpk-backend --preload -d org.tizen.new_rw "
+ "--force-remove --keep-rwdata");
+ EXPECT_EQ(cmds[2], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/share/packages/org.tizen.new_rw.xml -d /");
+ EXPECT_EQ(cmds[3], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/usr/globalapps/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[4], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/etc/skel/apps_rw/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[5], "/usr/bin/tpk-backend -y org.tizen.new_rw --preload-rw "
+ "--skip-check-reference");
+}
+
+TEST_F(PkgUpgraderTest, Upgrader_RO2RW_SAME_VERSION) {
+ Upgrader upgrader;
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ std::vector<std::string> cmds;
+ SetOldPkgInfo("org.tizen.new_rw", "tpk", "1.2.0", // RO
+ "org.tizen.alarm", "tpk", "2.0.0"); // RW
+ // New pkg : org.tizen.alarm 2.0.0 (ro), org.tizen.new_rw 1.2.0 (rw)
+
+ EXPECT_CALL(GetMock<OsMock>(),
+ execvp(_, _))
+ .WillRepeatedly(
+ Invoke([&](const char* file, char* const argv[]) -> int {
+ std::string cmd = GetCmd(argv);
+ cmds.push_back(std::move(cmd));
+ return 0;
+ })
+ );
+
+ ASSERT_TRUE(upgrader.Process(&finder_));
+
+ EXPECT_EQ(cmds.size(), 6);
+ EXPECT_EQ(cmds[0], "/usr/bin/tpk-backend -d org.tizen.alarm --keep-rwdata");
+ EXPECT_EQ(cmds[1], "/usr/bin/tpk-backend --preload -d org.tizen.new_rw "
+ "--force-remove --keep-rwdata");
+ EXPECT_EQ(cmds[2], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/share/packages/org.tizen.new_rw.xml -d /");
+ EXPECT_EQ(cmds[3], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/usr/globalapps/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[4], "/usr/bin/unzip -oXqq /usr/system/RestoreDir/opt.zip "
+ "opt/etc/skel/apps_rw/org.tizen.new_rw/* -d /");
+ EXPECT_EQ(cmds[5], "/usr/bin/tpk-backend -y org.tizen.new_rw --preload-rw "
+ "--skip-check-reference");
}
TEST_F(PkgUpgraderTest, Upgrader_db_bck) {