summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@igalia.com>2020-06-16 15:34:04 -0400
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>2020-06-22 17:20:32 +0000
commitae3a45d1b6834eccd516873310194e88b180994e (patch)
tree51f0e5ea06152e2ede092240403b51f1cb9197f8
parent7003d692ca7ef0e3d9be3911bbd4cf33155dff15 (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.c28
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);
}