Add gcov build and line coverage calculation during build 35/264835/6
authorNishant Chaprana <n.chaprana@samsung.com>
Thu, 30 Sep 2021 11:47:26 +0000 (17:17 +0530)
committerNishant Chaprana <n.chaprana@samsung.com>
Tue, 5 Oct 2021 11:47:14 +0000 (17:17 +0530)
Change-Id: I9fea1ed0f2ebc182a09be5b2d6d69d19282280c1
Signed-off-by: Nishant Chaprana <n.chaprana@samsung.com>
packaging/capi-network-wifi-manager.spec
tests/CMakeLists.txt
tests/mocks/mock_system_info.c

index ab659af..7b7e72b 100644 (file)
@@ -18,10 +18,6 @@ BuildRequires:  pkgconfig(capi-appfw-application)
 BuildRequires: pkgconfig(gmock)
 Requires(post): /sbin/ldconfig
 Requires(postun): /sbin/ldconfig
-%if 0%{?gcov:1}
-BuildRequires: lcov
-BuildRequires: tar
-%endif
 
 %description
 Network Wi-Fi Manager library in Tizen C API
@@ -46,6 +42,9 @@ Test Application for Wi-Fi Manager
 %package gcov
 Summary: Coverage Data of %{name}
 Group: Network & Connectivity/Testing
+BuildRequires:  pkgconfig(gmock)
+BuildRequires:  lcov
+BuildRequires:  tar
 
 %description gcov
 The %{name}-gcov pacakge contains gcov objects
@@ -66,7 +65,8 @@ export LDFLAGS+=" -lgcov"
 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
 %cmake . -DFULLVER=%{version} -DMAJORVER=${MAJORVER} \
        -DCMAKE_VERBOSE_MAKEFILE=OFF \
-       -DBIN_INSTALL_DIR:PATH=%{_bindir}
+       -DBIN_INSTALL_DIR:PATH=%{_bindir} \
+       -DBUILD_GTESTS=%{?gcov:1}%{!?gcov:0}
 
 make %{?_smp_mflags}
 
@@ -74,9 +74,17 @@ make %{?_smp_mflags}
 %make_install
 
 %if 0%{?gcov:1}
-find .. -name '*.gcno' | tar cf %{name}-gcov.tar -T -
+find .. -name '*.gcno' | grep -v src | tar cf %{name}-gcov.tar -T -
 install -d -m 755 %{buildroot}%{_datadir}/gcov/obj
 tar xf %{name}-gcov.tar -C %{buildroot}%{_datadir}/gcov/obj
+
+%check
+tests/gtest-wifi-manager
+# Calculating linecoverage only for library source code
+find . -name "*.gcno" | grep -v src | xargs rm -f
+find . -name "*.gcda" | grep -v src | xargs rm -f
+lcov -c --ignore-errors graph --no-external -b . -d . -o %{name}.info
+genhtml %{name}.info -o out --legend --show-details
 %endif
 
 %post -p /sbin/ldconfig
index 1f1759d..8527989 100644 (file)
@@ -1,7 +1,7 @@
 LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
 SET(GTEST "gtest-wifi-manager")
 
-pkg_check_modules(gtest_pkgs REQUIRED gmock glib-2.0)
+pkg_check_modules(gtest_pkgs REQUIRED capi-base-common gmock glib-2.0 dlog gio-2.0)
 INCLUDE_DIRECTORIES(${gtest_pkgs_INCLUDE_DIRS})
 LINK_DIRECTORIES(${gtest_pkgs_LIBRARY_DIRS})
 
@@ -12,6 +12,7 @@ ADD_EXECUTABLE(${GTEST} ${GTEST_SRCS})
 TARGET_LINK_LIBRARIES(${GTEST} ${gtest_pkgs_LIBRARIES} ${${fw_name}_LIBRARIES})
 SET_TARGET_PROPERTIES(${GTEST} PROPERTIES COMPILE_FLAGS "-fPIE" LINK_FLAGS "-Wl,\
 --wrap=system_info_get_platform_bool,\
+--wrap=system_info_get_platform_string,\
 --wrap=g_try_malloc0,\
 --wrap=g_bus_get_sync,\
 --wrap=g_cancellable_new,\
index ff4acb6..84e1325 100644 (file)
@@ -18,6 +18,7 @@
 
 #include <stdio.h>
 #include <stdbool.h>
+#include <string.h>
 #include <system_info.h>
 
 static bool mock_sysinfo_result = false;
@@ -35,3 +36,12 @@ int __wrap_system_info_get_platform_bool(const char *key, bool *value)
        *value = mock_sysinfo_result;
        return SYSTEM_INFO_ERROR_NONE;
 }
+
+int __wrap_system_info_get_platform_string(const char *key, char **value)
+{
+       if (mock_sysinfo_result == false)
+               return -1;
+
+       *value = strdup("M");
+       return SYSTEM_INFO_ERROR_NONE;
+}