diff options
author | Cedric BAIL <cedric@osg.samsung.com> | 2015-01-16 16:39:37 +0100 |
---|---|---|
committer | Cedric BAIL <cedric@osg.samsung.com> | 2015-01-16 16:39:37 +0100 |
commit | ef8f767f0cfb558b75d5b2533c57c97b050a7830 (patch) | |
tree | ea36f812e923e526c10bdbcf77f8f1e05814370d | |
parent | f176c1589ccfc518858978a7f08735db7911b130 (diff) | |
download | elementary-ef8f767f0cfb558b75d5b2533c57c97b050a7830.tar.gz |
tests: add coverage support.
And our current score is 19% functions coverage for Elementary.
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | Makefile.am | 34 | ||||
-rw-r--r-- | configure.ac | 50 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/bin/Makefile.am | 8 |
5 files changed, 88 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore index 4c0b0c75c..5427997d4 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,8 @@ *.lo *.o *.la +*.gcda +*.gcno .libs .deps .*.swp @@ -57,3 +59,4 @@ tags /config/mobile/*.src /config/standard/*.src Session.vim +/coverage/ diff --git a/Makefile.am b/Makefile.am index 70f7a92fa..30de680d1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -54,9 +54,6 @@ po/Rules-quot endif - - - EXTRA_DIST = \ README \ AUTHORS \ @@ -125,3 +122,34 @@ doc: screenshots: all @echo "entering src/examples/" $(MAKE) -C src/examples screenshots + +if ELEMENTARY_ENABLE_COVERAGE + +lcov-reset: + @rm -rf $(top_builddir)/coverage + @find $(top_builddir) -name "*.gcda" -delete + @lcov --zerocounters --directory $(top_builddir) + +lcov-report: + @mkdir $(top_builddir)/coverage + lcov --capture --compat-libtool --no-external --output-file $(top_builddir)/coverage/coverage.info --directory $(top_builddir) --base-directory $(top_srcdir)/src/lib/ + lcov --remove $(top_builddir)/coverage/coverage.info '*.h' --output-file $(top_builddir)/coverage/coverage.cleaned.info + lcov --remove $(top_builddir)/coverage/coverage.cleaned.info '*/elm_test_*' --output-file $(top_builddir)/coverage/coverage.cleaned2.info + lcov --remove $(top_builddir)/coverage/coverage.cleaned2.info '*/elm_suite.c' --output-file $(top_builddir)/coverage/coverage.cleaned3.info + lcov --remove $(top_builddir)/coverage/coverage.cleaned3.info '*NONE*' --output-file $(top_builddir)/coverage/coverage.cleaned4.info + genhtml --branch-coverage -t "$(PACKAGE_STRING)" -o $(top_builddir)/coverage/html $(top_builddir)/coverage/coverage.cleaned4.info + @echo "Coverage Report at $(top_builddir)/coverage/html" + +endif + +if ELEMENTARY_ENABLE_TESTS + +lcov-check: +if ELEMENTARY_ENABLE_COVERAGE + @$(MAKE) $(AM_MAKEFLAGS) lcov-reset +endif + @$(MAKE) $(AM_MAKEFLAGS) check +if ELEMENTARY_ENABLE_COVERAGE + @$(MAKE) $(AM_MAKEFLAGS) lcov-report +endif +endif diff --git a/configure.ac b/configure.ac index 5804d6b7a..5b075e870 100644 --- a/configure.ac +++ b/configure.ac @@ -39,10 +39,32 @@ AC_ARG_ENABLE([cxx-bindings], # Tests AC_ARG_WITH([tests], - [AS_HELP_STRING([--with-tests=none|regular], - [choose elementary testing method: regular or none.(coverage will be supported)@<:@default=none@:>@])], + [AS_HELP_STRING([--with-tests=none|regular|coverate], + [choose elementary testing method: regular, coverage or none @<:@default=none@:>@])], [build_tests=${withval}], - [build_tests=none]) + [build_tests=auto]) + +want_coverage="no" +want_tests="no" +case "${build_tests}" in + auto) + if test "${build_profile}" = "dev"; then + want_tests="yes" + fi + ;; + regular) + want_tests="yes" + ;; + coverage) + want_tests="yes" + want_coverage="yes" + ;; + no*) + ;; + *) + AC_MSG_ERROR([Unknown build tests option: --with-tests=${build_tests}]) + ;; +esac # Elementary base dir @@ -336,10 +358,28 @@ ELEMENTARY_PC_LIBS="${ELEMENTARY_PC_LIBS} ${requirement_elm_libs}" AC_SUBST([requirement_elm_pc]) # check unit testing library -if test "${build_tests}" = "regular"; then +if test "${want_tests}" = "yes"; then PKG_CHECK_MODULES([CHECK], [check >= 0.9.5]) fi -AM_CONDITIONAL([ENABLE_ELEMENTARY_TESTS], [test "${build_tests}" = "regular"]) +AM_CONDITIONAL([ELEMENTARY_ENABLE_TESTS], [test "${want_tests}" = "yes"]) + +# lcov +if test "${want_coverage}" = "yes" ; then + AC_CHECK_PROG([have_lcov], [lcov], [yes], [no]) + if test "x${have_lcov}" = "xyes" ; then + ELEMENTARY_CFLAGS="${ELEMENTARY_CFLAGS} -fprofile-arcs -ftest-coverage" + ELEMENTARY_LIBS="${ELEMENTARY_LIBS} -lgcov" + if test "x${prefer_assert}" = "xno"; then + ELEMENTARY_CFLAGS="${ELEMENTARY_CFLAGS} -DNDEBUG" + else + ELEMENTARY_CFLAGS="${ELEMENTARY_CFLAGS} -g -O0 -DDEBUG" + fi + else + AC_MSG_ERROR([lcov is not found]) + fi +fi + +AM_CONDITIONAL([ELEMENTARY_ENABLE_COVERAGE], [test "${want_coverage}" = "yes"]) ### Checks for header files diff --git a/src/Makefile.am b/src/Makefile.am index 7f9e3c36e..bc0e30f01 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -9,6 +9,6 @@ endif SUBDIRS += examples -if ENABLE_ELEMENTARY_TESTS +if ELEMENTARY_ENABLE_TESTS SUBDIRS += tests endif diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 8c438daca..05faaf476 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -171,6 +171,14 @@ elementary_quicklaunch_LDADD = $(top_builddir)/src/lib/libelementary.la \ elementary_quicklaunch_LDFLAGS = if BUILD_RUN +elementary_run_CPPFLAGS = -I$(top_srcdir) \ +-I$(top_srcdir)/src/lib \ +-I$(top_builddir)/src/lib \ +-I$(top_srcdir)/src/bin \ +-DPACKAGE_BIN_DIR=\"$(bindir)\" \ +-DPACKAGE_LIB_DIR=\"$(libdir)\" \ +-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" + elementary_run_SOURCES = run.c elementary_run_LDADD = elementary_run_LDFLAGS = |