diff --git a/tests/check/.gitignore b/tests/check/.gitignore index 434ab00f14..a14a3ec406 100644 --- a/tests/check/.gitignore +++ b/tests/check/.gitignore @@ -2,3 +2,5 @@ test-registry.* *.gcno *.gcda +tools/.dirstamp +tools/gstinspect diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index 49ad8ed02f..266dcd90cb 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -142,7 +142,8 @@ check_PROGRAMS = \ libs/collectpads \ libs/gstnetclientclock \ libs/gstnettimeprovider \ - libs/transform1 + libs/transform1 \ + tools/gstinspect # failing tests noinst_PROGRAMS = @@ -203,7 +204,8 @@ libs_gstnettimeprovider_LDADD = \ # these just need valgrind fixing, period VALGRIND_TO_FIX = \ gst/gstinfo \ - pipelines/parse-launch + pipelines/parse-launch \ + tools/gstinspect VALGRIND_IGNORE = \ pipelines/stress diff --git a/tests/check/tools/gstinspect.c b/tests/check/tools/gstinspect.c new file mode 100644 index 0000000000..75115b5a8e --- /dev/null +++ b/tests/check/tools/gstinspect.c @@ -0,0 +1,98 @@ +/* GStreamer gst-inspect unit test + * Copyright (C) 2012 Tim-Philipp Müller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include +#include + +static int gst_inspect_main (int argc, char **argv); + +#define main gst_inspect_main +#include "../../tools/gst-inspect.c" +#undef main + +GST_START_TEST (test_exists) +{ + gchar **argv; + + argv = g_strsplit ("gst-inspect-1.0 --exists foo", " ", -1); + fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1); + g_strfreev (argv); + + argv = g_strsplit ("gst-inspect-1.0 --exists bin", " ", -1); + fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 0); + g_strfreev (argv); + + argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=" VERSION " " + "bin", " ", -1); + fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 0); + g_strfreev (argv); + + argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=1.0 bin", " ", + -1); + fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 0); + g_strfreev (argv); + + argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=1.0.0 bin", + " ", -1); + fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 0); + g_strfreev (argv); + + argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=2.0 bin", + " ", -1); + fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1); + g_strfreev (argv); + + argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=2.0.0 bin", + " ", -1); + fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1); + g_strfreev (argv); + + argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=1.44 bin", + " ", -1); + fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1); + g_strfreev (argv); + + argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=1.60.4 bin", + " ", -1); + fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1); + g_strfreev (argv); + + /* check for plugin should fail like this */ + argv = g_strsplit ("gst-inspect-1.0 --exists --atleast-version=1.0 " + "coreelements", " ", -1); + fail_unless_equals_int (gst_inspect_main (g_strv_length (argv), argv), 1); + g_strfreev (argv); +} + +GST_END_TEST; + +static Suite * +gstabi_suite (void) +{ + Suite *s = suite_create ("gst-inspect"); + TCase *tc_chain = tcase_create ("gst-inspect"); + + tcase_set_timeout (tc_chain, 0); + + suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_exists); + return s; +} + +GST_CHECK_MAIN (gstabi);