diff --git a/Makefile.am b/Makefile.am index 7b960fb2..291f478e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -80,3 +80,30 @@ gen-ChangeLog: check-valgrind: TESTS_ENVIRONMENT="VALGRIND_TESTS=1" $(MAKE) check + +LCOV_INFO=wget.info + +clean-lcov: + rm -rf $(LCOV_INFO) */*.gc?? */.libs/*.gc?? lcov/ + lcov --zerocounters --directory src/ + +check-coverage: clean clean-lcov + $(MAKE) CFLAGS="$(CFLAGS) --coverage" LDFLAGS="$(LDFLAGS) --coverage" + lcov --capture --initial --directory src/ --output-file $(LCOV_INFO) + $(MAKE) CFLAGS="$(CFLAGS) --coverage" LDFLAGS="$(LDFLAGS) --coverage" VALGRIND_TESTS=0 check + lcov --capture --directory src/ --output-file $(LCOV_INFO) + lcov --remove $(LCOV_INFO) '/usr/include/*' '*/lib/*' -o $(LCOV_INFO) + genhtml --prefix . --ignore-errors source $(LCOV_INFO) --legend --title "Wget" --output-directory=lcov + @echo + @echo "You can now view the coverage report with 'xdg-open lcov/index.html'" + +fuzz-coverage: clean clean-lcov + $(MAKE) -C lib + $(MAKE) -C src CFLAGS="$(CFLAGS) --coverage" LDFLAGS="$(LDFLAGS) --coverage" + $(MAKE) -C fuzz check CFLAGS="$(CFLAGS) --coverage" LDFLAGS="$(LDFLAGS) --coverage" + lcov --capture --initial --directory fuzz --directory src --output-file $(LCOV_INFO) + lcov --capture --directory fuzz --directory src --output-file $(LCOV_INFO) + lcov --remove $(LCOV_INFO) '/usr/include/*' '*/lib/*' -o $(LCOV_INFO) + genhtml --prefix . --ignore-errors source $(LCOV_INFO) --legend --title "Wget-fuzz" --output-directory=lcov + @echo + @echo "You can now view the coverage report with 'xdg-open lcov/index.html'" diff --git a/configure.ac b/configure.ac index 43f41dc2..8691c028 100644 --- a/configure.ac +++ b/configure.ac @@ -344,6 +344,8 @@ AC_CHECK_TYPES(sig_atomic_t, [], [], [ AM_ICONV gl_INIT +AX_CODE_COVERAGE + dnl dnl Checks for library functions. dnl diff --git a/fuzz/Makefile.am b/fuzz/Makefile.am index 7cf269bf..1ffeb389 100644 --- a/fuzz/Makefile.am +++ b/fuzz/Makefile.am @@ -1,12 +1,13 @@ -AM_CFLAGS = -Wall -Wextra $(WERROR_CFLAGS) $(WARN_CFLAGS) +AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir) -I$(top_builddir)/lib -I$(top_srcdir)/lib \ + $(CODE_COVERAGE_CPPFLAGS) \ -DSRCDIR=\"$(abs_srcdir)\" LDADD = ../lib/libgnu.a \ $(GETADDRINFO_LIB) $(HOSTENT_LIB) $(INET_NTOP_LIB) $(INET_PTON_LIB) \ $(LIBSOCKET) $(LIB_CLOCK_GETTIME) $(LIB_CRYPTO) $(LIB_GETLOGIN) $(LIB_NANOSLEEP) $(LIB_POLL) \ $(LIB_POSIX_SPAWN) $(LIB_PTHREAD_SIGMASK) $(LIB_SELECT) $(LIBICONV) $(LIBINTL) \ $(LIBMULTITHREAD) $(LIBTHREAD) $(SERVENT_LIB) @INTL_MACOSX_LIBS@ \ - $(FUZZ_LIBS) + $(FUZZ_LIBS) $(CODE_COVERAGE_LIBS) WGET_TESTS = \ wget_cookie_fuzzer$(EXEEXT) \ diff --git a/src/Makefile.am b/src/Makefile.am index 0c502800..322a3db5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -62,12 +62,12 @@ wget_SOURCES = connect.c convert.c cookies.c ftp.c \ exits.h version.h metalink.h xattr.h nodist_wget_SOURCES = version.c EXTRA_wget_SOURCES = iri.c -LDADD = $(LIBOBJS) ../lib/libgnu.a $(GETADDRINFO_LIB) $(HOSTENT_LIB)\ +LDADD = $(CODE_COVERAGE_LIBS) $(LIBOBJS) ../lib/libgnu.a $(GETADDRINFO_LIB) $(HOSTENT_LIB)\ $(INET_NTOP_LIB) $(LIBSOCKET) $(LIB_CLOCK_GETTIME) $(LIB_CRYPTO)\ $(LIB_NANOSLEEP) $(LIB_POSIX_SPAWN) $(LIB_SELECT) $(LIBICONV) $(LIBINTL)\ $(LIBTHREAD) $(LIBUNISTRING) $(SERVENT_LIB) -AM_CPPFLAGS = -I$(top_builddir)/lib -I$(top_srcdir)/lib -AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) +AM_CPPFLAGS = -I$(top_builddir)/lib -I$(top_srcdir)/lib $(CODE_COVERAGE_CPPFLAGS) +AM_CFLAGS = $(WERROR_CFLAGS) $(WARN_CFLAGS) $(CODE_COVERAGE_CFLAGS) ../lib/libgnu.a: cd ../lib && $(MAKE) $(AM_MAKEFLAGS) @@ -104,7 +104,7 @@ distclean-local: check_LIBRARIES = libunittest.a libunittest_a_SOURCES = $(wget_SOURCES) build_info.c nodist_libunittest_a_SOURCES = version.c -libunittest_a_CPPFLAGS = -DTESTING "-I$(top_builddir)/lib" "-I$(top_srcdir)/lib" +libunittest_a_CPPFLAGS = -DTESTING "-I$(top_builddir)/lib" "-I$(top_srcdir)/lib" $(CODE_COVERAGE_CPPLAGS) libunittest_a_LIBADD = $(LIBOBJS) CLEANFILES = *~ *.bak core core.[0-9]* build_info.c version.c