tests: add test to check discoverer return code for missing plugins case
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Sat, 3 Mar 2012 13:51:55 +0000 (13:51 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Sat, 3 Mar 2012 13:54:53 +0000 (13:54 +0000)
https://bugzilla.gnome.org/show_bug.cgi?id=671047

tests/check/libs/discoverer.c
tests/files/Makefile.am
tests/files/test.mkv [new file with mode: 0644]

index a8de512..f787d29 100644 (file)
@@ -142,6 +142,46 @@ GST_START_TEST (test_disco_sync_reuse_timeout)
 
 GST_END_TEST;
 
+GST_START_TEST (test_disco_missing_plugins)
+{
+  const gchar *files[] = { "test.mkv", "test.mp3", "partialframe.mjpeg" };
+  GError *err = NULL;
+  GstDiscoverer *dc;
+  GstDiscovererInfo *info;
+  GstDiscovererResult result;
+  gchar *uri, *path;
+  int i;
+
+  for (i = 0; i < G_N_ELEMENTS (files); ++i) {
+    dc = gst_discoverer_new (5 * GST_SECOND, &err);
+    fail_unless (dc != NULL);
+    fail_unless (err == NULL);
+
+    /* GST_TEST_FILE comes from makefile CFLAGS */
+    path = g_build_filename (GST_TEST_FILES_PATH, files[i], NULL);
+    uri = gst_filename_to_uri (path, &err);
+    g_free (path);
+    fail_unless (err == NULL);
+
+    GST_INFO ("discovering uri '%s'", uri);
+    info = gst_discoverer_discover_uri (dc, uri, &err);
+    fail_unless (info != NULL);
+    fail_unless (err != NULL);
+    result = gst_discoverer_info_get_result (info);
+    GST_INFO ("result: %d, error message: %s", result, err->message);
+    fail_unless_equals_int (result, GST_DISCOVERER_MISSING_PLUGINS);
+    GST_INFO ("misc: %" GST_PTR_FORMAT, gst_discoverer_info_get_misc (info));
+
+    gst_discoverer_info_unref (info);
+    g_error_free (err);
+    err = NULL;
+    g_free (uri);
+    g_object_unref (dc);
+  }
+}
+
+GST_END_TEST;
+
 static Suite *
 discoverer_suite (void)
 {
@@ -154,6 +194,7 @@ discoverer_suite (void)
   tcase_add_test (tc_chain, test_disco_sync_reuse_ogg);
   tcase_add_test (tc_chain, test_disco_sync_reuse_mp3);
   tcase_add_test (tc_chain, test_disco_sync_reuse_timeout);
+  tcase_add_test (tc_chain, test_disco_missing_plugins);
   return s;
 }
 
index 99b043f..1370c39 100644 (file)
@@ -3,5 +3,6 @@ EXTRA_DIST = \
        hls.m3u8 \
        license-uris \
        partialframe.mjpeg \
+       test.mkv \
        test.mp3 \
        theora-vorbis.ogg
diff --git a/tests/files/test.mkv b/tests/files/test.mkv
new file mode 100644 (file)
index 0000000..649cf3f
Binary files /dev/null and b/tests/files/test.mkv differ