Added utc test case for internal Package coverage. 85/159385/10 submit/tizen/20171116.061423
authorjinwang.an <jinwang.an@samsung.com>
Wed, 8 Nov 2017 12:00:43 +0000 (21:00 +0900)
committerMyoungJune Park <mj2004.park@samsung.com>
Thu, 16 Nov 2017 06:13:06 +0000 (15:13 +0900)
- add UNITEST build option

Change-Id: I291b7b87cb673350b1e280773c1fa52ef28da8bb
Signed-off-by: jinwang.an <jinwang.an@samsung.com>
Signed-off-by: MyoungJune Park <mj2004.park@samsung.com>
README_UnitTest.md
packaging/capi-system-system-settings.spec
src/system_settings.c
system-settings-util/CMakeLists.txt
unittest.sh
unittest2.sh [new file with mode: 0755]

index 582d08f..1100200 100644 (file)
@@ -8,4 +8,5 @@
        #./unittest.sh /home/mjpark/GBS-ROOT/local/repos/slp/armv7l/RPMS capi-system-system-settings 0.0.3-3 armv7l 2>&1 | tee ./unittest.log
 
        ./unittest.sh /home/mjpark/GBS-ROOT/local/repos/slp/armv7l/RPMS armv7l 2>&1 | tee ./unittest.log
+       ./unittest2.sh /home/mjpark/GBS-ROOT/local/repos/slp/armv7l/RPMS armv7l 2>&1 | tee ./unittest.log
 
index 5485d02..e4e5cc8 100755 (executable)
@@ -137,6 +137,7 @@ make %{?jobs:-j%jobs}
 /usr/src/packages/BUILD/%{name}-%{version}/CMakeFiles/%{name}.dir/src/system_settings_json.c.gcno
 /usr/src/packages/BUILD/%{name}-%{version}/CMakeFiles/%{name}.dir/src/system_settings_ringtones.c.gcno
 /usr/src/packages/BUILD/%{name}-%{version}/CMakeFiles/%{name}.dir/src/system_settings_vconf.c.gcno
+/usr/src/packages/BUILD/%{name}-%{version}/system-settings-util/CMakeFiles/system-settings-util.dir/src/system_settings_util.c.gcno
 %endif
 %license LICENSE
 # /usr/local/bin/test_system_settings
index a451952..7c74870 100644 (file)
@@ -2443,6 +2443,25 @@ static void utc_system_settings_set_value_bool_n5(void)
        return;
 }
 
