diff --git a/gio/tests/Makefile.am b/gio/tests/Makefile.am index 4163cb447..73941f61b 100644 --- a/gio/tests/Makefile.am +++ b/gio/tests/Makefile.am @@ -154,7 +154,12 @@ EXTRA_DIST += \ org.gtk.test.gschema \ org.gtk.test.gschema.xml \ de.po \ - schema-tests/no-default/no-default.gschema.xml + schema-tests/bad-type/test.gschema.xml \ + schema-tests/incomplete-list/test.gschema.xml \ + schema-tests/missing-quotes/test.gschema.xml \ + schema-tests/no-default/test.gschema.xml \ + schema-tests/wrong-category/test.gschema.xml \ + schema-tests/overflow/test.gschema.xml MISC_STUFF = gschemas.compiled test.mo @@ -166,10 +171,15 @@ test.mo: de.po gschemas.compiled: $(top_builddir)/gio/gschema-compile --targetdir=$(abs_builddir) $(srcdir) -DISTCLEANFILES = \ - applications/mimeinfo.cache \ - de/LC_MESSAGES/test.mo \ - test.mo \ - gsettings.store \ - gschemas.compiled \ - schema-tests/no-schema/gschemas.compiled +DISTCLEANFILES = \ + applications/mimeinfo.cache \ + de/LC_MESSAGES/test.mo \ + test.mo \ + gsettings.store \ + gschemas.compiled \ + schema-tests/bad-type/gschemas.compiled \ + schema-tests/incomplete-list/gschemas.compiled \ + schema-tests/missing-quotes/gschemas.compiled \ + schema-tests/no-default/gschemas.compiled \ + schema-tests/wrong-category/gschemas.compiled \ + schema-tests/overflow/gschemas.compiled diff --git a/gio/tests/gschema-compile.c b/gio/tests/gschema-compile.c index 7a7a8e451..0069630db 100644 --- a/gio/tests/gschema-compile.c +++ b/gio/tests/gschema-compile.c @@ -13,13 +13,87 @@ test_no_default (void) if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) { gchar *argv[] = { "../gschema-compile", "./schema-tests/no-default/", NULL }; - gchar *envp[] = { NULL }; + gchar *envp[] = { NULL }; execve (argv[0], argv, envp); } g_test_trap_assert_failed (); g_test_trap_assert_stderr ("* is required in *"); } +static void +test_missing_quotes (void) +{ + g_remove ("schema-tests/missing-quotes/gschemas.compiled"); + + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) + { + gchar *argv[] = { "../gschema-compile", "./schema-tests/missing-quotes/", NULL }; + gchar *envp[] = { NULL }; + execve (argv[0], argv, envp); + } + g_test_trap_assert_failed (); + g_test_trap_assert_stderr ("*unknown keyword*"); +} + +static void +test_incomplete_list (void) +{ + g_remove ("schema-tests/incomplete-list/gschemas.compiled"); + + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) + { + gchar *argv[] = { "../gschema-compile", "./schema-tests/incomplete-list/", NULL }; + gchar *envp[] = { NULL }; + execve (argv[0], argv, envp); + } + g_test_trap_assert_failed (); + g_test_trap_assert_stderr ("*to follow array element*"); +} + +static void +test_wrong_category (void) +{ + g_remove ("schema-tests/wrong-category/gschemas.compiled"); + + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) + { + gchar *argv[] = { "../gschema-compile", "./schema-tests/wrong-category/", NULL }; + gchar *envp[] = { NULL }; + execve (argv[0], argv, envp); + } + g_test_trap_assert_failed (); + g_test_trap_assert_stderr ("*attribute 'l10n' invalid*"); +} + +static void +test_bad_type (void) +{ + g_remove ("schema-tests/bad-type/gschemas.compiled"); + + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) + { + gchar *argv[] = { "../gschema-compile", "./schema-tests/bad-type/", NULL }; + gchar *envp[] = { NULL }; + execve (argv[0], argv, envp); + } + g_test_trap_assert_failed (); + g_test_trap_assert_stderr ("*invalid GVariant type string*"); +} + +static void +test_overflow (void) +{ + g_remove ("schema-tests/overflow/gschemas.compiled"); + + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) + { + gchar *argv[] = { "../gschema-compile", "./schema-tests/overflow/", NULL }; + gchar *envp[] = { NULL }; + execve (argv[0], argv, envp); + } + g_test_trap_assert_failed (); + g_test_trap_assert_stderr ("*out of range*"); +} int main (int argc, char *argv[]) @@ -30,6 +104,11 @@ main (int argc, char *argv[]) g_test_init (&argc, &argv, NULL); g_test_add_func ("/gschema/no-default", test_no_default); + g_test_add_func ("/gschema/missing-quotes", test_missing_quotes); + g_test_add_func ("/gschema/incomplete-list", test_incomplete_list); + g_test_add_func ("/gschema/wrong-category", test_wrong_category); + g_test_add_func ("/gschema/bad-type", test_bad_type); + g_test_add_func ("/gschema/overflow", test_overflow); return g_test_run (); } diff --git a/gio/tests/schema-tests/bad-type/test.gschema.xml b/gio/tests/schema-tests/bad-type/test.gschema.xml new file mode 100644 index 000000000..9b74684b8 --- /dev/null +++ b/gio/tests/schema-tests/bad-type/test.gschema.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/gio/tests/schema-tests/incomplete-list/test.gschema.xml b/gio/tests/schema-tests/incomplete-list/test.gschema.xml new file mode 100644 index 000000000..df33e842d --- /dev/null +++ b/gio/tests/schema-tests/incomplete-list/test.gschema.xml @@ -0,0 +1,7 @@ + + + + [1,2,3 + + + diff --git a/gio/tests/schema-tests/missing-quotes/test.gschema.xml b/gio/tests/schema-tests/missing-quotes/test.gschema.xml new file mode 100644 index 000000000..4400a623a --- /dev/null +++ b/gio/tests/schema-tests/missing-quotes/test.gschema.xml @@ -0,0 +1,7 @@ + + + + foo + + + diff --git a/gio/tests/schema-tests/no-default/test.gschema.xml b/gio/tests/schema-tests/no-default/test.gschema.xml new file mode 100644 index 000000000..5496ce312 --- /dev/null +++ b/gio/tests/schema-tests/no-default/test.gschema.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/gio/tests/schema-tests/overflow/test.gschema.xml b/gio/tests/schema-tests/overflow/test.gschema.xml new file mode 100644 index 000000000..19d4176bf --- /dev/null +++ b/gio/tests/schema-tests/overflow/test.gschema.xml @@ -0,0 +1,7 @@ + + + + 512 + + + diff --git a/gio/tests/schema-tests/wrong-category/test.gschema.xml b/gio/tests/schema-tests/wrong-category/test.gschema.xml new file mode 100644 index 000000000..5c1ec7923 --- /dev/null +++ b/gio/tests/schema-tests/wrong-category/test.gschema.xml @@ -0,0 +1,7 @@ + + + + 'foo' + + +