tests: Use a pipe rather than a socketpair in stream-rw_all test

The test only needs a unidirectional channel, and a pipe is sufficient
for that.

This may simplify things when running the test on Hurd; see
https://gitlab.gnome.org/GNOME/glib/-/issues/3148#note_1874198.

Additionally, set `O_NONBLOCK` on the pipe since the test seems to
expect that partial writes will succeed and that writes to a full buffer
will fail rather than block.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3148
This commit is contained in:
Philip Withnall 2023-11-02 17:47:53 +00:00
parent aa936e12da
commit a0de4963e8

View File

@ -146,6 +146,7 @@ test_read_all_async_memory (void)
#ifdef G_OS_UNIX #ifdef G_OS_UNIX
#include <errno.h> #include <errno.h>
#include <glib-unix.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <gio/gunixinputstream.h> #include <gio/gunixinputstream.h>
@ -165,13 +166,12 @@ test_read_write_all_async_pipe (void)
{ {
gint sv[2]; gint sv[2];
gint s;
s = socketpair (AF_UNIX, SOCK_STREAM, 0, sv); g_unix_open_pipe (sv, O_CLOEXEC | O_NONBLOCK, &error);
g_assert (s == 0); g_assert_no_error (error);
out = g_unix_output_stream_new (sv[0], TRUE); out = g_unix_output_stream_new (sv[1], TRUE);
in = g_unix_input_stream_new (sv[1], TRUE); in = g_unix_input_stream_new (sv[0], TRUE);
} }
/* Try to fill up the buffer */ /* Try to fill up the buffer */