+/**
+ * @testcase           utc_system_settings_set_value_bool_n6
+ * @since_tizen                2.3
+ * @description     check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS  is able to get the property.
+ *                  check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS  is able to set the property in an exceptional-case. (not supported)
+ */
+static void utc_system_settings_set_value_bool_n6(void)
+{
+       int ret;
+       bool state = true;
+       ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS , state);
+       my_assert_ret(ret);
+
+       bool ret_state = false;
+       ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS , &ret_state);
+       my_assert_ret(ret);
+       return;
+}
+
 
 /**
  * @testcase           utc_system_settings_set_value_string_n8
@@ -2708,27 +2727,6 @@ static void utc_system_settings_set_changed_cb_n(void)
 }
 
 
-#include <pkgmgr-info.h>
-#include <package_manager.h>
-#include <app_manager.h>
-#include <vconf.h>
-static void uds_push_updating_pkgid_list_vconf_value()
-{
-       char buff[2048] = {'\0',};
-       char *app_id;
-       char *package_id;
-       pid_t pid = getpid();
-       app_manager_get_app_id(pid, &app_id);
-       package_manager_get_package_id_by_app_id(app_id, &package_id);
-
-       { strcat(buff, package_id); strcat(buff, ";"); }
-
-       if (strlen(buff))
-               vconf_set_str(VCONFKEY_SETAPPL_UDSM_PKGID_LIST, buff);
-       else
-               vconf_set_str(VCONFKEY_SETAPPL_UDSM_PKGID_LIST, "NONE");
-}
-
 
 /**
  * @testcase           utc_system_settings_get_value_int_p4
@@ -2738,7 +2736,6 @@ static void uds_push_updating_pkgid_list_vconf_value()
 static void utc_system_settings_get_value_int_p4(void)
 {
        int value = 0;
-       uds_push_updating_pkgid_list_vconf_value();
        int nRetVal =  system_settings_get_value_int(SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE, &value);
        my_assert_ret(nRetVal);
        return;
@@ -2873,6 +2870,36 @@ static void utc_system_settings_set_value_bool_p5(void)
 
 
 /**
+ * @testcase           utc_system_settings_set_value_bool_p6
+ * @since_tizen                2.3
+ * @description     check if SYSTEM_SETTINGS_KEY_VIBRATION is able to set the property.
+ *                                     check if SYSTEM_SETTINGS_KEY_VIBRATION is able to get the property.
+ */
+static void utc_system_settings_set_value_bool_p6(void)
+{
+       int ret;
+
+       /* get current state */
+       bool ret_state = false;
+       ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_VIBRATION, &ret_state);
+       my_assert_ret(ret);
+
+
+       bool state = !ret_state;
+       ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_VIBRATION, state);
+       my_assert_ret(ret);
+
+
+       /* roll back */
+       ret = system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_VIBRATION, ret_state);
+       my_assert_ret(ret);
+
+       g_assert(state != ret_state);
+       return;
+}
+
+
+/**
  * @testcase           utc_system_settings_set_value_int_p2
  * @since_tizen                2.3
  * @description     check if SYSTEM_SETTINGS_KEY_FONT_SIZE is able to set the property.
@@ -3018,10 +3045,74 @@ static void utc_system_settings_unset_changed_cb_p28(void)
        return;
 }
 
+/**
+ * @testcase           utc_system_settings_set_changed_cb_p31
+ * @since_tizen                2.3
+ * @description     check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to set the callback for change-notification.
+ */
+static void utc_system_settings_set_changed_cb_p31(void)
+{
+       int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS,
+                                                                                                utc_system_settings_changed_callback, NULL);
+       my_assert_ret(retcode);
+
+       return;
+}
+
+
+/**
+ * @testcase           utc_system_settings_unset_changed_cb_p30
+ * @since_tizen                2.3
+ * @description     check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to set the callback for change-notification.
+ *                  check if SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS is able to unset the callback for change-notification.
+ */
+static void utc_system_settings_unset_changed_cb_p30(void)
+{
+       int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS,
+                                                                                                utc_system_settings_changed_callback, NULL);
+
+       retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS);
+       my_assert_ret(retcode);
+
+       return;
+}
+
+/**
+ * @testcase           utc_system_settings_set_changed_cb_p33
+ * @since_tizen                2.3
+ * @description     check if SYSTEM_SETTINGS_KEY_VIBRATION is able to set the callback for change-notification.
+ */
+static void utc_system_settings_set_changed_cb_p33(void)
+{
+       int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_VIBRATION,
+                                                                                                utc_system_settings_changed_callback, NULL);
+       my_assert_ret(retcode);
+
+       return;
+}
+
+
+/**
+ * @testcase           utc_system_settings_unset_changed_cb_p32
+ * @since_tizen                2.3
+ * @description     check if SYSTEM_SETTINGS_KEY_VIBRATION is able to set the callback for change-notification.
+ *                  check if SYSTEM_SETTINGS_KEY_VIBRATION is able to unset the callback for change-notification.
+ */
+static void utc_system_settings_unset_changed_cb_p32(void)
+{
+       int retcode = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_VIBRATION,
+                                                                                                utc_system_settings_changed_callback, NULL);
+
+       retcode = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_VIBRATION);
+       my_assert_ret(retcode);
+
+       return;
+}
+
 static int cb_count;
 static bool system_setting_get_ringtone_list_cb(int index, const char* data, void *user_data)
 {
-       dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] begin -- ringtone list callback", __FUNCTION__, __LINE__);
+       //dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] begin -- ringtone list callback", __FUNCTION__, __LINE__);
        //const char *pathval = data;
        cb_count += 1;
        return true;
@@ -3029,32 +3120,37 @@ static bool system_setting_get_ringtone_list_cb(int index, const char* data, voi
 
 static void utc_system_settings_add_ringtone_list_p1(void)
 {
-       cb_count = 0;
-       dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] begin -- utc_system_settings_add_ringtone_list_p1", __FUNCTION__, __LINE__);
+       //cb_count = 0;
+       //dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] begin -- utc_system_settings_add_ringtone_list_p1", __FUNCTION__, __LINE__);
        int retcode = -1;
        retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4");
-       my_assert_ret(retcode);
-       retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4");
-       my_assert_ret(retcode);
-       retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav");
-       my_assert_ret(retcode);
-       retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4");
-       my_assert_ret(retcode);
-
-       retcode = system_settings_foreach_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, system_setting_get_ringtone_list_cb, NULL);
+//     my_assert_ret(retcode);
+//     retcode = system_settings_foreach_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, system_setting_get_ringtone_list_cb, NULL);
+//     my_assert_ret(retcode);
+       retcode = system_settings_delete_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4");
        my_assert_ret(retcode);
 
