-CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
-PROJECT(pkgmgr-tool_unittests C CXX)
-
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(pkgmgr-tool_unittests REQUIRED
- dlog
- gmock
- pkgmgr-parser
- pkgmgr-info
- libtzplatform-config
- libsmack
- sqlite3
-)
-
-FOREACH(flag ${pkgmgr-tool_unittests_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -Wall -Werror -fPIE")
-
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -std=c++14")
-SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
-SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
-
-ADD_DEFINITIONS("-DDB_PATH=\"${DB_PATH}\"")
-
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../src/pkg_upgrade/include)
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/..)
-
-AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SOURCES)
-AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/../../src/pkg_upgrade/src LIB_SOURCES)
-LIST(REMOVE_ITEM LIB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../../src/pkg_upgrade/src/main.cc)
-AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/../mock MOCK_SOURCES)
-
-ADD_EXECUTABLE(${PROJECT_NAME}
- ${SOURCES}
- ${MOCK_SOURCES}
- ${LIB_SOURCES}
-)
-
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS}")
-TARGET_LINK_LIBRARIES(${PROJECT_NAME}
- ${pkgmgr-tool_unittests_LDFLAGS}
-)
-
-INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/bin/)
-INSTALL(DIRECTORY data/ DESTINATION ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/data)
+ADD_SUBDIRECTORY(pkg_upgrade)
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<manifest xmlns="http://tizen.org/ns/packages" api-version="4.0" package="org.tizen.alarm" version="2.0.0" type="tpk" readonly="true" preload="true" removable="false">
- <profile name="wearable"/>
- <ui-application appid="org.tizen.alarm" exec="/usr/apps/org.tizen.alarm/bin/alarm-app" hw-acceleration="on" multiple="false" nodisplay="false" taskmanage="true" type="capp">
- <label>Alarm</label>
- <label xml:lang="ar-ae">تنبيه</label>
- <label xml:lang="az-az">Siqnal</label>
- <label xml:lang="bg-bg">Аларма</label>
- <label xml:lang="ca-es">Alarma</label>
- <label xml:lang="cs-cz">Upozornění</label>
- <label xml:lang="da-dk">Alarm</label>
- <label xml:lang="de-de">Alarm</label>
- <label xml:lang="el-gr">Ξυπνητήρι</label>
- <label xml:lang="en-gb">Alarm</label>
- <label xml:lang="en-ph">Alarm</label>
- <label xml:lang="en-us">Alarm</label>
- <label xml:lang="es-es">Alarma</label>
- <label xml:lang="es-mx">Alarma</label>
- <label xml:lang="et-ee">Märguanne</label>
- <label xml:lang="eu-es">Alarma</label>
- <label xml:lang="fi-fi">Hälytys</label>
- <label xml:lang="fr-ca">Alarme</label>
- <label xml:lang="fr-fr">Alarme</label>
- <label xml:lang="ga-ie">Aláram</label>
- <label xml:lang="gl-es">Alarma</label>
- <label xml:lang="hr-hr">Alarm</label>
- <label xml:lang="hu-hu">Jelzés</label>
- <label xml:lang="hy-am">Տագնապ</label>
- <label xml:lang="is-is">Vekjari</label>
- <label xml:lang="it-it">Sveglia</label>
- <label xml:lang="ja-jp">アラーム</label>
- <label xml:lang="ka-ge">სიგნალი</label>
- <label xml:lang="kk-kz">Оятар</label>
- <label xml:lang="ko-kr">알람</label>
- <label xml:lang="lt-lt">Signalas</label>
- <label xml:lang="lv-lv">Signāls</label>
- <label xml:lang="mk-mk">Аларм</label>
- <label xml:lang="nb-no">Alarm</label>
- <label xml:lang="nl-nl">Alarm</label>
- <label xml:lang="pl-pl">Alarm</label>
- <label xml:lang="pt-br">Alarme</label>
- <label xml:lang="pt-pt">Alarme</label>
- <label xml:lang="ro-ro">Alarmă</label>
- <label xml:lang="ru-ru">Будильник</label>
- <label xml:lang="sk-sk">Budík</label>
- <label xml:lang="sl-si">Alarm</label>
- <label xml:lang="sr-rs">Beleška</label>
- <label xml:lang="sv-se">Alarm</label>
- <label xml:lang="tr-tr">Alarm</label>
- <label xml:lang="uk-ua">Будильник</label>
- <label xml:lang="uz-uz">Uyg‘otgich</label>
- <label xml:lang="zh-cn">闹钟</label>
- <label xml:lang="zh-hk">鬧鐘</label>
- <label xml:lang="zh-tw">鬧鐘</label>
- <icon>org.tizen.alarm.png</icon>
- </ui-application>
- <ui-application appid="org.tizen.alarm.app-control" exec="/usr/apps/org.tizen.alarm/bin/alarm-app" hw-acceleration="on" multiple="true" nodisplay="true" taskmanage="false" type="capp">
- <label>Alarm</label>
- <label xml:lang="ar-ae">تنبيه</label>
- <label xml:lang="az-az">Siqnal</label>
- <label xml:lang="bg-bg">Аларма</label>
- <label xml:lang="ca-es">Alarma</label>
- <label xml:lang="cs-cz">Upozornění</label>
- <label xml:lang="da-dk">Alarm</label>
- <label xml:lang="de-de">Alarm</label>
- <label xml:lang="el-gr">Ξυπνητήρι</label>
- <label xml:lang="en-gb">Alarm</label>
- <label xml:lang="en-ph">Alarm</label>
- <label xml:lang="en-us">Alarm</label>
- <label xml:lang="es-es">Alarma</label>
- <label xml:lang="es-mx">Alarma</label>
- <label xml:lang="et-ee">Märguanne</label>
- <label xml:lang="eu-es">Alarma</label>
- <label xml:lang="fi-fi">Hälytys</label>
- <label xml:lang="fr-ca">Alarme</label>
- <label xml:lang="fr-fr">Alarme</label>
- <label xml:lang="ga-ie">Aláram</label>
- <label xml:lang="gl-es">Alarma</label>
- <label xml:lang="hr-hr">Alarm</label>
- <label xml:lang="hu-hu">Jelzés</label>
- <label xml:lang="hy-am">Տագնապ</label>
- <label xml:lang="is-is">Vekjari</label>
- <label xml:lang="it-it">Sveglia</label>
- <label xml:lang="ja-jp">アラーム</label>
- <label xml:lang="ka-ge">სიგნალი</label>
- <label xml:lang="kk-kz">Оятар</label>
- <label xml:lang="ko-kr">알람</label>
- <label xml:lang="lt-lt">Signalas</label>
- <label xml:lang="lv-lv">Signāls</label>
- <label xml:lang="mk-mk">Аларм</label>
- <label xml:lang="nb-no">Alarm</label>
- <label xml:lang="nl-nl">Alarm</label>
- <label xml:lang="pl-pl">Alarm</label>
- <label xml:lang="pt-br">Alarme</label>
- <label xml:lang="pt-pt">Alarme</label>
- <label xml:lang="ro-ro">Alarmă</label>
- <label xml:lang="ru-ru">Будильник</label>
- <label xml:lang="sk-sk">Budík</label>
- <label xml:lang="sl-si">Alarm</label>
- <label xml:lang="sr-rs">Beleška</label>
- <label xml:lang="sv-se">Alarm</label>
- <label xml:lang="tr-tr">Alarm</label>
- <label xml:lang="uk-ua">Будильник</label>
- <label xml:lang="uz-uz">Uyg‘otgich</label>
- <label xml:lang="zh-cn">闹钟</label>
- <label xml:lang="zh-hk">鬧鐘</label>
- <label xml:lang="zh-tw">鬧鐘</label>
- <icon>org.tizen.alarm.png</icon>
- <app-control>
- <operation name="http://tizen.org/appcontrol/operation/add"/>
- <mime name="application/vnd.tizen.alarm"/>
- </app-control>
- <app-control>
- <operation name="http://tizen.org/appcontrol/operation/pick"/>
- <mime name="application/vnd.tizen.alarm"/>
- </app-control>
- <app-control>
- <operation name="http://tizen.org/appcontrol/operation/edit"/>
- <mime name="application/vnd.tizen.alarm"/>
- </app-control>
- </ui-application>
- <ui-application appid="org.tizen.alarm.alert" exec="/usr/apps/org.tizen.alarm/bin/alarm-app" hw-acceleration="on" multiple="false" nodisplay="true" taskmanage="false" type="capp">
- <label>Alarm</label>
- <label xml:lang="ar-ae">تنبيه</label>
- <label xml:lang="az-az">Siqnal</label>
- <label xml:lang="bg-bg">Аларма</label>
- <label xml:lang="ca-es">Alarma</label>
- <label xml:lang="cs-cz">Upozornění</label>
- <label xml:lang="da-dk">Alarm</label>
- <label xml:lang="de-de">Alarm</label>
- <label xml:lang="el-gr">Ξυπνητήρι</label>
- <label xml:lang="en-gb">Alarm</label>
- <label xml:lang="en-ph">Alarm</label>
- <label xml:lang="en-us">Alarm</label>
- <label xml:lang="es-es">Alarma</label>
- <label xml:lang="es-mx">Alarma</label>
- <label xml:lang="et-ee">Märguanne</label>
- <label xml:lang="eu-es">Alarma</label>
- <label xml:lang="fi-fi">Hälytys</label>
- <label xml:lang="fr-ca">Alarme</label>
- <label xml:lang="fr-fr">Alarme</label>
- <label xml:lang="ga-ie">Aláram</label>
- <label xml:lang="gl-es">Alarma</label>
- <label xml:lang="hr-hr">Alarm</label>
- <label xml:lang="hu-hu">Jelzés</label>
- <label xml:lang="hy-am">Տագնապ</label>
- <label xml:lang="is-is">Vekjari</label>
- <label xml:lang="it-it">Sveglia</label>
- <label xml:lang="ja-jp">アラーム</label>
- <label xml:lang="ka-ge">სიგნალი</label>
- <label xml:lang="kk-kz">Оятар</label>
- <label xml:lang="ko-kr">알람</label>
- <label xml:lang="lt-lt">Signalas</label>
- <label xml:lang="lv-lv">Signāls</label>
- <label xml:lang="mk-mk">Аларм</label>
- <label xml:lang="nb-no">Alarm</label>
- <label xml:lang="nl-nl">Alarm</label>
- <label xml:lang="pl-pl">Alarm</label>
- <label xml:lang="pt-br">Alarme</label>
- <label xml:lang="pt-pt">Alarme</label>
- <label xml:lang="ro-ro">Alarmă</label>
- <label xml:lang="ru-ru">Будильник</label>
- <label xml:lang="sk-sk">Budík</label>
- <label xml:lang="sl-si">Alarm</label>
- <label xml:lang="sr-rs">Beleška</label>
- <label xml:lang="sv-se">Alarm</label>
- <label xml:lang="tr-tr">Alarm</label>
- <label xml:lang="uk-ua">Будильник</label>
- <label xml:lang="uz-uz">Uyg‘otgich</label>
- <label xml:lang="zh-cn">闹钟</label>
- <label xml:lang="zh-hk">鬧鐘</label>
- <label xml:lang="zh-tw">鬧鐘</label>
- <icon>org.tizen.alarm.png</icon>
- </ui-application>
- <privileges>
- <privilege>http://tizen.org/privilege/haptic</privilege>
- <privilege>http://tizen.org/privilege/datasharing</privilege>
- <privilege>http://tizen.org/privilege/display</privilege>
- <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
- <privilege>http://tizen.org/privilege/alarm.get</privilege>
- <privilege>http://tizen.org/privilege/alarm.set</privilege>
- </privileges>
- <service-application appid="org.tizen.alarm.svc" exec="/usr/apps/org.tizen.alarm/bin/alarm-svc" multiple="false" nodisplay="true" taskmanage="false" type="capp">
- <label>Alarm Service</label>
- <icon>org.tizen.alarm.png</icon>
- <datacontrol access="ReadWrite" providerid="http://alarm.tizen.org/datacontrol/provider/alarm" type="Sql"/>
- </service-application>
- <widget-application appid="org.tizen.alarm.widget" exec="/usr/apps/org.tizen.alarm/bin/alarm-widget" main="true" update-period="0">
- <label>Alarm</label>
- <icon>org.tizen.alarm.png</icon>
- <support-size preview="alarm_widget_preview.png">2x2</support-size>
- </widget-application>
-</manifest>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.app-selector" version="0.1.9" api-version="3.0" install-location="internal-only" type="tpk" readonly="true" preload="true" removable="false">
- <label>Application Selection Popup</label>
- <description>Application Selection Popup</description>
- <ui-application appid="org.tizen.app-selector" exec="/usr/apps/org.tizen.app-selector/bin/app-selector" nodisplay="true" multiple="false" type="capp" taskmanage="false" hw-acceleration="on" launch_mode="group">
- <label>Application Selection Popup</label>
- </ui-application>
- <privileges>
- <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
- <privilege>http://tizen.org/privilege/mediastorage</privilege>
- <privilege>http://tizen.org/privilege/externalstorage</privilege>
- </privileges>
-</manifest>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.bluetooth" api-version="3.0" version="2.0.25" install-location="internal-only" type="rpm" preload="true" readonly="true" removable="false">
- <label>iW bluetooth</label>
- <author email="insung.cho@samsung.com" href="www.samsung.com">Insung Cho</author>
- <description>W bluetooth</description>
- <ui-application appid="org.tizen.bluetooth" exec="/usr/apps/org.tizen.bluetooth/bin/bluetooth" nodisplay="true" multiple="false" type="capp" taskmanage="false" launch_mode="group">
- <icon/>
- <label>Bluetooth application</label>
- <label xml:lang="en-us">Bluetooth application</label>
- <app-control>
- <operation name="http://tizen.org/appcontrol/operation/edit"/>
- <mime name="application/x-bluetooth-on-off"/>
- <mime name="application/x-bluetooth-visibility"/>
- </app-control>
- </ui-application>
- <privileges>
- <privilege>http://tizen.org/privilege/bluetooth</privilege>
- <privilege>http://tizen.org/privilege/bluetooth.admin</privilege>
- </privileges>
-</manifest>
+++ /dev/null
-"package=org.tizen.new_rw":"version=1.2.0":"type=tpk":"removable=false"
-"package=org.test.pkg2":"version=1.2.0":"type=wgt":"removable=true"
--- /dev/null
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
+PROJECT(pkgmgr-tool_unittests C CXX)
+
+INCLUDE(FindPkgConfig)
+PKG_CHECK_MODULES(pkgmgr-tool_unittests REQUIRED
+ dlog
+ gmock
+ pkgmgr-parser
+ pkgmgr-info
+ libtzplatform-config
+ libsmack
+ sqlite3
+)
+
+FOREACH(flag ${pkgmgr-tool_unittests_CFLAGS})
+ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -Wall -Werror -fPIE")
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -std=c++14")
+SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
+
+ADD_DEFINITIONS("-DDB_PATH=\"${DB_PATH}\"")
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../../src/pkg_upgrade/include)
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../../)
+
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SOURCES)
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/../../../src/pkg_upgrade/src LIB_SOURCES)
+LIST(REMOVE_ITEM LIB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/pkg_upgrade/src/main.cc)
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/../../mock MOCK_SOURCES)
+
+ADD_EXECUTABLE(${PROJECT_NAME}
+ ${SOURCES}
+ ${MOCK_SOURCES}
+ ${LIB_SOURCES}
+)
+
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS}")
+TARGET_LINK_LIBRARIES(${PROJECT_NAME}
+ ${pkgmgr-tool_unittests_LDFLAGS}
+)
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/bin/)
+INSTALL(DIRECTORY data/ DESTINATION ${CMAKE_INSTALL_PREFIX}/share/${PROJECT_NAME}/data)
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="4.0" package="org.tizen.alarm" version="2.0.0" type="tpk" readonly="true" preload="true" removable="false">
+ <profile name="wearable"/>
+ <ui-application appid="org.tizen.alarm" exec="/usr/apps/org.tizen.alarm/bin/alarm-app" hw-acceleration="on" multiple="false" nodisplay="false" taskmanage="true" type="capp">
+ <label>Alarm</label>
+ <label xml:lang="ar-ae">تنبيه</label>
+ <label xml:lang="az-az">Siqnal</label>
+ <label xml:lang="bg-bg">Аларма</label>
+ <label xml:lang="ca-es">Alarma</label>
+ <label xml:lang="cs-cz">Upozornění</label>
+ <label xml:lang="da-dk">Alarm</label>
+ <label xml:lang="de-de">Alarm</label>
+ <label xml:lang="el-gr">Ξυπνητήρι</label>
+ <label xml:lang="en-gb">Alarm</label>
+ <label xml:lang="en-ph">Alarm</label>
+ <label xml:lang="en-us">Alarm</label>
+ <label xml:lang="es-es">Alarma</label>
+ <label xml:lang="es-mx">Alarma</label>
+ <label xml:lang="et-ee">Märguanne</label>
+ <label xml:lang="eu-es">Alarma</label>
+ <label xml:lang="fi-fi">Hälytys</label>
+ <label xml:lang="fr-ca">Alarme</label>
+ <label xml:lang="fr-fr">Alarme</label>
+ <label xml:lang="ga-ie">Aláram</label>
+ <label xml:lang="gl-es">Alarma</label>
+ <label xml:lang="hr-hr">Alarm</label>
+ <label xml:lang="hu-hu">Jelzés</label>
+ <label xml:lang="hy-am">Տագնապ</label>
+ <label xml:lang="is-is">Vekjari</label>
+ <label xml:lang="it-it">Sveglia</label>
+ <label xml:lang="ja-jp">アラーム</label>
+ <label xml:lang="ka-ge">სიგნალი</label>
+ <label xml:lang="kk-kz">Оятар</label>
+ <label xml:lang="ko-kr">알람</label>
+ <label xml:lang="lt-lt">Signalas</label>
+ <label xml:lang="lv-lv">Signāls</label>
+ <label xml:lang="mk-mk">Аларм</label>
+ <label xml:lang="nb-no">Alarm</label>
+ <label xml:lang="nl-nl">Alarm</label>
+ <label xml:lang="pl-pl">Alarm</label>
+ <label xml:lang="pt-br">Alarme</label>
+ <label xml:lang="pt-pt">Alarme</label>
+ <label xml:lang="ro-ro">Alarmă</label>
+ <label xml:lang="ru-ru">Будильник</label>
+ <label xml:lang="sk-sk">Budík</label>
+ <label xml:lang="sl-si">Alarm</label>
+ <label xml:lang="sr-rs">Beleška</label>
+ <label xml:lang="sv-se">Alarm</label>
+ <label xml:lang="tr-tr">Alarm</label>
+ <label xml:lang="uk-ua">Будильник</label>
+ <label xml:lang="uz-uz">Uyg‘otgich</label>
+ <label xml:lang="zh-cn">闹钟</label>
+ <label xml:lang="zh-hk">鬧鐘</label>
+ <label xml:lang="zh-tw">鬧鐘</label>
+ <icon>org.tizen.alarm.png</icon>
+ </ui-application>
+ <ui-application appid="org.tizen.alarm.app-control" exec="/usr/apps/org.tizen.alarm/bin/alarm-app" hw-acceleration="on" multiple="true" nodisplay="true" taskmanage="false" type="capp">
+ <label>Alarm</label>
+ <label xml:lang="ar-ae">تنبيه</label>
+ <label xml:lang="az-az">Siqnal</label>
+ <label xml:lang="bg-bg">Аларма</label>
+ <label xml:lang="ca-es">Alarma</label>
+ <label xml:lang="cs-cz">Upozornění</label>
+ <label xml:lang="da-dk">Alarm</label>
+ <label xml:lang="de-de">Alarm</label>
+ <label xml:lang="el-gr">Ξυπνητήρι</label>
+ <label xml:lang="en-gb">Alarm</label>
+ <label xml:lang="en-ph">Alarm</label>
+ <label xml:lang="en-us">Alarm</label>
+ <label xml:lang="es-es">Alarma</label>
+ <label xml:lang="es-mx">Alarma</label>
+ <label xml:lang="et-ee">Märguanne</label>
+ <label xml:lang="eu-es">Alarma</label>
+ <label xml:lang="fi-fi">Hälytys</label>
+ <label xml:lang="fr-ca">Alarme</label>
+ <label xml:lang="fr-fr">Alarme</label>
+ <label xml:lang="ga-ie">Aláram</label>
+ <label xml:lang="gl-es">Alarma</label>
+ <label xml:lang="hr-hr">Alarm</label>
+ <label xml:lang="hu-hu">Jelzés</label>
+ <label xml:lang="hy-am">Տագնապ</label>
+ <label xml:lang="is-is">Vekjari</label>
+ <label xml:lang="it-it">Sveglia</label>
+ <label xml:lang="ja-jp">アラーム</label>
+ <label xml:lang="ka-ge">სიგნალი</label>
+ <label xml:lang="kk-kz">Оятар</label>
+ <label xml:lang="ko-kr">알람</label>
+ <label xml:lang="lt-lt">Signalas</label>
+ <label xml:lang="lv-lv">Signāls</label>
+ <label xml:lang="mk-mk">Аларм</label>
+ <label xml:lang="nb-no">Alarm</label>
+ <label xml:lang="nl-nl">Alarm</label>
+ <label xml:lang="pl-pl">Alarm</label>
+ <label xml:lang="pt-br">Alarme</label>
+ <label xml:lang="pt-pt">Alarme</label>
+ <label xml:lang="ro-ro">Alarmă</label>
+ <label xml:lang="ru-ru">Будильник</label>
+ <label xml:lang="sk-sk">Budík</label>
+ <label xml:lang="sl-si">Alarm</label>
+ <label xml:lang="sr-rs">Beleška</label>
+ <label xml:lang="sv-se">Alarm</label>
+ <label xml:lang="tr-tr">Alarm</label>
+ <label xml:lang="uk-ua">Будильник</label>
+ <label xml:lang="uz-uz">Uyg‘otgich</label>
+ <label xml:lang="zh-cn">闹钟</label>
+ <label xml:lang="zh-hk">鬧鐘</label>
+ <label xml:lang="zh-tw">鬧鐘</label>
+ <icon>org.tizen.alarm.png</icon>
+ <app-control>
+ <operation name="http://tizen.org/appcontrol/operation/add"/>
+ <mime name="application/vnd.tizen.alarm"/>
+ </app-control>
+ <app-control>
+ <operation name="http://tizen.org/appcontrol/operation/pick"/>
+ <mime name="application/vnd.tizen.alarm"/>
+ </app-control>
+ <app-control>
+ <operation name="http://tizen.org/appcontrol/operation/edit"/>
+ <mime name="application/vnd.tizen.alarm"/>
+ </app-control>
+ </ui-application>
+ <ui-application appid="org.tizen.alarm.alert" exec="/usr/apps/org.tizen.alarm/bin/alarm-app" hw-acceleration="on" multiple="false" nodisplay="true" taskmanage="false" type="capp">
+ <label>Alarm</label>
+ <label xml:lang="ar-ae">تنبيه</label>
+ <label xml:lang="az-az">Siqnal</label>
+ <label xml:lang="bg-bg">Аларма</label>
+ <label xml:lang="ca-es">Alarma</label>
+ <label xml:lang="cs-cz">Upozornění</label>
+ <label xml:lang="da-dk">Alarm</label>
+ <label xml:lang="de-de">Alarm</label>
+ <label xml:lang="el-gr">Ξυπνητήρι</label>
+ <label xml:lang="en-gb">Alarm</label>
+ <label xml:lang="en-ph">Alarm</label>
+ <label xml:lang="en-us">Alarm</label>
+ <label xml:lang="es-es">Alarma</label>
+ <label xml:lang="es-mx">Alarma</label>
+ <label xml:lang="et-ee">Märguanne</label>
+ <label xml:lang="eu-es">Alarma</label>
+ <label xml:lang="fi-fi">Hälytys</label>
+ <label xml:lang="fr-ca">Alarme</label>
+ <label xml:lang="fr-fr">Alarme</label>
+ <label xml:lang="ga-ie">Aláram</label>
+ <label xml:lang="gl-es">Alarma</label>
+ <label xml:lang="hr-hr">Alarm</label>
+ <label xml:lang="hu-hu">Jelzés</label>
+ <label xml:lang="hy-am">Տագնապ</label>
+ <label xml:lang="is-is">Vekjari</label>
+ <label xml:lang="it-it">Sveglia</label>
+ <label xml:lang="ja-jp">アラーム</label>
+ <label xml:lang="ka-ge">სიგნალი</label>
+ <label xml:lang="kk-kz">Оятар</label>
+ <label xml:lang="ko-kr">알람</label>
+ <label xml:lang="lt-lt">Signalas</label>
+ <label xml:lang="lv-lv">Signāls</label>
+ <label xml:lang="mk-mk">Аларм</label>
+ <label xml:lang="nb-no">Alarm</label>
+ <label xml:lang="nl-nl">Alarm</label>
+ <label xml:lang="pl-pl">Alarm</label>
+ <label xml:lang="pt-br">Alarme</label>
+ <label xml:lang="pt-pt">Alarme</label>
+ <label xml:lang="ro-ro">Alarmă</label>
+ <label xml:lang="ru-ru">Будильник</label>
+ <label xml:lang="sk-sk">Budík</label>
+ <label xml:lang="sl-si">Alarm</label>
+ <label xml:lang="sr-rs">Beleška</label>
+ <label xml:lang="sv-se">Alarm</label>
+ <label xml:lang="tr-tr">Alarm</label>
+ <label xml:lang="uk-ua">Будильник</label>
+ <label xml:lang="uz-uz">Uyg‘otgich</label>
+ <label xml:lang="zh-cn">闹钟</label>
+ <label xml:lang="zh-hk">鬧鐘</label>
+ <label xml:lang="zh-tw">鬧鐘</label>
+ <icon>org.tizen.alarm.png</icon>
+ </ui-application>
+ <privileges>
+ <privilege>http://tizen.org/privilege/haptic</privilege>
+ <privilege>http://tizen.org/privilege/datasharing</privilege>
+ <privilege>http://tizen.org/privilege/display</privilege>
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ <privilege>http://tizen.org/privilege/alarm.get</privilege>
+ <privilege>http://tizen.org/privilege/alarm.set</privilege>
+ </privileges>
+ <service-application appid="org.tizen.alarm.svc" exec="/usr/apps/org.tizen.alarm/bin/alarm-svc" multiple="false" nodisplay="true" taskmanage="false" type="capp">
+ <label>Alarm Service</label>
+ <icon>org.tizen.alarm.png</icon>
+ <datacontrol access="ReadWrite" providerid="http://alarm.tizen.org/datacontrol/provider/alarm" type="Sql"/>
+ </service-application>
+ <widget-application appid="org.tizen.alarm.widget" exec="/usr/apps/org.tizen.alarm/bin/alarm-widget" main="true" update-period="0">
+ <label>Alarm</label>
+ <icon>org.tizen.alarm.png</icon>
+ <support-size preview="alarm_widget_preview.png">2x2</support-size>
+ </widget-application>
+</manifest>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.app-selector" version="0.1.9" api-version="3.0" install-location="internal-only" type="tpk" readonly="true" preload="true" removable="false">
+ <label>Application Selection Popup</label>
+ <description>Application Selection Popup</description>
+ <ui-application appid="org.tizen.app-selector" exec="/usr/apps/org.tizen.app-selector/bin/app-selector" nodisplay="true" multiple="false" type="capp" taskmanage="false" hw-acceleration="on" launch_mode="group">
+ <label>Application Selection Popup</label>
+ </ui-application>
+ <privileges>
+ <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+ <privilege>http://tizen.org/privilege/mediastorage</privilege>
+ <privilege>http://tizen.org/privilege/externalstorage</privilege>
+ </privileges>
+</manifest>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.bluetooth" api-version="3.0" version="2.0.25" install-location="internal-only" type="rpm" preload="true" readonly="true" removable="false">
+ <label>iW bluetooth</label>
+ <author email="insung.cho@samsung.com" href="www.samsung.com">Insung Cho</author>
+ <description>W bluetooth</description>
+ <ui-application appid="org.tizen.bluetooth" exec="/usr/apps/org.tizen.bluetooth/bin/bluetooth" nodisplay="true" multiple="false" type="capp" taskmanage="false" launch_mode="group">
+ <icon/>
+ <label>Bluetooth application</label>
+ <label xml:lang="en-us">Bluetooth application</label>
+ <app-control>
+ <operation name="http://tizen.org/appcontrol/operation/edit"/>
+ <mime name="application/x-bluetooth-on-off"/>
+ <mime name="application/x-bluetooth-visibility"/>
+ </app-control>
+ </ui-application>
+ <privileges>
+ <privilege>http://tizen.org/privilege/bluetooth</privilege>
+ <privilege>http://tizen.org/privilege/bluetooth.admin</privilege>
+ </privileges>
+</manifest>
--- /dev/null
+"package=org.tizen.new_rw":"version=1.2.0":"type=tpk":"removable=false"
+"package=org.test.pkg2":"version=1.2.0":"type=wgt":"removable=true"
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdlib.h>
+#include <gtest/gtest.h>
+#include <stdio.h>
+
+#include <list>
+#include <memory>
+
+#include "backend_invoker.hh"
+#include "mock/test_fixture.h"
+
+using namespace common_fota;
+
+class BackendInvokerTest : public ::testing::Test {
+ protected:
+ void SetUp() override {}
+ void TearDown() override {}
+};
+
+bool CompareArgumentList(std::list<std::string> l_arglist,
+ std::list<std::string> r_arglist) {
+ if (l_arglist.size() != r_arglist.size() ||
+ l_arglist.size() == 0 || r_arglist.size() == 0)
+ return false;
+
+ for (auto arg : l_arglist) {
+ if (!(std::find(r_arglist.begin(), r_arglist.end(), arg) !=
+ r_arglist.end()))
+ return false;
+ }
+
+ return true;
+}
+
+TEST_F(BackendInvokerTest, TPKPreloadRWUpdateRemovable) {
+ BackendInvoker update_backend("tpk_pkgid", PkgType::TPK,
+ PkgLocation::RW, PkgOperation::UPDATE, true);
+
+ std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-y",
+ "tpk_pkgid", "--preload-rw", "--skip-check-reference"};
+
+ EXPECT_TRUE(CompareArgumentList(update_backend.GetParameter(),
+ expected_argument));
+
+ BackendInvoker install_backend("tpk_pkgid", PkgType::TPK,
+ PkgLocation::RW, PkgOperation::INSTALL, true);
+ EXPECT_TRUE(CompareArgumentList(install_backend.GetParameter(),
+ expected_argument));
+}
+
+TEST_F(BackendInvokerTest, WGTPreloadRWUpdateRemovable) {
+ BackendInvoker update_backend("wgt_pkgid", PkgType::WGT,
+ PkgLocation::RW, PkgOperation::UPDATE, true);
+
+ std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-y",
+ "wgt_pkgid", "--preload-rw", "--skip-check-reference"};
+
+ EXPECT_TRUE(CompareArgumentList(update_backend.GetParameter(),
+ expected_argument));
+
+ BackendInvoker install_backend("wgt_pkgid", PkgType::WGT,
+ PkgLocation::RW, PkgOperation::INSTALL, true);
+ EXPECT_TRUE(CompareArgumentList(install_backend.GetParameter(),
+ expected_argument));
+}
+
+TEST_F(BackendInvokerTest, TPKPreloadROUpdate) {
+ BackendInvoker update_backend("tpk_pkgid", PkgType::TPK,
+ PkgLocation::RO, PkgOperation::UPDATE, false);
+
+ std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-y",
+ "tpk_pkgid", "--preload", "--partial-rw", "--skip-check-reference"};
+
+ EXPECT_TRUE(CompareArgumentList(update_backend.GetParameter(),
+ expected_argument));
+
+ BackendInvoker install_backend("tpk_pkgid", PkgType::TPK,
+ PkgLocation::RO, PkgOperation::INSTALL, false);
+ EXPECT_TRUE(CompareArgumentList(install_backend.GetParameter(),
+ expected_argument));
+}
+
+TEST_F(BackendInvokerTest, WGTPreloadROUpdate) {
+ BackendInvoker update_backend("wgt_pkgid", PkgType::WGT,
+ PkgLocation::RO, PkgOperation::UPDATE, false);
+
+ std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-y",
+ "wgt_pkgid", "--preload", "--partial-rw", "--skip-check-reference"};
+ EXPECT_TRUE(CompareArgumentList(update_backend.GetParameter(),
+ expected_argument));
+
+ BackendInvoker install_backend("wgt_pkgid", PkgType::WGT,
+ PkgLocation::RO, PkgOperation::INSTALL, false);
+ EXPECT_TRUE(CompareArgumentList(install_backend.GetParameter(),
+ expected_argument));
+}
+
+TEST_F(BackendInvokerTest, TPKPreloadROUninstall) {
+ BackendInvoker backend("tpk_pkgid", PkgType::TPK,
+ PkgLocation::RO, PkgOperation::UNINSTALL, false);
+
+ std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-d",
+ "tpk_pkgid", "--preload", "--force-remove", "--partial-rw"};
+ EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
+ expected_argument));
+}
+
+TEST_F(BackendInvokerTest, WGTPreloadROUninstall) {
+ BackendInvoker backend("wgt_pkgid", PkgType::WGT,
+ PkgLocation::RO, PkgOperation::UNINSTALL, false);
+
+ std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-d",
+ "wgt_pkgid", "--preload", "--force-remove", "--partial-rw"};
+ EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
+ expected_argument));
+}
+
+TEST_F(BackendInvokerTest, TPKRWUninstall) {
+ BackendInvoker backend("tpk_pkgid", PkgType::TPK,
+ PkgLocation::RW, PkgOperation::UNINSTALL, false);
+
+ std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-d",
+ "tpk_pkgid", "--force-remove", "--partial-rw"};
+ EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
+ expected_argument));
+}
+
+TEST_F(BackendInvokerTest, WGTRWUninstall) {
+ BackendInvoker backend("wgt_pkgid", PkgType::WGT,
+ PkgLocation::RW, PkgOperation::UNINSTALL, false);
+
+ std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-d",
+ "wgt_pkgid", "--force-remove", "--partial-rw"};
+ EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
+ expected_argument));
+}
+
+TEST_F(BackendInvokerTest, TPKPreloadROUninstallKeepRWData) {
+ BackendInvoker backend("tpk_pkgid", PkgType::TPK,
+ PkgLocation::RO, PkgOperation::UNINSTALL_KEEP_RW_DATA, false);
+
+ std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-d",
+ "tpk_pkgid", "--preload", "--force-remove", "--keep-rwdata"};
+ EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
+ expected_argument));
+}
+
+TEST_F(BackendInvokerTest, WGTPreloadROUninstallKeepRWData) {
+ BackendInvoker backend("wgt_pkgid", PkgType::WGT,
+ PkgLocation::RO, PkgOperation::UNINSTALL_KEEP_RW_DATA, false);
+
+ std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-d",
+ "wgt_pkgid", "--preload", "--force-remove", "--keep-rwdata"};
+ EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
+ expected_argument));
+}
+
+TEST_F(BackendInvokerTest, TPKRWUninstallKeepRWData) {
+ BackendInvoker backend("tpk_pkgid", PkgType::TPK,
+ PkgLocation::RW, PkgOperation::UNINSTALL_KEEP_RW_DATA, false);
+
+ std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-d",
+ "tpk_pkgid", "--force-remove", "--keep-rwdata"};
+ EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
+ expected_argument));
+}
+
+TEST_F(BackendInvokerTest, WGTRWUninstallKeepRWData) {
+ BackendInvoker backend("wgt_pkgid", PkgType::WGT,
+ PkgLocation::RW, PkgOperation::UNINSTALL_KEEP_RW_DATA, false);
+
+ std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-d",
+ "wgt_pkgid", "--force-remove", "--keep-rwdata"};
+ EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
+ expected_argument));
+}
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+
+int main(int argc, char** argv) {
+ int ret = -1;
+
+ try {
+ testing::InitGoogleTest(&argc, argv);
+ } catch(...) {
+ std::cout << "Exception occurred" << std::endl;
+ }
+
+ try {
+ ret = RUN_ALL_TESTS();
+ } catch (const ::testing::internal::GoogleTestFailureException& e) {
+ ret = -1;
+ std::cout << "GoogleTestFailureException was thrown:"
+ << e.what() << std::endl;
+ }
+
+ return ret;
+}
--- /dev/null
+/*
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdlib.h>
+#include <gtest/gtest.h>
+#include <stdio.h>
+
+#include <memory>
+
+#include "mock/os_mock.h"
+#include "mock/pkgmgr_info_mock.h"
+#include "mock/test_fixture.h"
+#include "pkg_finder.hh"
+#include "pkg_upgrader_factory.hh"
+#include "upgrader.hh"
+
+using ::testing::_;
+using ::testing::DoAll;
+using ::testing::Invoke;
+using ::testing::Return;
+using ::testing::SetArgPointee;
+using ::testing::InvokeArgument;
+using ::testing::SaveArg;
+
+using common_fota::PkgFinder;
+using common_fota::PkgUpgraderFactory;
+using common_fota::Upgrader;
+
+class Mocks : public ::testing::NiceMock<PkgMgrInfoMock>,
+ public ::testing::NiceMock<OsMock> {};
+
+class PkgFinderTest : public TestFixture {
+ public:
+ PkgFinderTest() : TestFixture(std::make_unique<Mocks>()) {}
+ virtual ~PkgFinderTest() {}
+
+ virtual void SetUp() {
+ static int k;
+ pkgmgrinfo_pkginfo_filter_h dummy_filter = (pkgmgrinfo_pkginfo_filter_h)&k;
+
+ EXPECT_CALL(GetMock<PkgMgrInfoMock>(), pkgmgrinfo_pkginfo_filter_create(_))
+ .WillRepeatedly(DoAll(SetArgPointee<0>(dummy_filter), Return(0)));
+ EXPECT_CALL(GetMock<PkgMgrInfoMock>(),
+ pkgmgrinfo_pkginfo_filter_add_bool(_, _, _))
+ .WillRepeatedly(Return(0));
+
+ EXPECT_CALL(GetMock<PkgMgrInfoMock>(),
+ pkgmgrinfo_pkginfo_filter_foreach_pkginfo(_, _, _))
+ .WillOnce(
+ 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;
+ })
+ )
+ .WillOnce(Invoke([](pkgmgrinfo_pkginfo_filter_h handle,
+ pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data) -> int {
+ 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)))
+ .WillOnce(DoAll(SetArgPointee<1>(
+ const_cast<char*>(old_rw_pkgid[0])), Return(0)));
+ EXPECT_CALL(GetMock<PkgMgrInfoMock>(),
+ pkgmgrinfo_pkginfo_get_type(_, _))
+ .WillOnce(DoAll(SetArgPointee<1>(
+ const_cast<char*>(old_ro_pkg_type[0])), 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)));
+ 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)))
+ .WillOnce(DoAll(SetArgPointee<1>(
+ const_cast<char*>(old_rw_pkg_version[0])), Return(0)));
+
+ EXPECT_CALL(GetMock<PkgMgrInfoMock>(), pkgmgrinfo_pkginfo_filter_destroy(_))
+ .WillRepeatedly(Return(0));
+
+ finder_.SetManifestDir("./tests/unit_tests/pkg_upgrade/data/packages/");
+ finder_.SetPreloadRwListPath("./tests/unit_tests/pkg_upgrade/data/rw/list.txt");
+ }
+
+ virtual void TearDown() {
+ }
+
+ PkgFinder finder_;
+};
+
+TEST_F(PkgFinderTest, PkgFinder) {
+ finder_.Find();
+
+ EXPECT_EQ(finder_.GetOldPkgs().size(), 4);
+ EXPECT_EQ(finder_.GetNewPkgs().size(), 5);
+}
+
+TEST_F(PkgFinderTest, PkgUpgraderFactory) {
+ PkgUpgraderFactory factory;
+ auto list = factory.MakeList(&finder_);
+
+ EXPECT_EQ(list.size(), 6);
+}
+
+class PkgUpgraderTest : public PkgFinderTest {
+ public:
+ PkgUpgraderTest() {}
+ virtual ~PkgUpgraderTest() {}
+
+ void SetUp() override {
+ PkgFinderTest::SetUp();
+ EXPECT_CALL(GetMock<OsMock>(), fork())
+ .WillRepeatedly(Return(1));
+ EXPECT_CALL(GetMock<OsMock>(), waitpid(_, _, _))
+ .WillRepeatedly(DoAll(SetArgPointee<1>(0), Return(1)));
+ EXPECT_CALL(GetMock<OsMock>(), fchown(_, _, _))
+ .WillRepeatedly(Return(0));
+ EXPECT_CALL(GetMock<OsMock>(), fchmod(_, _))
+ .WillRepeatedly(Return(0));
+ EXPECT_CALL(GetMock<OsMock>(), smack_setlabel(_, _, _))
+ .WillRepeatedly(Return(0));
+ }
+
+ void TearDown() override {
+ PkgFinderTest::TearDown();
+ }
+};
+
+TEST_F(PkgUpgraderTest, Upgrader) {
+ Upgrader upgrader;
+
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db");
+ ASSERT_TRUE(upgrader.Process(&finder_));
+
+ const auto& success = upgrader.GetSuccessList();
+ const auto& failure = upgrader.GetFailureList();
+
+ EXPECT_EQ(success.size(), 6);
+ EXPECT_EQ(failure.size(), 0);
+}
+
+TEST_F(PkgUpgraderTest, Upgrader_db_bck) {
+ Upgrader upgrader;
+
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/db_bck");
+ EXPECT_TRUE(upgrader.Process(&finder_));
+}
+
+class PkgUpgraderTestForInvalidDbPath : public TestFixture {
+ public:
+ PkgUpgraderTestForInvalidDbPath() : TestFixture(std::make_unique<Mocks>()) {}
+ virtual ~PkgUpgraderTestForInvalidDbPath() {}
+
+ virtual void SetUp() {
+ finder_.SetManifestDir("./tests/unit_tests/pkg_upgrade/data/packages/");
+ finder_.SetPreloadRwListPath("./tests/unit_tests/pkg_upgrade/data/rw/list.txt");
+ }
+
+ virtual void TearDown() {
+ }
+
+ PkgFinder finder_;
+};
+
+TEST_F(PkgUpgraderTestForInvalidDbPath, Upgrader_invalid_db) {
+ Upgrader upgrader;
+
+ upgrader.SetDbPath("./tests/unit_tests/pkg_upgrade/data/invalid_path");
+ EXPECT_FALSE(upgrader.Process(&finder_));
+}
+++ /dev/null
-/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdlib.h>
-#include <gtest/gtest.h>
-#include <stdio.h>
-
-#include <list>
-#include <memory>
-
-#include "backend_invoker.hh"
-#include "mock/test_fixture.h"
-
-using namespace common_fota;
-
-class BackendInvokerTest : public ::testing::Test {
- protected:
- void SetUp() override {}
- void TearDown() override {}
-};
-
-bool CompareArgumentList(std::list<std::string> l_arglist,
- std::list<std::string> r_arglist) {
- if (l_arglist.size() != r_arglist.size() ||
- l_arglist.size() == 0 || r_arglist.size() == 0)
- return false;
-
- for (auto arg : l_arglist) {
- if (!(std::find(r_arglist.begin(), r_arglist.end(), arg) !=
- r_arglist.end()))
- return false;
- }
-
- return true;
-}
-
-TEST_F(BackendInvokerTest, TPKPreloadRWUpdateRemovable) {
- BackendInvoker update_backend("tpk_pkgid", PkgType::TPK,
- PkgLocation::RW, PkgOperation::UPDATE, true);
-
- std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-y",
- "tpk_pkgid", "--preload-rw", "--skip-check-reference"};
-
- EXPECT_TRUE(CompareArgumentList(update_backend.GetParameter(),
- expected_argument));
-
- BackendInvoker install_backend("tpk_pkgid", PkgType::TPK,
- PkgLocation::RW, PkgOperation::INSTALL, true);
- EXPECT_TRUE(CompareArgumentList(install_backend.GetParameter(),
- expected_argument));
-}
-
-TEST_F(BackendInvokerTest, WGTPreloadRWUpdateRemovable) {
- BackendInvoker update_backend("wgt_pkgid", PkgType::WGT,
- PkgLocation::RW, PkgOperation::UPDATE, true);
-
- std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-y",
- "wgt_pkgid", "--preload-rw", "--skip-check-reference"};
-
- EXPECT_TRUE(CompareArgumentList(update_backend.GetParameter(),
- expected_argument));
-
- BackendInvoker install_backend("wgt_pkgid", PkgType::WGT,
- PkgLocation::RW, PkgOperation::INSTALL, true);
- EXPECT_TRUE(CompareArgumentList(install_backend.GetParameter(),
- expected_argument));
-}
-
-TEST_F(BackendInvokerTest, TPKPreloadROUpdate) {
- BackendInvoker update_backend("tpk_pkgid", PkgType::TPK,
- PkgLocation::RO, PkgOperation::UPDATE, false);
-
- std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-y",
- "tpk_pkgid", "--preload", "--partial-rw", "--skip-check-reference"};
-
- EXPECT_TRUE(CompareArgumentList(update_backend.GetParameter(),
- expected_argument));
-
- BackendInvoker install_backend("tpk_pkgid", PkgType::TPK,
- PkgLocation::RO, PkgOperation::INSTALL, false);
- EXPECT_TRUE(CompareArgumentList(install_backend.GetParameter(),
- expected_argument));
-}
-
-TEST_F(BackendInvokerTest, WGTPreloadROUpdate) {
- BackendInvoker update_backend("wgt_pkgid", PkgType::WGT,
- PkgLocation::RO, PkgOperation::UPDATE, false);
-
- std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-y",
- "wgt_pkgid", "--preload", "--partial-rw", "--skip-check-reference"};
- EXPECT_TRUE(CompareArgumentList(update_backend.GetParameter(),
- expected_argument));
-
- BackendInvoker install_backend("wgt_pkgid", PkgType::WGT,
- PkgLocation::RO, PkgOperation::INSTALL, false);
- EXPECT_TRUE(CompareArgumentList(install_backend.GetParameter(),
- expected_argument));
-}
-
-TEST_F(BackendInvokerTest, TPKPreloadROUninstall) {
- BackendInvoker backend("tpk_pkgid", PkgType::TPK,
- PkgLocation::RO, PkgOperation::UNINSTALL, false);
-
- std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-d",
- "tpk_pkgid", "--preload", "--force-remove", "--partial-rw"};
- EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
- expected_argument));
-}
-
-TEST_F(BackendInvokerTest, WGTPreloadROUninstall) {
- BackendInvoker backend("wgt_pkgid", PkgType::WGT,
- PkgLocation::RO, PkgOperation::UNINSTALL, false);
-
- std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-d",
- "wgt_pkgid", "--preload", "--force-remove", "--partial-rw"};
- EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
- expected_argument));
-}
-
-TEST_F(BackendInvokerTest, TPKRWUninstall) {
- BackendInvoker backend("tpk_pkgid", PkgType::TPK,
- PkgLocation::RW, PkgOperation::UNINSTALL, false);
-
- std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-d",
- "tpk_pkgid", "--force-remove", "--partial-rw"};
- EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
- expected_argument));
-}
-
-TEST_F(BackendInvokerTest, WGTRWUninstall) {
- BackendInvoker backend("wgt_pkgid", PkgType::WGT,
- PkgLocation::RW, PkgOperation::UNINSTALL, false);
-
- std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-d",
- "wgt_pkgid", "--force-remove", "--partial-rw"};
- EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
- expected_argument));
-}
-
-TEST_F(BackendInvokerTest, TPKPreloadROUninstallKeepRWData) {
- BackendInvoker backend("tpk_pkgid", PkgType::TPK,
- PkgLocation::RO, PkgOperation::UNINSTALL_KEEP_RW_DATA, false);
-
- std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-d",
- "tpk_pkgid", "--preload", "--force-remove", "--keep-rwdata"};
- EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
- expected_argument));
-}
-
-TEST_F(BackendInvokerTest, WGTPreloadROUninstallKeepRWData) {
- BackendInvoker backend("wgt_pkgid", PkgType::WGT,
- PkgLocation::RO, PkgOperation::UNINSTALL_KEEP_RW_DATA, false);
-
- std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-d",
- "wgt_pkgid", "--preload", "--force-remove", "--keep-rwdata"};
- EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
- expected_argument));
-}
-
-TEST_F(BackendInvokerTest, TPKRWUninstallKeepRWData) {
- BackendInvoker backend("tpk_pkgid", PkgType::TPK,
- PkgLocation::RW, PkgOperation::UNINSTALL_KEEP_RW_DATA, false);
-
- std::list<std::string> expected_argument { "/usr/bin/tpk-backend", "-d",
- "tpk_pkgid", "--force-remove", "--keep-rwdata"};
- EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
- expected_argument));
-}
-
-TEST_F(BackendInvokerTest, WGTRWUninstallKeepRWData) {
- BackendInvoker backend("wgt_pkgid", PkgType::WGT,
- PkgLocation::RW, PkgOperation::UNINSTALL_KEEP_RW_DATA, false);
-
- std::list<std::string> expected_argument { "/usr/bin/wgt-backend", "-d",
- "wgt_pkgid", "--force-remove", "--keep-rwdata"};
- EXPECT_TRUE(CompareArgumentList(backend.GetParameter(),
- expected_argument));
-}
+++ /dev/null
-/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <gtest/gtest.h>
-#include <gmock/gmock.h>
-
-int main(int argc, char** argv) {
- int ret = -1;
-
- try {
- testing::InitGoogleTest(&argc, argv);
- } catch(...) {
- std::cout << "Exception occurred" << std::endl;
- }
-
- try {
- ret = RUN_ALL_TESTS();
- } catch (const ::testing::internal::GoogleTestFailureException& e) {
- ret = -1;
- std::cout << "GoogleTestFailureException was thrown:"
- << e.what() << std::endl;
- }
-
- return ret;
-}
+++ /dev/null
-/*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdlib.h>
-#include <gtest/gtest.h>
-#include <stdio.h>
-
-#include <memory>
-
-#include "mock/os_mock.h"
-#include "mock/pkgmgr_info_mock.h"
-#include "mock/test_fixture.h"
-#include "pkg_finder.hh"
-#include "pkg_upgrader_factory.hh"
-#include "upgrader.hh"
-
-using ::testing::_;
-using ::testing::DoAll;
-using ::testing::Invoke;
-using ::testing::Return;
-using ::testing::SetArgPointee;
-using ::testing::InvokeArgument;
-using ::testing::SaveArg;
-
-using common_fota::PkgFinder;
-using common_fota::PkgUpgraderFactory;
-using common_fota::Upgrader;
-
-class Mocks : public ::testing::NiceMock<PkgMgrInfoMock>,
- public ::testing::NiceMock<OsMock> {};
-
-class PkgFinderTest : public TestFixture {
- public:
- PkgFinderTest() : TestFixture(std::make_unique<Mocks>()) {}
- virtual ~PkgFinderTest() {}
-
- virtual void SetUp() {
- static int k;
- pkgmgrinfo_pkginfo_filter_h dummy_filter = (pkgmgrinfo_pkginfo_filter_h)&k;
-
- EXPECT_CALL(GetMock<PkgMgrInfoMock>(), pkgmgrinfo_pkginfo_filter_create(_))
- .WillRepeatedly(DoAll(SetArgPointee<0>(dummy_filter), Return(0)));
- EXPECT_CALL(GetMock<PkgMgrInfoMock>(),
- pkgmgrinfo_pkginfo_filter_add_bool(_, _, _))
- .WillRepeatedly(Return(0));
-
- EXPECT_CALL(GetMock<PkgMgrInfoMock>(),
- pkgmgrinfo_pkginfo_filter_foreach_pkginfo(_, _, _))
- .WillOnce(
- 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;
- })
- )
- .WillOnce(Invoke([](pkgmgrinfo_pkginfo_filter_h handle,
- pkgmgrinfo_pkg_list_cb pkg_cb, void *user_data) -> int {
- 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)))
- .WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_rw_pkgid[0])), Return(0)));
- EXPECT_CALL(GetMock<PkgMgrInfoMock>(),
- pkgmgrinfo_pkginfo_get_type(_, _))
- .WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_ro_pkg_type[0])), 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)));
- 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)))
- .WillOnce(DoAll(SetArgPointee<1>(
- const_cast<char*>(old_rw_pkg_version[0])), Return(0)));
-
- EXPECT_CALL(GetMock<PkgMgrInfoMock>(), pkgmgrinfo_pkginfo_filter_destroy(_))
- .WillRepeatedly(Return(0));
-
- finder_.SetManifestDir("./tests/unit_tests/data/packages/");
- finder_.SetPreloadRwListPath("./tests/unit_tests/data/rw/list.txt");
- }
-
- virtual void TearDown() {
- }
-
- PkgFinder finder_;
-};
-
-TEST_F(PkgFinderTest, PkgFinder) {
- finder_.Find();
-
- EXPECT_EQ(finder_.GetOldPkgs().size(), 4);
- EXPECT_EQ(finder_.GetNewPkgs().size(), 5);
-}
-
-TEST_F(PkgFinderTest, PkgUpgraderFactory) {
- PkgUpgraderFactory factory;
- auto list = factory.MakeList(&finder_);
-
- EXPECT_EQ(list.size(), 6);
-}
-
-class PkgUpgraderTest : public PkgFinderTest {
- public:
- PkgUpgraderTest() {}
- virtual ~PkgUpgraderTest() {}
-
- void SetUp() override {
- PkgFinderTest::SetUp();
- EXPECT_CALL(GetMock<OsMock>(), fork())
- .WillRepeatedly(Return(1));
- EXPECT_CALL(GetMock<OsMock>(), waitpid(_, _, _))
- .WillRepeatedly(DoAll(SetArgPointee<1>(0), Return(1)));
- EXPECT_CALL(GetMock<OsMock>(), fchown(_, _, _))
- .WillRepeatedly(Return(0));
- EXPECT_CALL(GetMock<OsMock>(), fchmod(_, _))
- .WillRepeatedly(Return(0));
- EXPECT_CALL(GetMock<OsMock>(), smack_setlabel(_, _, _))
- .WillRepeatedly(Return(0));
- }
-
- void TearDown() override {
- PkgFinderTest::TearDown();
- }
-};
-
-TEST_F(PkgUpgraderTest, Upgrader) {
- Upgrader upgrader;
-
- upgrader.SetDbPath("./tests/unit_tests/data/db");
- ASSERT_TRUE(upgrader.Process(&finder_));
-
- const auto& success = upgrader.GetSuccessList();
- const auto& failure = upgrader.GetFailureList();
-
- EXPECT_EQ(success.size(), 6);
- EXPECT_EQ(failure.size(), 0);
-}
-
-TEST_F(PkgUpgraderTest, Upgrader_db_bck) {
- Upgrader upgrader;
-
- upgrader.SetDbPath("./tests/unit_tests/data/db_bck");
- EXPECT_TRUE(upgrader.Process(&finder_));
-}
-
-class PkgUpgraderTestForInvalidDbPath : public TestFixture {
- public:
- PkgUpgraderTestForInvalidDbPath() : TestFixture(std::make_unique<Mocks>()) {}
- virtual ~PkgUpgraderTestForInvalidDbPath() {}
-
- virtual void SetUp() {
- finder_.SetManifestDir("./tests/unit_tests/data/packages/");
- finder_.SetPreloadRwListPath("./tests/unit_tests/data/rw/list.txt");
- }
-
- virtual void TearDown() {
- }
-
- PkgFinder finder_;
-};
-
-TEST_F(PkgUpgraderTestForInvalidDbPath, Upgrader_invalid_db) {
- Upgrader upgrader;
-
- upgrader.SetDbPath("./tests/unit_tests/data/invalid_path");
- EXPECT_FALSE(upgrader.Process(&finder_));
-}