[rygel] build: Add option to generate coverage report



commit f5b87b4dc41f186be738e129b46c0996a6bdb158
Author: Jens Georg <mail jensge org>
Date:   Tue Jan 3 21:10:04 2012 +0100

    build: Add option to generate coverage report

 common.am         |    7 +++++--
 configure.ac      |   17 +++++++++++++++++
 tests/Makefile.am |   22 +++++++++++++++++++---
 3 files changed, 41 insertions(+), 5 deletions(-)
---
diff --git a/common.am b/common.am
index 7f99e9e..3061cbc 100644
--- a/common.am
+++ b/common.am
@@ -26,6 +26,7 @@ AM_CFLAGS = \
 	$(GSTREAMER_BASE_CFLAGS) \
 	$(GEE_CFLAGS) \
 	$(UUID_CFLAGS) \
+	$(COVERAGE_CFLAGS) \
 	-I$(rygeldir) \
 	-DDATA_DIR='"$(shareddir)"' -DSYS_CONFIG_DIR='"$(sysconfigdir)"'\
 	-DPLUGIN_DIR='"$(plugindir)"' -DDESKTOP_DIR='"$(desktopdir)"'\
@@ -37,7 +38,8 @@ RYGEL_COMMON_LDADD = \
 	$(LIBGSTREAMER_LIBS) \
 	$(GSTREAMER_BASE_LIBS) \
 	$(GEE_LIBS) \
-	$(UUID_LIBS)
+	$(UUID_LIBS) \
+	$(COVERAGE_LIBS)
 
 # Note: the -g needs to be at the end of VALAFLAGS to not break make dist
 RYGEL_COMMON_PLUGIN_VALAFLAGS = \
@@ -48,7 +50,8 @@ RYGEL_COMMON_VALAFLAGS = \
 	--pkg rygel-build-config --pkg gupnp-1.0 \
 	--vapidir=$(rygeldir) \
 	--pkg gupnp-av-1.0 --pkg gee-1.0 \
-	$(RYGEL_DEBUG_VALAFLAGS)
+	$(RYGEL_DEBUG_VALAFLAGS) \
+	$(COVERAGE_VALAFLAGS)
 
 RYGEL_PLUGIN_LINKER_FLAGS = -shared -fPIC -module -avoid-version
 
diff --git a/configure.ac b/configure.ac
index 5ec3717..4cf33a2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -156,6 +156,23 @@ AC_ARG_ENABLE([tests],
               enable_tests=no)
 AM_CONDITIONAL([ALWAYS_TEST], [test "x$enable_tests" = "xyes"])
 
+dnl Generate coverage data
+AC_ARG_ENABLE([coverage],
+  AS_HELP_STRING([--enable-coverage],
+                 [Generate converage reports for unit tests]),
+  [],
+  [enable_coverage=no])
+AM_CONDITIONAL([ENABLE_COVERAGE],[test "x$enable_coverage" != "xno"])
+AS_IF([test "x$enable_coverage" != "xno"],
+  [
+    AC_PATH_PROG([LCOV], [lcov])
+    AC_PATH_PROG([GENHTML], [genhtml])
+    AC_SUBST([COVERAGE_LIBS],["-lgcov"])
+    AC_SUBST([COVERAGE_CFLAGS],["-fprofile-arcs -ftest-coverage"])
+    AC_SUBST(COVERAGE_VALAFLAGS,["-g"])
+  ]
+)
+
 dnl Check additional requirements for MediaExport plugins
 if test "x$enable_media_export_plugin" = "xyes";
 then
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5c31867..cd26040 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -10,7 +10,8 @@ AM_CFLAGS = $(LIBGUPNP_CFLAGS) \
 	    $(UUID_CFLAGS) \
 	    $(LIBSOUP_CFLAGS) \
 	    -I$(top_srcdir) -DDATA_DIR='"$(shareddir)"' \
-	    -include config.h  -DG_LOG_DOMAIN='"Rygel"'
+	    -include config.h  -DG_LOG_DOMAIN='"Rygel"' \
+	    $(COVERAGE_CFLAGS)
 
 LDADD = $(LIBGUPNP_LIBS) \
 	$(LIBGUPNP_AV_LIBS) \
@@ -20,12 +21,14 @@ LDADD = $(LIBGUPNP_LIBS) \
 	$(GIO_LIBS) \
 	$(GEE_LIBS) \
 	$(UUID_LIBS) \
-	$(LIBSOUP_LIBS)
+	$(LIBSOUP_LIBS) \
+	$(COVERAGE_LIBS)
 
 AM_VALAFLAGS = --disable-warnings --thread \
 	       --pkg gupnp-1.0 --pkg gupnp-av-1.0 --pkg dbus-glib-1 \
                --pkg gconf-2.0 --pkg gstreamer-0.10 --pkg gstreamer-base-0.10 \
-               --pkg gio-2.0 --pkg gee-1.0 --pkg gstreamer-pbutils-0.10 -g
+               --pkg gio-2.0 --pkg gee-1.0 --pkg gstreamer-pbutils-0.10 \
+	       $(COVERAGE_VALAFLAGS)
 
 check_PROGRAMS = rygel-http-item-uri-test \
 		 rygel-http-response-test \
@@ -77,3 +80,16 @@ rygel_album_art_spec_test_SOURCES = rygel-album-art-spec-test.vala \
 if ALWAYS_TEST
 all-local: check
 endif
+
+if ENABLE_COVERAGE
+coverage: check
+	$(LCOV) --directory $(srcdir) --capture \
+		--output-file $(top_builddir)/rygel.info
+	$(LCOV) --directory $(srcdir) --output-file $(top_builddir)/rygel.info \
+		--remove $(top_builddir)/rygel.info "*.c" "*.h" "*.vapi"
+	rm -rf $(top_builddir)/coverage
+	$(mkdir_p) $(top_builddir)/coverage
+	$(GENHTML) --title "@PACKAGE_STRING@" \
+		--output-directory $(top_builddir)/coverage \
+		$(top_builddir)/rygel.info
+endif



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]