+//     retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4");
+//     my_assert_ret(retcode);
+//     retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav");
+//     my_assert_ret(retcode);
+//     retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4");
+//     my_assert_ret(retcode);
+//
+//     retcode = system_settings_foreach_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, system_setting_get_ringtone_list_cb, NULL);
+//     my_assert_ret(retcode);
+//
        //assert_eq(cb_count, 4+1);
-       dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] end -- utc_system_settings_add_ringtone_list_p1", __FUNCTION__, __LINE__);
-
-       retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4");
-       //my_assert_ret(retcode);
-       retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4");
-       //my_assert_ret(retcode);
-       retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav");
-       //my_assert_ret(retcode);
-       retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4");
-       //my_assert_ret(retcode);
+       //dlog_print(DLOG_INFO, "NativeTCT", "[%s:%d] end -- utc_system_settings_add_ringtone_list_p1", __FUNCTION__, __LINE__);
+
+//     retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/big_buck_bunny.mp4");
+//     //my_assert_ret(retcode);
+//     retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/daliTestVideo.mp4");
+//     //my_assert_ret(retcode);
+//     retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/sound_5.wav");
+//     //my_assert_ret(retcode);
+//     retcode = system_settings_add_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/usr/test/tct-content-tizen-tests_video.mp4");
+//     //my_assert_ret(retcode);
        cb_count = 0;
        return;
 }
@@ -3120,6 +3216,7 @@ void unittest_api()
        g_test_add_func("/utc_system_settings_get_value_string_p10", utc_system_settings_get_value_string_p10);
        g_test_add_func("/utc_system_settings_get_value_string_p8", utc_system_settings_get_value_string_p8);
        g_test_add_func("/utc_system_settings_get_value_string_p9", utc_system_settings_get_value_string_p9);
+       g_test_add_func("/utc_system_settings_get_value_string_p11", utc_system_settings_get_value_string_p11);
        g_test_add_func("/utc_system_settings_get_value_string_n", utc_system_settings_get_value_string_n);
 g_test_add_func("/utc_system_settings_get_value_bool_p1", utc_system_settings_get_value_bool_p1);
        g_test_add_func("/utc_system_settings_get_value_bool_p2", utc_system_settings_get_value_bool_p2);
