tests: Fix a flaky wait in converter-stream

Rather than waiting for a fixed period of time, poll in a loop until the
condition the test is expecting is true.

A better solution would be to use a `GSource` and wait until that’s
dispatched. But doing so might affect the behaviour of the
`GInputStream` under test, so busy-wait instead.

Fixes this CI failure: https://gitlab.gnome.org/GNOME/glib/-/jobs/1630758

```
(some socket debug output)
Bail out! GLib-GIO:ERROR:../gio/tests/converter-stream.c:1037:test_converter_pollable: assertion failed (res == -1): (1 == -1)
```

I could not reproduce the failure remotely with a few hundred
invocations of the test, so it might only present itself on BSD, which
presumably has different socket timing behaviour from Linux.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
This commit is contained in:
Philip Withnall 2021-11-22 13:22:25 +00:00
parent 40037ebbfc
commit 8e185e12c9

View File

@ -1022,9 +1022,9 @@ test_converter_pollable (void)
}
/* Wait a few ticks to check for the pipe to propagate the
* write. Finesses the race condition in the following test,
* where is_readable fails because the write hasn't propagated,
* but the read then succeeds because it has. */
* write. We cant wait on a GSource as that might affect the stream under
* test, so just poll. */
while (!g_pollable_input_stream_is_readable (pollable_in))
g_usleep (80L);
is_readable = g_pollable_input_stream_is_readable (pollable_in);