glib-gen.mak gtk-doc.mak release.mak \
gst-autogen.sh \
gst-xmlinspect.py mangle-tmpl.py gtk-doc-plugins.mak \
- plugins.xsl gstdoc-scangobj
+ plugins.xsl gstdoc-scangobj \
+ gst.supp check.mak
--- /dev/null
+clean-local-check:
+ for i in `find . -name ".libs" -type d`; do \
+ rm -rf $$i; \
+ done
+
+if HAVE_VALGRIND
+# hangs spectacularly on some machines, so let's not do this by default yet
+check-local-disabled:
+ make valgrind
+else
+check-local-disabled:
+ @true
+endif
+
+# run any given test by running make test.check
+%.check: % $(CHECK_REGISTRY)
+ @$(TESTS_ENVIRONMENT) \
+ $*
+
+# valgrind any given test by running make test.valgrind
+%.valgrind: % $(CHECK_REGISTRY)
+ @$(TESTS_ENVIRONMENT) \
+ libtool --mode=execute \
+ $(VALGRIND_PATH) -q --suppressions=$(SUPPRESSIONS) \
+ --tool=memcheck --leak-check=yes --trace-children=yes \
+ $*
+
+# valgrind all tests
+valgrind: $(TESTS)
+ @echo "Valgrinding tests ..."
+ $(TESTS_ENVIRONMENT) $(top_builddir)/tools/gst-register
+ @failed=0; \
+ for t in $(filter-out $(VALGRIND_TESTS_DISABLE),$(TESTS)); do \
+ make $$t.valgrind; \
+ if test "$$?" -ne 0; then \
+ echo "Valgrind error for test $$t"; \
+ failed=`expr $$failed + 1`; \
+ fi; \
+ done; \
+ if test "$$failed" -ne 0; then \
+ echo "$$failed tests had leaks under valgrind"; \
+ false; \
+ fi
--- /dev/null
+### this file contains suppressions for valgrind when running
+### the gstreamer unit tests
+### it might be useful for wider use as well
+
+
+### glibc suppressions
+
+# glibc does not deallocate thread-local storage
+
+{
+ <tls>
+ Memcheck:Leak
+ fun:calloc
+ fun:_dl_allocate_tls
+ fun:pthread_create@@GLIBC_2.1
+}
+
+{
+ <pthread strstr>
+ Memcheck:Cond
+ fun:strstr
+ fun:__pthread_initialize_minimal
+ obj:/lib/libpthread-*.so
+ obj:/lib/libpthread-*.so
+ fun:call_init
+ fun:_dl_init
+ obj:/lib/ld-*.so
+}
+
+# a thread-related free problem in glibc from Edgard
+{
+ __libc_freeres_rw_acess
+ Memcheck:Addr4
+ obj:*
+ obj:*
+ obj:*
+ obj:*
+ obj:*
+ fun:__libc_freeres
+}
+
+### glib suppressions
+
+{
+ <g_type_init>
+ Memcheck:Leak
+ fun:calloc
+ fun:g_malloc0
+ obj:*
+ obj:*
+ fun:g_type_init_with_debug_flags
+ fun:g_type_init
+ fun:init_pre
+ fun:init_popt_callback
+ obj:*
+ obj:*
+ fun:poptGetContext
+ fun:gst_init_check_with_popt_table
+}
+
+### GStreamer suppressions
+
+# ds is saying he's rewriting the registry anyway
+{
+ <registry>
+ Memcheck:Leak
+ fun:malloc
+ fun:g_malloc
+ fun:g_strdup
+ fun:read_string
+ fun:load_plugin
+ fun:gst_xml_registry_load
+ fun:gst_registry_load
+ fun:_registry_load_func
+ fun:g_list_foreach
+ fun:gst_registry_pool_load_all
+ fun:init_post
+ fun:init_popt_callback
+}
+