From eb1af0ddaba11eff70af82b679a078a75c28de16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Tue, 16 Oct 2007 16:12:36 +0000 Subject: [PATCH] libs/gst/check/gstcheck.*: Allow runtime selection of unit tests to run via the GST_CHECKS environment variable (test... Original commit message from CVS: * libs/gst/check/gstcheck.c: * libs/gst/check/gstcheck.h: Allow runtime selection of unit tests to run via the GST_CHECKS environment variable (test case function names, comma-separated). --- ChangeLog | 7 +++++++ libs/gst/check/gstcheck.c | 25 +++++++++++++++++++++++++ libs/gst/check/gstcheck.h | 16 ++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/ChangeLog b/ChangeLog index 92741da304..46af1827c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-10-16 Tim-Philipp Müller + + * libs/gst/check/gstcheck.c: + * libs/gst/check/gstcheck.h: + Allow runtime selection of unit tests to run via the GST_CHECKS + environment variable (test case function names, comma-separated). + 2007-10-16 Stefan Kost * gst/gststructure.c: diff --git a/libs/gst/check/gstcheck.c b/libs/gst/check/gstcheck.c index a54c51b6a6..2e3da5e59e 100644 --- a/libs/gst/check/gstcheck.c +++ b/libs/gst/check/gstcheck.c @@ -329,3 +329,28 @@ gst_check_run_suite (Suite * suite, const gchar * name, const gchar * fname) srunner_free (sr); return nf; } + +gboolean +_gst_check_run_test_func (const gchar * func_name) +{ + const gchar *gst_checks; + gboolean res = FALSE; + gchar **funcs, **f; + + gst_checks = g_getenv ("GST_CHECKS"); + + /* no filter specified => run all checks */ + if (gst_checks == NULL || *gst_checks == '\0') + return TRUE; + + /* only run specified functions */ + funcs = g_strsplit (gst_checks, ",", -1); + for (f = funcs; f != NULL && *f != NULL; ++f) { + if (strcmp (*f, func_name) == 0) { + res = TRUE; + break; + } + } + g_strfreev (funcs); + return res; +} diff --git a/libs/gst/check/gstcheck.h b/libs/gst/check/gstcheck.h index 0bd901856f..e7a2481a8f 100644 --- a/libs/gst/check/gstcheck.h +++ b/libs/gst/check/gstcheck.h @@ -396,6 +396,22 @@ int main (int argc, char **argv) \ return gst_check_run_suite (s, # name, __FILE__); \ } +/* Hack to allow run-time selection of unit tests to run via the + * GST_CHECKS environment variable (test function names, comma-separated) */ + +gboolean _gst_check_run_test_func (const gchar * func_name); + +static inline void +__gst_tcase_add_test (TCase * tc, TFun tf, const gchar * func_name) +{ + if (_gst_check_run_test_func (func_name)) { + tcase_add_test (tc, tf); + } +} + +#undef tcase_add_test +#define tcase_add_test(tc,tf) __gst_tcase_add_test(tc,tf,G_STRINGIFY(tf)) + G_END_DECLS #endif /* __GST_CHECK_H__ */