Skip to content

Commit

Permalink
A simple test for polling on a file-like descriptor
Browse files Browse the repository at this point in the history
  • Loading branch information
mzabaluev authored and Matthias Clasen committed Jun 28, 2014
1 parent 0007376 commit c0e8f8a
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions glib/tests/mainloop.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 ();
Expand Down

0 comments on commit c0e8f8a

Please sign in to comment.