factor out the common stuff
authorThomas Vander Stichele <thomas@apestaart.org>
Sat, 20 Aug 2005 14:00:11 +0000 (14:00 +0000)
committerThomas Vander Stichele <thomas@apestaart.org>
Sat, 20 Aug 2005 14:00:11 +0000 (14:00 +0000)
Original commit message from CVS:
factor out the common stuff

Makefile.am
check.mak [new file with mode: 0644]
gst.supp [new file with mode: 0644]

index 656a7aa..0a1e9a9 100644 (file)
@@ -6,4 +6,5 @@ EXTRA_DIST = \
        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
diff --git a/check.mak b/check.mak
new file mode 100644 (file)
index 0000000..9f36288
--- /dev/null
+++ b/check.mak
@@ -0,0 +1,43 @@
+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
diff --git a/gst.supp b/gst.supp
new file mode 100644 (file)
index 0000000..e47a8a0
--- /dev/null
+++ b/gst.supp
@@ -0,0 +1,80 @@
+### 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
+}
+