[kdbus] Fix problem with receiving async messages
[platform/upstream/glib.git] / gio / tests / gsettings.c
index d910b6d..4b20795 100644 (file)
@@ -44,7 +44,7 @@ test_basic (void)
   settings = g_settings_new ("org.gtk.test");
 
   g_object_get (settings,
-                "schema", &str,
+                "schema-id", &str,
                 "backend", &b,
                 "path", &path,
                 "has-unapplied", &has_unapplied,
@@ -597,8 +597,9 @@ test_delay_child (void)
 
   g_settings_set (child, "test-byte", "y", 42);
 
+  /* make sure the child was delayed too */
   g_settings_get (base, "test-byte", "y", &byte);
-  g_assert_cmpuint (byte, ==, 42);
+  g_assert_cmpuint (byte, ==, 36);
 
   g_object_unref (child);
   g_object_unref (settings);
@@ -1627,9 +1628,10 @@ test_keyfile (void)
   gsize len;
   gboolean called = FALSE;
 
-  g_remove ("gsettings.store");
+  g_remove ("keyfile/gsettings.store");
+  g_rmdir ("keyfile");
 
-  kf_backend = g_keyfile_settings_backend_new ("gsettings.store", "/", "root");
+  kf_backend = g_keyfile_settings_backend_new ("keyfile/gsettings.store", "/", "root");
   settings = g_settings_new_with_backend ("org.gtk.test", kf_backend);
   g_object_unref (kf_backend);
 
@@ -1651,7 +1653,7 @@ test_keyfile (void)
   g_settings_apply (settings);
 
   keyfile = g_key_file_new ();
-  g_assert (g_key_file_load_from_file (keyfile, "gsettings.store", 0, NULL));
+  g_assert (g_key_file_load_from_file (keyfile, "keyfile/gsettings.store", 0, NULL));
 
   str = g_key_file_get_string (keyfile, "tests", "greeting", NULL);
   g_assert_cmpstr (str, ==, "'see if this works'");
@@ -1660,20 +1662,49 @@ test_keyfile (void)
   str = g_key_file_get_string (keyfile, "tests", "farewell", NULL);
   g_assert_cmpstr (str, ==, "'cheerio'");
   g_free (str);
+  g_key_file_free (keyfile);
+
+  g_settings_reset (settings, "greeting");
+  g_settings_apply (settings);
+  keyfile = g_key_file_new ();
+  g_assert (g_key_file_load_from_file (keyfile, "keyfile/gsettings.store", 0, NULL));
 
+  str = g_key_file_get_string (keyfile, "tests", "greeting", NULL);
+  g_assert (str == NULL);
+
+  called = FALSE;
   g_signal_connect (settings, "changed::greeting", G_CALLBACK (key_changed_cb), &called);
 
-  g_key_file_set_string (keyfile, "tests", "greeting", "howdy");
+  g_key_file_set_string (keyfile, "tests", "greeting", "'howdy'");
   data = g_key_file_to_data (keyfile, &len, NULL);
-  g_file_set_contents ("gsettings.store", data, len, &error);
+  g_file_set_contents ("keyfile/gsettings.store", data, len, &error);
   g_assert_no_error (error);
   while (!called)
     g_main_context_iteration (NULL, FALSE);
+  g_signal_handlers_disconnect_by_func (settings, key_changed_cb, &called);
+
+  str = g_settings_get_string (settings, "greeting");
+  g_assert_cmpstr (str, ==, "howdy");
+  g_free (str);
+
+  g_settings_set (settings, "farewell", "s", "cheerio");
+  
+  called = FALSE;
+  g_signal_connect (settings, "writable-changed::greeting", G_CALLBACK (key_changed_cb), &called);
+
+  g_chmod ("keyfile", 0500);
+  while (!called)
+    g_main_context_iteration (NULL, FALSE);
+  g_signal_handlers_disconnect_by_func (settings, key_changed_cb, &called);
+
+  writable = g_settings_is_writable (settings, "greeting");
+  g_assert (!writable);
 
   g_key_file_free (keyfile);
   g_free (data);
 
   g_object_unref (settings);
+  g_chmod ("keyfile", 0777);
 }
 
 /* Test that getting child schemas works
@@ -2368,7 +2399,7 @@ test_null_backend (void)
   backend = g_null_settings_backend_new ();
   settings = g_settings_new_with_backend_and_path ("org.gtk.test", backend, "/tests/");
 
-  g_object_get (settings, "schema", &str, NULL);
+  g_object_get (settings, "schema-id", &str, NULL);
   g_assert_cmpstr (str, ==, "org.gtk.test");
   g_free (str);
 
@@ -2384,6 +2415,15 @@ test_null_backend (void)
   writable = g_settings_is_writable (settings, "greeting");
   g_assert (!writable);
 
+  g_settings_reset (settings, "greeting");
+
+  g_settings_delay (settings);
+  g_settings_set (settings, "greeting", "s", "goodbye world");
+  g_settings_apply (settings);
+  g_settings_get (settings, "greeting", "s", &str);
+  g_assert_cmpstr (str, ==, "Hello, earthlings");
+  g_free (str);
+
   g_object_unref (settings);
   g_object_unref (backend);
 }