test: run all tests through valgrind
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 24 Apr 2014 01:27:14 +0000 (11:27 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Tue, 29 Apr 2014 00:49:10 +0000 (10:49 +1000)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
configure.ac
test/Makefile.am
test/valgrind.suppressions [new file with mode: 0644]

index 1c57bf9..f63760d 100644 (file)
@@ -68,9 +68,12 @@ AC_SUBST([GNU_LD_FLAGS], $with_ldflags)
 
 PKG_PROG_PKG_CONFIG()
 PKG_CHECK_MODULES(CHECK, [check >= 0.9.9], [HAVE_CHECK="yes"], [HAVE_CHECK="no"])
-if test "x$HAVE_CHECK" != "xyes"; then
-       AC_MSG_WARN([check not found - skipping building unit tests])
+if test "x$HAVE_CHECK" = "xyes"; then
+       AC_PATH_PROG(VALGRIND, [valgrind])
+else
+       AC_MSG_WARN([check not found - skipping building unit tests])
 fi
+AM_CONDITIONAL(HAVE_VALGRIND, [test "x$VALGRIND" != "x"])
 AM_CONDITIONAL(BUILD_TESTS, [test "x$HAVE_CHECK" = "xyes"])
 
 with_cflags=""
index 9cf0726..e076d84 100644 (file)
@@ -2,6 +2,8 @@ if BUILD_TESTS
 run_tests = test-libevdev test-kernel
 build_tests = test-compile-pedantic test-link
 
+EXTRA_DIST =
+
 .NOTPARALLEL:
 
 noinst_PROGRAMS = $(run_tests) $(build_tests)
@@ -51,6 +53,21 @@ test_kernel_SOURCES = \
 test_kernel_CFLAGS = -I$(top_srcdir)
 test_kernel_LDADD = $(CHECK_LIBS)
 
+if HAVE_VALGRIND
+VALGRIND_FLAGS=--leak-check=full \
+               --quiet \
+               --error-exitcode=3 \
+               --suppressions=$(srcdir)/valgrind.suppressions
+
+valgrind:
+               $(MAKE) check-TESTS LOG_COMPILER="$(VALGRIND)" LOG_FLAGS="$(VALGRIND_FLAGS)"
+
+check: valgrind
+
+EXTRA_DIST += valgrind.suppressions
+endif
+
+
 if GCOV_ENABLED
 
 CLEANFILES = gcov-report.txt
diff --git a/test/valgrind.suppressions b/test/valgrind.suppressions
new file mode 100644 (file)
index 0000000..07fae53
--- /dev/null
@@ -0,0 +1,22 @@
+{
+   <timer_create@@GLIBC_2.3.3>
+   Memcheck:Param
+   timer_create(evp)
+   fun:timer_create@@GLIBC_2.3.3
+   fun:srunner_run
+   fun:main
+}
+{
+   <ioctl_EVIOCGRAB_unaddressable_bytes>
+   Memcheck:Param
+   ioctl(generic)
+   fun:ioctl
+   fun:libevdev_grab
+}
+{
+   <ioctl_EVIOCREVOKE_unaddressable_bytes>
+   Memcheck:Param
+   ioctl(generic)
+   fun:ioctl
+   fun:test_revoke*
+}