Fix the Keyfile Test on Windows
authorChun-wei Fan <fanchunwei@src.gnome.org>
Tue, 17 Dec 2013 02:58:15 +0000 (10:58 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Sat, 4 Jan 2014 02:42:28 +0000 (10:42 +0800)
Windows will not allow one to write to a temp file opened by g_mkstemp()
by opening another fd associated with it before one closes the fd that
is returned by g_mkstemp(), which will cause the test_save test to fail.

Fix this by using a variable to store the fd from g_mkstemp() and checking
it, and call close() on that variable before attempting to call
g_key_file_save_to_file() on the temp file as that will attempt to open
another fd (which would not work) associated with that temp file.

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

glib/tests/keyfile.c

index e00460b..d3f70c5 100644 (file)
@@ -1370,13 +1370,16 @@ test_save (void)
   gchar *file;
   guint64 c;
   GError *error = NULL;
+  int fd;
 
   kf = g_key_file_new ();
   ok = g_key_file_load_from_data (kf, data, strlen (data), 0, NULL);
   g_assert (ok);
 
   file = g_strdup ("key_file_XXXXXX");
-  g_mkstemp (file);
+  fd = g_mkstemp (file);
+  g_assert (fd != -1);
+  close (fd);
   ok = g_key_file_save_to_file (kf, file, &error);
   g_assert (ok);
   g_assert_no_error (error);