+static gboolean
+unixfd_quit_loop (gint fd,
+ GIOCondition condition,
+ gpointer user_data)
+{
+ GMainLoop *loop = user_data;
+
+ g_main_loop_quit (loop);
+
+ return FALSE;
+}
+
+static void
+test_unix_file_poll (void)
+{
+ gint fd;
+ GSource *source;
+ GMainLoop *loop;
+
+ fd = open ("/dev/null", O_RDONLY);
+ g_assert (fd >= 0);
+
+ loop = g_main_loop_new (NULL, FALSE);
+
+ source = g_unix_fd_source_new (fd, G_IO_IN);
+ g_source_set_callback (source, (GSourceFunc) unixfd_quit_loop, loop, NULL);
+ g_source_attach (source, NULL);
+
+ /* Should not block */
+ g_main_loop_run (loop);
+
+ g_source_destroy (source);
+
+ assert_main_context_state (0);
+
+ g_source_unref (source);
+
+ g_main_loop_unref (loop);
+
+ close (fd);
+}
+