check: add support for blacklisting checks via GST_CHECKS_IGNORE
authorTim-Philipp Müller <tim@centricular.com>
Sun, 9 Feb 2014 16:38:10 +0000 (16:38 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Sun, 9 Feb 2014 16:39:53 +0000 (16:39 +0000)
libs/gst/check/gstcheck.c

index e7135ff..92ad5a8 100644 (file)
@@ -697,18 +697,26 @@ gst_check_run_suite (Suite * suite, const gchar * name, const gchar * fname)
   return nf;
 }
 
-gboolean
-_gst_check_run_test_func (const gchar * func_name)
+static gboolean
+gst_check_have_checks_list (const gchar * env_var_name)
+{
+  const gchar *env_val;
+
+  env_val = g_getenv (env_var_name);
+  return (env_val != NULL && *env_val != '\0');
+}
+
+static gboolean
+gst_check_func_is_in_list (const gchar * env_var, const gchar * func_name)
 {
   const gchar *gst_checks;
   gboolean res = FALSE;
   gchar **funcs, **f;
 
-  gst_checks = g_getenv ("GST_CHECKS");
+  gst_checks = g_getenv (env_var);
 
-  /* no filter specified => run all checks */
   if (gst_checks == NULL || *gst_checks == '\0')
-    return TRUE;
+    return FALSE;
 
   /* only run specified functions */
   funcs = g_strsplit (gst_checks, ",", -1);
@@ -722,6 +730,21 @@ _gst_check_run_test_func (const gchar * func_name)
   return res;
 }
 
+gboolean
+_gst_check_run_test_func (const gchar * func_name)
+{
+  /* if we have a whitelist, run it only if it's in the whitelist */
+  if (gst_check_have_checks_list ("GST_CHECKS"))
+    return gst_check_func_is_in_list ("GST_CHECKS", func_name);
+
+  /* if we have a blacklist, run it only if it's not in the blacklist */
+  if (gst_check_have_checks_list ("GST_CHECKS_IGNORE"))
+    return !gst_check_func_is_in_list ("GST_CHECKS_IGNORE", func_name);
+
+  /* no filter specified => run all checks */
+  return TRUE;
+}
+
 /**
  * gst_check_setup_events_with_stream_id:
  * @srcpad: The src #GstPad to push on