} SchemaTest;
static void
+test_schema_do_compile (gpointer data)
+{
+ SchemaTest *test = (SchemaTest *) data;
+ gchar *filename = g_strconcat (test->name, ".gschema.xml", NULL);
+ gchar *path = g_build_filename (SRCDIR, "schema-tests", filename, NULL);
+ gchar *argv[] = {
+ "../glib-compile-schemas",
+ "--strict",
+ "--dry-run",
+ "--schema-file", path,
+ (gchar *)test->opt,
+ NULL
+ };
+ gchar *envp[] = { NULL };
+
+ execve (argv[0], argv, envp);
+ g_assert_not_reached ();
+}
+
+static void
test_schema (gpointer data)
{
SchemaTest *test = (SchemaTest *) data;
+ gchar *child_name;
+
+ child_name = g_strdup_printf ("/gschema/%s%s:do_compile", test->name, test->opt ? "/opt" : "");
+ g_test_trap_subprocess (child_name, 0, G_TEST_TRAP_SILENCE_STDERR);
+ g_free (child_name);
- if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR))
- {
- gchar *filename = g_strconcat (test->name, ".gschema.xml", NULL);
- gchar *path = g_build_filename (SRCDIR, "schema-tests", filename, NULL);
- gchar *argv[] = {
- "../glib-compile-schemas",
- "--strict",
- "--dry-run",
- "--schema-file", path,
- (gchar *)test->opt,
- NULL
- };
- gchar *envp[] = { NULL };
- execve (argv[0], argv, envp);
- g_free (filename);
- g_free (path);
- }
if (test->err)
{
g_test_trap_assert_failed ();
{ "bad-type", NULL, "*invalid GVariant type string*" },
{ "overflow", NULL, "*out of range*" },
{ "range-wrong-type", NULL, "*<range> not allowed for keys of type*" },
- { "range-missing-min", NULL, "*element 'range' requires attribute 'min'*" },
- { "range-missing-max", NULL, "*element 'range' requires attribute 'max'*" },
+ { "range-missing-min", NULL, NULL },
+ { "range-missing-max", NULL, NULL },
{ "default-out-of-range", NULL, "*<default> is not contained in the specified range*" },
{ "choices-wrong-type", NULL, "*<choices> not allowed for keys of type*" },
{ "choice-missing-value", NULL, "*element 'choice' requires attribute 'value'*" },
{ "enum-with-repeated-value", NULL, "*value='1' already specified*" },
{ "enum-with-chained-alias", NULL, "*'sausages' is not in enumerated type*" },
{ "enum-with-shadow-alias", NULL, "*'mash' is already a member of the enum*" },
- { "enum-with-choice", NULL, "*<choices> cannot be specified*" },
+ { "enum-with-choice", NULL, "*<choices> cannot be specified*" },
{ "enum-with-bad-default", NULL, "*<default> is not a valid member*" },
{ "choice", NULL, NULL },
{ "choice-upside-down", NULL, NULL },
{ "range-parse-error", NULL, "*invalid character in number*" },
{ "from-docs", NULL, NULL },
{ "extending", NULL, NULL },
- { "extend-missing", NULL, "*extends not yet existing schema*" },
+ { "extend-missing", NULL, "*extends not-yet-existing schema*" },
{ "extend-nonlist", NULL, "*which is not a list*" },
- { "extend-self", NULL, "*not yet existing*" },
+ { "extend-self", NULL, "*not-yet-existing*" },
{ "extend-wrong-list-indirect", NULL, "*'y' does not extend 'x'*" },
{ "extend-wrong-list", NULL, "*'y' does not extend 'x'*" },
- { "key-in-list-indirect", NULL, "*can not add keys to a 'list*" },
- { "key-in-list", NULL, "*can not add keys to a 'list*" },
- { "list-of-missing", NULL, "*is list of not yet existing schema*" },
+ { "key-in-list-indirect", NULL, "*cannot add keys to a 'list*" },
+ { "key-in-list", NULL, "*cannot add keys to a 'list*" },
+ { "list-of-missing", NULL, "*is list of not-yet-existing schema*" },
{ "extend-and-shadow", NULL, "*shadows*use <override>*" },
{ "extend-and-shadow-indirect", NULL, "*shadows*use <override>*" },
{ "override", NULL, NULL },
{ "flags-more-than-one-bit", NULL, "*flags values must have at most 1 bit set*" },
{ "flags-with-enum-attr", NULL, "*<enum id='flags'> not (yet) defined*" },
{ "flags-with-enum-tag", NULL, "*<flags id='flags'> not (yet) defined*" },
- { "inherit-gettext-domain", NULL, NULL }
+ { "inherit-gettext-domain", NULL, NULL },
+ { "range-type-test", NULL, NULL },
+ { "cdata", NULL, NULL }
};
setlocale (LC_ALL, "");
- g_type_init ();
g_test_init (&argc, &argv, NULL);
for (i = 0; i < G_N_ELEMENTS (tests); ++i)
{
- gchar *name = g_strdup_printf ("/gschema/%s%s", tests[i].name, tests[i].opt ? "/opt" : "");
+ gchar *name;
+
+ name = g_strdup_printf ("/gschema/%s%s", tests[i].name, tests[i].opt ? "/opt" : "");
g_test_add_data_func (name, &tests[i], (gpointer) test_schema);
g_free (name);
+
+ name = g_strdup_printf ("/gschema/%s%s:do_compile", tests[i].name, tests[i].opt ? "/opt" : "");
+ g_test_add_data_func (name, &tests[i], (gpointer) test_schema_do_compile);
+ g_free (name);
}
return g_test_run ();