diff options
author | Thibault Saunier <tsaunier@igalia.com> | 2020-06-16 15:34:04 -0400 |
---|---|---|
committer | GStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2020-06-22 17:20:32 +0000 |
commit | ae3a45d1b6834eccd516873310194e88b180994e (patch) | |
tree | 51f0e5ea06152e2ede092240403b51f1cb9197f8 | |
parent | 7003d692ca7ef0e3d9be3911bbd4cf33155dff15 (diff) |
validate: Print errors on action failures
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/207>
-rw-r--r-- | validate/gst/validate/gst-validate-reporter.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/validate/gst/validate/gst-validate-reporter.c b/validate/gst/validate/gst-validate-reporter.c index f23626a..83ae048 100644 --- a/validate/gst/validate/gst-validate-reporter.c +++ b/validate/gst/validate/gst-validate-reporter.c @@ -30,6 +30,7 @@ # include "config.h" #endif +#include <stdio.h> #include <math.h> #include "gst-validate-internal.h" #include "gst-validate-reporter.h" @@ -344,7 +345,7 @@ gst_validate_report_action (GstValidateReporter * reporter, GstValidateAction * action, GstValidateIssueId issue_id, const gchar * format, ...) { - va_list var_args; + va_list var_args, var_copy; GString *f; if (!action) { @@ -372,8 +373,33 @@ gst_validate_report_action (GstValidateReporter * reporter, done: va_start (var_args, format); + G_VA_COPY (var_copy, var_args); gst_validate_report_valist (reporter, issue_id, f->str, var_args); + if (action) { + gint i, indent = gst_validate_action_get_level (action) * 2; + gchar *message, **lines, *color = NULL; + const gchar *endcolor = ""; + +#if GLIB_CHECK_VERSION(2,50,0) + if (g_log_writer_supports_color (fileno (stderr))) { + color = gst_debug_construct_term_color (GST_DEBUG_FG_RED); + endcolor = "\033[0m"; + } +#endif + gst_validate_printf (NULL, "%*s%s> Error%s:\n", indent, "", + color ? color : "", endcolor); + + message = gst_info_strdup_vprintf (f->str, var_copy); + lines = g_strsplit (message, "\n", -1); + for (i = 1; lines[i]; i++) + gst_validate_printf (NULL, "%*s%s>%s %s\n", indent, "", color, endcolor, + lines[i]); + g_strfreev (lines); + g_free (message); + g_free (color); + } va_end (var_args); + va_end (var_copy); g_string_free (f, TRUE); } |