From 02e59756a9d91da62a94ae44480b262f1e6205d6 Mon Sep 17 00:00:00 2001 From: Stefan Sauer Date: Wed, 19 Feb 2014 11:26:22 +0100 Subject: [PATCH] autodetect: fix the disabled test Use a shared helper for both tests. It turns out that the valgrind variant is fine (maybe due to picking up pulsesink though). --- tests/check/elements/autodetect.c | 63 +++++++++++++-------------------------- 1 file changed, 20 insertions(+), 43 deletions(-) diff --git a/tests/check/elements/autodetect.c b/tests/check/elements/autodetect.c index 8f305be..cf4e839 100644 --- a/tests/check/elements/autodetect.c +++ b/tests/check/elements/autodetect.c @@ -24,20 +24,16 @@ #include -GST_START_TEST (test_autovideosink_ghostpad_error_case) +static void +test_ghostpad_error_case (GstCaps * caps, GstElement * sink, + const gchar * fake_sink_name) { GstStateChangeReturn state_ret; - GstElement *pipeline, *src, *filter, *sink; - GstCaps *caps; - GstElement *fakesink; + GstElement *pipeline, *src, *filter, *fakesink; pipeline = gst_pipeline_new ("pipeline"); src = gst_element_factory_make ("fakesrc", NULL); filter = gst_element_factory_make ("capsfilter", NULL); - sink = gst_element_factory_make ("autovideosink", NULL); - - caps = gst_caps_new_simple ("video/x-raw", "format", G_TYPE_STRING, - "ABCD", NULL); g_object_set (filter, "caps", caps, NULL); gst_caps_unref (caps); @@ -56,9 +52,9 @@ GST_START_TEST (test_autovideosink_ghostpad_error_case) state_ret = gst_element_get_state (pipeline, &state, &state, GST_CLOCK_TIME_NONE); } - fakesink = gst_bin_get_by_name (GST_BIN (sink), "fake-video-sink"); + fakesink = gst_bin_get_by_name (GST_BIN (sink), fake_sink_name); if (fakesink != NULL) { - /* no real video sink available */ + /* no real sink available */ fail_unless (state_ret == GST_STATE_CHANGE_SUCCESS, "pipeline _set_state() to PAUSED failed"); gst_object_unref (fakesink); @@ -79,42 +75,24 @@ GST_START_TEST (test_autovideosink_ghostpad_error_case) gst_object_unref (pipeline); } -GST_END_TEST; - -GST_START_TEST (test_autoaudiosink_ghostpad_error_case) +GST_START_TEST (test_autovideosink_ghostpad_error_case) { - GstStateChangeReturn state_ret; - GstElement *pipeline, *src, *filter, *sink; - GstCaps *caps; - - pipeline = gst_pipeline_new ("pipeline"); - src = gst_element_factory_make ("fakesrc", NULL); - filter = gst_element_factory_make ("capsfilter", NULL); - sink = gst_element_factory_make ("autoaudiosink", NULL); - - caps = gst_caps_new_simple ("audio/x-raw", "width", G_TYPE_INT, 42, NULL); - - g_object_set (filter, "caps", caps, NULL); - gst_caps_unref (caps); - - gst_bin_add_many (GST_BIN (pipeline), src, filter, sink, NULL); + GstElement *sink = gst_element_factory_make ("autovideosink", NULL); + GstCaps *caps = gst_caps_new_simple ("video/x-raw", "format", G_TYPE_STRING, + "ABCD", NULL); - fail_unless (gst_element_link (src, filter)); - fail_unless (gst_element_link (filter, sink)); + test_ghostpad_error_case (caps, sink, "fake-video-sink"); +} - /* this should fail, there's no such width (hopefully) */ - state_ret = gst_element_set_state (pipeline, GST_STATE_PAUSED); - fail_unless (state_ret == GST_STATE_CHANGE_FAILURE, - "pipeline _set_state() to PAUSED succeeded but should have failed"); +GST_END_TEST; - /* so, we hit an error and try to shut down the pipeline; this shouldn't - * deadlock or block anywhere when autoaudiosink resets the ghostpad - * targets etc. */ - state_ret = gst_element_set_state (pipeline, GST_STATE_NULL); - fail_unless (state_ret == GST_STATE_CHANGE_SUCCESS); +GST_START_TEST (test_autoaudiosink_ghostpad_error_case) +{ + GstElement *sink = gst_element_factory_make ("autoaudiosink", NULL); + GstCaps *caps = gst_caps_new_simple ("audio/x-raw", "format", G_TYPE_STRING, + "ABCD", NULL); - /* clean up */ - gst_object_unref (pipeline); + test_ghostpad_error_case (caps, sink, "fake-audio-sink"); } GST_END_TEST; @@ -127,8 +105,7 @@ autodetect_suite (void) suite_add_tcase (s, tc_chain); tcase_add_test (tc_chain, test_autovideosink_ghostpad_error_case); - /* disable this for now, too many valgrind suppressions needed for libasound */ - tcase_skip_broken_test (tc_chain, test_autoaudiosink_ghostpad_error_case); + tcase_add_test (tc_chain, test_autoaudiosink_ghostpad_error_case); return s; } -- 2.7.4