mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-02 15:46:17 +01:00
A simple test for polling on a file-like descriptor
https://bugzilla.gnome.org/show_bug.cgi?id=699132
This commit is contained in:
parent
0007376128
commit
c0e8f8a8db
@ -1462,6 +1462,48 @@ test_source_unix_fd_api (void)
|
||||
close (fds_b[1]);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static gboolean
|
||||
@ -1542,6 +1584,7 @@ main (int argc, char *argv[])
|
||||
g_test_add_func ("/mainloop/unix-fd-source", test_unix_fd_source);
|
||||
g_test_add_func ("/mainloop/source-unix-fd-api", test_source_unix_fd_api);
|
||||
g_test_add_func ("/mainloop/wait", test_mainloop_wait);
|
||||
g_test_add_func ("/mainloop/unix-file-poll", test_unix_file_poll);
|
||||
#endif
|
||||
|
||||
return g_test_run ();
|
||||
|
Loading…
Reference in New Issue
Block a user