[PATCH 3/4] build: add code coverage support
Aleksander Morgado
aleksander at aleksander.es
Sun Jan 11 10:46:10 PST 2015
On Sun, Jan 11, 2015 at 3:07 PM, Jakub Sitnicki <jsitnicki at gmail.com> wrote:
> Build all targets, except for CLI tools (mmcli, uml290), with special
> flags needed for collecting code coverage information when the build has
> been configured with --enable-code-coverage.
>
> Three new targets are available in the top build directory:
>
> - `check-code-coverage' runs the test suite and generates a code
> coverage report,
>
> - `code-coverage-capture' generates a code coverage report from already
> collected data, which can come in handy when one wants to see code
> paths touched by a particular test,
>
> - `code-coverage-clean' removes the collected coverage data and the
> generated reports.
Thanks for the patch, but looking at the full-of-red-rows report made
me quite sad...
Pushed to git master, thanks!
> ---
> .gitignore | 5 +++++
> Makefile.am | 7 +++++++
> configure.ac | 9 +++++++++
> libmm-glib/Makefile.am | 6 +++++-
> libmm-glib/generated/Makefile.am | 3 +++
> libmm-glib/generated/tests/Makefile.am | 3 ++-
> libmm-glib/tests/Makefile.am | 3 +++
> libqcdm/src/Makefile.am | 4 +++-
> libqcdm/tests/Makefile.am | 3 +++
> libwmc/src/Makefile.am | 4 +++-
> libwmc/tests/Makefile.am | 3 +++
> plugins/Makefile.am | 9 +++++++--
> src/Makefile.am | 3 +++
> src/tests/Makefile.am | 3 +++
> 14 files changed, 59 insertions(+), 6 deletions(-)
>
> diff --git a/.gitignore b/.gitignore
> index 5888e9d..2ce4de0 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -18,6 +18,8 @@ gtk-doc.make
> *.lo
> *.la
> *.loT
> +*.gcno
> +*.gcda
> libtool
> .deps
> .libs
> @@ -165,3 +167,6 @@ plugins/test-service-*
>
> TAGS
> ABOUT-NLS
> +
> +ModemManager-*-coverage.info
> +ModemManager-*-coverage/
> diff --git a/Makefile.am b/Makefile.am
> index f6bea8e..762306f 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -24,3 +24,10 @@ EXTRA_DIST = \
> COPYING.LIB
>
> ACLOCAL_AMFLAGS = -I m4
> +
> + at CODE_COVERAGE_RULES@
> +
> +if CODE_COVERAGE_ENABLED
> +clean-local:
> + -find $(top_builddir) -name "*.gcno" -delete
> +endif
> diff --git a/configure.ac b/configure.ac
> index c0064d2..8fd6c11 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -110,6 +110,9 @@ AC_SUBST(GLIB_MKENUMS)
> GDBUS_CODEGEN=`$PKG_CONFIG --variable=gdbus_codegen gio-2.0`
> AC_SUBST(GDBUS_CODEGEN)
>
> +# Code coverage (disabled by default)
> +AX_CODE_COVERAGE
> +
> # GObject Introspection
> GOBJECT_INTROSPECTION_CHECK([0.9.6])
>
> @@ -302,7 +305,13 @@ echo "
> compiler: ${CC}
> cflags: ${CFLAGS}
> Maintainer mode: ${USE_MAINTAINER_MODE}
> + Code coverage: ${CODE_COVERAGE_ENABLED}"
> +if test "x${CODE_COVERAGE_ENABLED}" = "xyes"; then
> + echo " Code coverage cflags: ${CODE_COVERAGE_CFLAGS}"
> + echo " Code coverage ldflags: ${CODE_COVERAGE_LDFLAGS}"
> +fi
>
> +echo "
> D-Bus system directory: ${DBUS_SYS_DIR}
> udev base directory: ${UDEV_BASE_DIR}
> systemd unit directory: ${with_systemdsystemunitdir}
> diff --git a/libmm-glib/Makefile.am b/libmm-glib/Makefile.am
> index 54e79fc..da1f5d4 100644
> --- a/libmm-glib/Makefile.am
> +++ b/libmm-glib/Makefile.am
> @@ -1,5 +1,8 @@
> SUBDIRS = generated . tests
>
> +AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
> +AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> +
> lib_LTLIBRARIES = libmm-glib.la
>
> libmm_glib_la_SOURCES = \
> @@ -91,7 +94,8 @@ libmm_glib_la_LIBADD = \
> $(LIBMM_GLIB_LIBS)
>
> libmm_glib_la_LDFLAGS = \
> - -version-info $(MM_GLIB_LT_CURRENT):$(MM_GLIB_LT_REVISION):$(MM_GLIB_LT_AGE)
> + -version-info $(MM_GLIB_LT_CURRENT):$(MM_GLIB_LT_REVISION):$(MM_GLIB_LT_AGE) \
> + $(AM_LDFLAGS)
>
> includedir = @includedir@/libmm-glib
> include_HEADERS = \
> diff --git a/libmm-glib/generated/Makefile.am b/libmm-glib/generated/Makefile.am
> index 2a608fc..5a90b90 100644
> --- a/libmm-glib/generated/Makefile.am
> +++ b/libmm-glib/generated/Makefile.am
> @@ -1,6 +1,9 @@
>
> SUBDIRS = . tests
>
> +AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
> +AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> +
> noinst_LTLIBRARIES = libmm-generated.la
>
> GENERATED_H = \
> diff --git a/libmm-glib/generated/tests/Makefile.am b/libmm-glib/generated/tests/Makefile.am
> index a4bed42..0cebb72 100644
> --- a/libmm-glib/generated/tests/Makefile.am
> +++ b/libmm-glib/generated/tests/Makefile.am
> @@ -1,4 +1,5 @@
> -
> +AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
> +AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
>
> noinst_LTLIBRARIES = libmm-test-generated.la
>
> diff --git a/libmm-glib/tests/Makefile.am b/libmm-glib/tests/Makefile.am
> index be93d4c..f98f9d7 100644
> --- a/libmm-glib/tests/Makefile.am
> +++ b/libmm-glib/tests/Makefile.am
> @@ -1,5 +1,8 @@
> include $(top_srcdir)/gtester.make
>
> +AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
> +AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> +
> noinst_PROGRAMS = test-common-helpers
> TEST_PROGS += $(noinst_PROGRAMS)
>
> diff --git a/libqcdm/src/Makefile.am b/libqcdm/src/Makefile.am
> index 9aa9500..2caaf00 100644
> --- a/libqcdm/src/Makefile.am
> +++ b/libqcdm/src/Makefile.am
> @@ -1,5 +1,7 @@
> -noinst_LTLIBRARIES = libqcdm.la libqcdm-test.la
> +AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
> +AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
>
> +noinst_LTLIBRARIES = libqcdm.la libqcdm-test.la
>
> libqcdm_la_CPPFLAGS = \
> $(MM_CFLAGS)
> diff --git a/libqcdm/tests/Makefile.am b/libqcdm/tests/Makefile.am
> index 3259906..c00f1b0 100644
> --- a/libqcdm/tests/Makefile.am
> +++ b/libqcdm/tests/Makefile.am
> @@ -1,5 +1,8 @@
> include $(top_srcdir)/gtester.make
>
> +AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
> +AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> +
> noinst_PROGRAMS = test-qcdm modepref ipv6pref reset
> TEST_PROGS += test-qcdm
>
> diff --git a/libwmc/src/Makefile.am b/libwmc/src/Makefile.am
> index 4620501..b662f89 100644
> --- a/libwmc/src/Makefile.am
> +++ b/libwmc/src/Makefile.am
> @@ -1,5 +1,7 @@
> -noinst_LTLIBRARIES = libwmc.la
> +AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
> +AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
>
> +noinst_LTLIBRARIES = libwmc.la
>
> libwmc_la_CPPFLAGS = \
> $(MM_CFLAGS)
> diff --git a/libwmc/tests/Makefile.am b/libwmc/tests/Makefile.am
> index 33eaf3d..4622fbc 100644
> --- a/libwmc/tests/Makefile.am
> +++ b/libwmc/tests/Makefile.am
> @@ -1,5 +1,8 @@
> include $(top_srcdir)/gtester.make
>
> +AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
> +AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> +
> noinst_PROGRAMS = test-wmc
> TEST_PROGS += $(noinst_PROGRAMS)
>
> diff --git a/plugins/Makefile.am b/plugins/Makefile.am
> index d2cbcb1..c29364d 100644
> --- a/plugins/Makefile.am
> +++ b/plugins/Makefile.am
> @@ -3,6 +3,9 @@ include $(top_srcdir)/gtester.make
>
> # Common CPPFLAGS and LDFLAGS
>
> +AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
> +AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> +
> PLUGIN_COMMON_COMPILER_FLAGS = \
> $(MM_CFLAGS) \
> $(GUDEV_CFLAGS) \
> @@ -13,13 +16,15 @@ PLUGIN_COMMON_COMPILER_FLAGS = \
> -I$(top_builddir)/include \
> -I$(top_srcdir)/libmm-glib \
> -I$(top_srcdir)/libmm-glib/generated \
> - -I$(top_builddir)/libmm-glib/generated
> + -I$(top_builddir)/libmm-glib/generated \
> + $(AM_CFLAGS)
>
> PLUGIN_COMMON_LINKER_FLAGS = \
> $(GUDEV_LIBS) \
> $(MM_LIBS) \
> -module \
> - -avoid-version
> + -avoid-version \
> + $(AM_LDFLAGS)
>
> if WITH_QMI
> PLUGIN_COMMON_COMPILER_FLAGS += $(QMI_CFLAGS)
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 6912b00..3b545ee 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -8,6 +8,9 @@ udevrules_DATA = \
> 77-mm-usb-serial-adapters-greylist.rules \
> 80-mm-candidate.rules
>
> +AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
> +AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> +
> noinst_LTLIBRARIES = libmodem-helpers.la libport.la
>
> libmodem_helpers_la_CPPFLAGS = \
> diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
> index c52e4d1..0804b14 100644
> --- a/src/tests/Makefile.am
> +++ b/src/tests/Makefile.am
> @@ -1,5 +1,8 @@
> include $(top_srcdir)/gtester.make
>
> +AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
> +AM_LDFLAGS = $(CODE_COVERAGE_LDFLAGS)
> +
> noinst_PROGRAMS = \
> test-modem-helpers \
> test-charsets \
> --
> 1.9.3
>
--
Aleksander
https://aleksander.es
More information about the ModemManager-devel
mailing list