From: Yasushi SHOJI Date: Sun, 30 Apr 2017 03:10:49 +0000 (+0900) Subject: harness: Abort when failed to construct the specified pipeline X-Git-Tag: 1.16.2~804 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5d40e49d12ecc9202c446909b0cc410d0bbc2cbb;p=platform%2Fupstream%2Fgstreamer.git harness: Abort when failed to construct the specified pipeline gst_harness_new_parse() returns without any error even if it doesn't find the specified element. Then a succeeding call to gst_harness_set_sink_caps_str() causes an error like this: Unexpected critical/warning: gst_pad_push_event: assertion 'GST_IS_PAD (pad)' failed This is a bit cryptic and doesn't give users any clue what was going on. gst_harness_new_parse() calls gst_harness_add_parse() with a newly created empty harness and the given pipeline description string, but gst_harness_add_parse() does not have a way to propagate the error back to the caller. Since the function, gst_harness_add_parse(), is a public API, it's not a good idea to change its signature. This patch, instead, makes the function to g_error() when it discovers any error. With this change the same error prints: ** (myelement-test:25345): ERROR **: Unable to create pipeline 'bin.( myelement )': no element "myelement" The current implementation of gst_parse_launch_full() doesn't return partially constructed pipeline when GST_PARSE_FLAG_FATAL_ERRORS is specified, however, this patch also adds a check for it. https://bugzilla.gnome.org/show_bug.cgi?id=781958 --- diff --git a/libs/gst/check/gstharness.c b/libs/gst/check/gstharness.c index 7a6d2aa..959a5f9 100644 --- a/libs/gst/check/gstharness.c +++ b/libs/gst/check/gstharness.c @@ -912,16 +912,19 @@ gst_harness_add_parse (GstHarness * h, const gchar * launchline) GstPad *pad; GstIterator *iter; gboolean done = FALSE; + GError *error = NULL; g_return_if_fail (launchline != NULL); desc = g_strdup_printf ("bin.( %s )", launchline); bin = - (GstBin *) gst_parse_launch_full (desc, NULL, GST_PARSE_FLAG_NONE, NULL); - g_free (desc); + (GstBin *) gst_parse_launch_full (desc, NULL, GST_PARSE_FLAG_FATAL_ERRORS, + &error); - if (G_UNLIKELY (bin == NULL)) - return; + if (G_UNLIKELY (error != NULL)) { + g_error ("Unable to create pipeline '%s': %s", desc, error->message); + } + g_free (desc); /* find pads and ghost them if necessary */ if ((pad = gst_bin_find_unlinked_pad (bin, GST_PAD_SRC)) != NULL) {