mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-23 20:03:31 +01:00
Handle test case where fgets() sees EOF on the last read
On some platforms, with non-blocking IO, on EOF you first get EAGAIN, and then on the second read you get zero bytes and EOF is set. However on others, the EOF flag is set as soon as the last byte is read. This patch fixes the test case in the latter scenario.
This commit is contained in:
parent
9f144144e3
commit
f5df96c94f
@ -1541,14 +1541,18 @@ test_util_spawn_background_partial_read(void *ptr)
|
||||
pos = tor_read_all_handle(process_handle.stdout_pipe, stdout_buf,
|
||||
sizeof(stdout_buf) - 1,
|
||||
&process_handle);
|
||||
tt_int_op(pos, ==, 0);
|
||||
#else
|
||||
if (!eof)
|
||||
if (!eof) {
|
||||
/* We should have got all the data, but maybe not the EOF flag */
|
||||
pos = tor_read_all_handle(process_handle.stdout_handle, stdout_buf,
|
||||
sizeof(stdout_buf) - 1,
|
||||
&process_handle, &eof);
|
||||
tt_assert(eof)
|
||||
tt_int_op(pos, ==, 0);
|
||||
tt_assert(eof);
|
||||
}
|
||||
/* Otherwise, we got the EOF on the last read */
|
||||
#endif
|
||||
tt_int_op(pos, ==, 0);
|
||||
|
||||
/* Check it terminated correctly */
|
||||
retval = tor_get_exit_code(process_handle, 1, &exit_code);
|
||||
|
Loading…
Reference in New Issue
Block a user