This patch adds test coverage to the 'make test' target.
gcov is used for gcc and tcov is used for Sun studio compiler.
Victor
diff --git a/Makefile.am b/Makefile.am
index 29085ec..c149d00 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -7,6 +7,7 @@ memcached_LDADD = @DTRACE_OBJ@ @DAEMON_OBJ@
memcached_debug_LDADD = @DTRACE_DEBUG_OBJ@ @DAEMON_OBJ@
memcached_DEPENDENCIES = @DTRACE_OBJ@ @DAEMON_OBJ@
memcached_debug_DEPENDENCIES = @DTRACE_DEBUG_OBJ@ @DAEMON_OBJ@
+memcached_debug_CFLAGS = @PROFILER_FLAGS@
memcached_dtrace.h:
${DTRACE} -h -s memcached_dtrace.d
@@ -26,6 +27,20 @@ EXTRA_DIST = doc scripts TODO t memcached.spec daemon.c memcached_dtrace.d
test: memcached-debug
prove $(srcdir)/t
+ @if test `basename $(PROFILER)` = "gcov"; then \
+ for file in memcached_debug-*.gc??; do \
+ mv -f $$file `echo $$file | sed 's/memcached_debug-//'`; \
+ done && \
+ for file in *.gcda; do \
+ $(PROFILER) `echo $$file | sed 's/.gcda/.c/'` 2>&1; \
+ done \
+ elif test `basename $(PROFILER)` = "tcov"; then \
+ files=`grep SRCFILE memcached-debug.profile/tcovd | sed 's/SRCFILE://' | sort | uniq` && \
+ $(PROFILER) -x memcached-debug.profile $$files 2>&1; \
+ for file in *.tcov; do \
+ echo `echo $$file | sed 's/.tcov//'` : `grep 'Percent of the file executed' $$file`; \
+ done \
+ else :; fi
dist-hook:
rm -rf $(distdir)/doc/.svn/
diff --git a/configure.ac b/configure.ac
index 01c51cf..1a8afe3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -28,6 +28,32 @@ AC_SUBST(DTRACE_OBJ)
AC_SUBST(DTRACE_DEBUG_OBJ)
AC_SUBST(DTRACEFLAGS)
+if test "$GCC" = "yes"
+then
+ AC_PATH_PROG([PROFILER], [gcov], "no", [$PATH])
+ if test "x$PROFILER" != "xno"; then
+ PROFILER_FLAGS="-fprofile-arcs -ftest-coverage"
+ fi
+else
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([], [dnl
+#ifdef __SUNPRO_C
+ return 0;
+#else
+ return 1;
+#endif
+ ])
+ ],[
+ AC_PATH_PROG([PROFILER], [tcov], "no", [$PATH])
+ if test "x$PROFILER" != "xno"; then
+ PROFILER_FLAGS=-xprofile=tcov
+ fi
+ ])
+fi
+
+AC_SUBST(PROFILER_FLAGS)
+
+
AC_ARG_ENABLE(64bit,
[AS_HELP_STRING([--enable-64bit],[build 64bit verison])])
if test "x$enable_64bit" == "xyes"