Add test for extended schemas
authorChristian Persch <chpe@gnome.org>
Mon, 28 Oct 2013 00:22:38 +0000 (17:22 -0700)
committerRyan Lortie <desrt@desrt.ca>
Mon, 28 Oct 2013 00:23:17 +0000 (17:23 -0700)
The test checks that the keys of the base schema are all present in
the extended schema.

https://bugzilla.gnome.org/show_bug.cgi?id=645453

gio/tests/gsettings.c
gio/tests/org.gtk.test.gschema.xml

index 35330b9..ab54ad4 100644 (file)
@@ -2044,6 +2044,8 @@ test_list_schemas (void)
 
   g_assert (strv_set_equal ((gchar **)relocs,
                             "org.gtk.test.no-path",
+                            "org.gtk.test.extends.base",
+                            "org.gtk.test.extends.extended",
                             NULL));
 
   g_assert (strv_set_equal ((gchar **)schemas,
@@ -2368,6 +2370,19 @@ test_read_descriptions (void)
   g_object_unref (settings);
 }
 
+static void
+test_extended_schema (void)
+{
+  GSettings *settings;
+  gchar **keys;
+
+  settings = g_settings_new_with_path ("org.gtk.test.extends.extended", "/test/extendes/");
+  keys = g_settings_list_keys (settings);
+  g_assert (strv_set_equal (keys, "int32", "string", "another-int32", NULL));
+  g_strfreev (keys);
+  g_object_unref (settings);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -2482,6 +2497,7 @@ main (int argc, char *argv[])
   g_test_add_func ("/gsettings/null-backend", test_null_backend);
   g_test_add_func ("/gsettings/memory-backend", test_memory_backend);
   g_test_add_func ("/gsettings/read-descriptions", test_read_descriptions);
+  g_test_add_func ("/gsettings/test-extended-schema", test_extended_schema);
 
   result = g_test_run ();
 
index 1ea8750..bda05a2 100644 (file)
       <default>0</default>
     </key>
   </schema>
+
+  <schema id='org.gtk.test.extends.base'>
+    <key name='int32' type='i'>
+      <default>0</default>
+    </key>
+    <key name='string' type='s'>
+      <default>''</default>
+    </key>
+  </schema>
+  <schema id='org.gtk.test.extends.extended' extends='org.gtk.test.extends.base'>
+    <override name="int32">42</override>
+    <key name='another-int32' type='i'>
+      <default>0</default>
+    </key>
+  </schema>
+
 </schemalist>