@@ -3137,7 +3234,7 @@ g_test_add_func("/utc_system_settings_get_value_bool_p1", utc_system_settings_ge
        g_test_add_func("/utc_system_settings_get_value_n", utc_system_settings_get_value_n);
        g_test_add_func("/utc_system_settings_get_value_int_p3", utc_system_settings_get_value_int_p3);
        g_test_add_func("/utc_system_settings_get_value_bool_p11", utc_system_settings_get_value_bool_p11);
-//     g_test_add_func("/utc_system_settings_get_value_int_p4", utc_system_settings_get_value_int_p4);
+       g_test_add_func("/utc_system_settings_get_value_int_p4", utc_system_settings_get_value_int_p4);
 #if 1
        g_test_add_func("/utc_system_settings_set_value_string_n2", utc_system_settings_set_value_string_n2);
        g_test_add_func("/utc_system_settings_set_value_string_n3", utc_system_settings_set_value_string_n3);
@@ -3199,11 +3296,14 @@ g_test_add_func("/utc_system_settings_get_value_bool_p1", utc_system_settings_ge
        g_test_add_func("/utc_system_settings_unset_changed_cb_p26", utc_system_settings_unset_changed_cb_p26);
        g_test_add_func("/utc_system_settings_set_changed_cb_p29", utc_system_settings_set_changed_cb_p29);
        g_test_add_func("/utc_system_settings_unset_changed_cb_p28", utc_system_settings_unset_changed_cb_p28);
-//    g_test_add_func("/utc_system_settings_add_ringtone_list_p1", utc_system_settings_add_ringtone_list_p1),
-//    g_test_add_func("/utc_system_settings_delete_ringtone_list_p1", utc_system_settings_delete_ringtone_list_p1),
-
-//     g_test_add_func("/utc_system_settings_set_value_string_p1", utc_system_settings_set_value_string_p1);
-//     g_test_add_func("/utc_system_settings_set_value_string_p2", utc_system_settings_set_value_string_p2);
+       g_test_add_func("/utc_system_settings_set_changed_cb_p31", utc_system_settings_set_changed_cb_p31);
+       g_test_add_func("/utc_system_settings_unset_changed_cb_p30", utc_system_settings_unset_changed_cb_p30);
+       g_test_add_func("/utc_system_settings_set_changed_cb_p33", utc_system_settings_set_changed_cb_p33);
+       g_test_add_func("/utc_system_settings_unset_changed_cb_p32", utc_system_settings_unset_changed_cb_p32);
+       g_test_add_func("/utc_system_settings_add_ringtone_list_p1", utc_system_settings_add_ringtone_list_p1);
+//     g_test_add_func("/utc_system_settings_delete_ringtone_list_p1", utc_system_settings_delete_ringtone_list_p1);
+       g_test_add_func("/utc_system_settings_set_value_string_p1", utc_system_settings_set_value_string_p1);
+       g_test_add_func("/utc_system_settings_set_value_string_p2", utc_system_settings_set_value_string_p2);
        g_test_add_func("/utc_system_settings_set_value_string_p3", utc_system_settings_set_value_string_p3);
        g_test_add_func("/utc_system_settings_set_value_string_p4", utc_system_settings_set_value_string_p4);
        g_test_add_func("/utc_system_settings_set_value_bool_n1", utc_system_settings_set_value_bool_n1);
@@ -3211,6 +3311,7 @@ g_test_add_func("/utc_system_settings_get_value_bool_p1", utc_system_settings_ge
        g_test_add_func("/utc_system_settings_set_value_bool_n3", utc_system_settings_set_value_bool_n3);
        g_test_add_func("/utc_system_settings_set_value_bool_n4", utc_system_settings_set_value_bool_n4);
        g_test_add_func("/utc_system_settings_set_value_bool_n5", utc_system_settings_set_value_bool_n5);
+       g_test_add_func("/utc_system_settings_set_value_bool_n6", utc_system_settings_set_value_bool_n6);
        g_test_add_func("/utc_system_settings_set_value_bool_p1", utc_system_settings_set_value_bool_p1);
        g_test_add_func("/utc_system_settings_set_value_bool_p2", utc_system_settings_set_value_bool_p2);
        g_test_add_func("/utc_system_settings_set_value_int_n1", utc_system_settings_set_value_int_n1);
@@ -3220,6 +3321,7 @@ g_test_add_func("/utc_system_settings_get_value_bool_p1", utc_system_settings_ge
        g_test_add_func("/utc_system_settings_set_value_bool_p3", utc_system_settings_set_value_bool_p3);
        g_test_add_func("/utc_system_settings_set_value_bool_p4", utc_system_settings_set_value_bool_p4);
        g_test_add_func("/utc_system_settings_set_value_bool_p5", utc_system_settings_set_value_bool_p5);
+       g_test_add_func("/utc_system_settings_set_value_bool_p6", utc_system_settings_set_value_bool_p6);
        g_test_add_func("/utc_system_settings_set_value_int_p2", utc_system_settings_set_value_int_p2);
        g_test_add_func("/utc_system_settings_set_value_string_n6", utc_system_settings_set_value_string_n6);
        g_test_add_func("/utc_system_settings_unset_changed_cb_n", utc_system_settings_unset_changed_cb_n);
index 9aabac4..5502ec0 100755 (executable)
@@ -39,4 +39,10 @@ SET_TARGET_PROPERTIES(${LIB_SYSTEM_SETTINGS_UTIL} PROPERTIES VERSION 0.1.0 SOVER
 INSTALL(TARGETS ${LIB_SYSTEM_SETTINGS_UTIL} DESTINATION ${CMAKE_LIBDIR})
 
 INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/system_settings_util.h DESTINATION ${CMAKE_INCLUDEDIR})
-
+IF (CMAKE_BUILD_TYPE STREQUAL "UNITTEST")
+INSTALL(
+               DIRECTORY "CMakeFiles" DESTINATION /usr/src/packages/BUILD/capi-system-system-settings-${FULLVER}/system-settings-util/
+                       FILES_MATCHING
+                       PATTERN "*.gcno"
+                       )
+ENDIF() #CMAKE_BUILD_TYPE STREQUAL "UNITTEST"
index 8c4b58f..0cc9947 100755 (executable)
@@ -46,14 +46,24 @@ export GCOV_PREFIX=/opt
 $SDB shell G_DEBUG=fatal-criticals GCOV_PREFIX=/usr/src/packages GCOV_PREFIX_STRIP=3 /usr/local/bin/system-setting-unittest
 
 echo "COVERAGE TEST----------------------------------------------------"
-sdb pull /usr/src/packages/BUILD/$APP-$VERSHORT/CMakeFiles > /dev/null 2>&1
-lcov -c -d $APP.dir/ -o $APP.info > /dev/null 2>&1
-
-VAR1="/usr/src/packages/BUILD/$APP-$VERSHORT"
+sdb pull /usr/src/packages/BUILD/$APP-$VERSHORT/
+rm -rf ./CMakeFiles/system-setting-unittest.dir
+rm -rf ./CMakeFiles/capi-system-system-settings.dir/src/system_setting_unittest.*
+lcov -c -d ./CMakeFiles/$APP.dir/ -o $APP.info
+lcov -c -d ./system-settings-util/CMakeFiles/system-settings-util.dir -o $APP.util.info
+
+VAR1="/home/abuild/rpmbuild/BUILD/$APP-$VERSHORT"
+VAR2="/usr/include"
 PWD=`pwd`
+GBS_INCLUDE="$HOME/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.0/usr/include"
 sed -i "s#$VAR1#$PWD#g" $APP.info
-
-genhtml $APP.info -o out
-find . -name "*.dir" -type d -prune -exec rm -rf '{}' '+'
-rm $APP.info
+sed -i "s#$VAR2#$GBS_INCLUDE#g" $APP.info
+sed -i "s#$VAR1#$PWD#g" $APP.util.info
+sed -i "s#$VAR2#$GBS_INCLUDE#g" $APP.util.info
+echo "sed -i \"s#$VAR1#$PWD#g\" $APP.info"
+
+echo "genhtml $APP.info $APP.util.info -o out"
+genhtml $APP.info $APP.util.info -o out
+find . -name "CMakeFiles" -type d -prune -exec rm -rf '{}' '+'
+rm $APP.info $APP.util.info
 
diff --git a/unittest2.sh b/unittest2.sh
new file mode 100755 (executable)
index 0000000..8c4b58f
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+RPATH=$1
+
+SPECPATH=`find . -name *.spec`
+
+APP=`cat $SPECPATH  | grep Name: | awk '{ print $2 }'`
+VER1=`cat $SPECPATH  | grep "^Version:" | awk '{ print $2 }'`
+REL=`cat $SPECPATH  | grep Release: | awk '{ print $2 }'`
+VER=$VER1-$REL
+ARCH=$2
+VERSHORT=${VER%-*}             # 1.2.3
+
+
+
+if [ -z $RPATH ]; then
+       echo "argument error : 1st arg is path "
+       echo "usage) ./unittest.sh /home/mjpark/GBS-ROOT/local/repos/slp/armv7l/RPMS capi-system-system-settings 0.0.3-3 armv7l"
+       exit 1
+fi
+
+if [ -z $ARCH ]; then
+       echo "argument error : 3th arg is Version"
+       echo "usage) ./unittest.sh /home/mjpark/GBS-ROOT/local/repos/slp/armv7l/RPMS capi-system-system-settings 0.0.3-3 armv7l"
+       exit 1
+fi
+
+sudo gbs build -A $ARCH --include-all --define "run_tests 1" || exit 1
+# ex ) ./unittest.sh /home/mjpark/GBS-ROOT/local/repos/slp/armv7l/RPMS capi-system-system-settings 0.0.3-3 armv7l
+
+RPM_ROOT=$RPATH
+
+SDB=/usr/bin/sdb
+$SDB root on
+$SDB shell mount -o remount,rw /
+$SDB push $RPM_ROOT/$APP-$VER.$ARCH.rpm /opt
+$SDB push $RPM_ROOT/$APP-debuginfo-$VER.$ARCH.rpm /opt
+$SDB push $RPM_ROOT/$APP-debugsource-$VER.$ARCH.rpm /opt
+
+$SDB shell rpm -Uvh --force --nodeps /opt/$APP-$VER.$ARCH.rpm
+$SDB shell rpm -Uvh --force --nodeps /opt/$APP-debuginfo-$VER.$ARCH.rpm
+$SDB shell rpm -Uvh --force --nodeps /opt/$APP-debugsource-$VER.$ARCH.rpm
+
+echo "UNIT TEST----------------------------------------------------"
+export GCOV_PREFIX=/opt
+$SDB shell G_DEBUG=fatal-criticals GCOV_PREFIX=/usr/src/packages GCOV_PREFIX_STRIP=3 /usr/local/bin/system-setting-unittest
+
+echo "COVERAGE TEST----------------------------------------------------"
+sdb pull /usr/src/packages/BUILD/$APP-$VERSHORT/CMakeFiles > /dev/null 2>&1
+lcov -c -d $APP.dir/ -o $APP.info > /dev/null 2>&1
+
+VAR1="/usr/src/packages/BUILD/$APP-$VERSHORT"
+PWD=`pwd`
+sed -i "s#$VAR1#$PWD#g" $APP.info
+
+genhtml $APP.info -o out
+find . -name "*.dir" -type d -prune -exec rm -rf '{}' '+'
+rm $APP.info
+