mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-12 05:48:51 -04:00
Make unit test for add_file able to tell "error" from "done"
Importantly, we don't actually want to call evbuffer_write() when the buffer is empty. This makes it an error to ever get a -1 return value from evbuffer_add_file(), which makes it safe for us to test the return value.
This commit is contained in:
parent
384d124581
commit
88a543fc19
@ -593,8 +593,10 @@ test_evbuffer_add_file(void *ptr)
|
||||
const char *impl = ptr;
|
||||
struct evbuffer *src = evbuffer_new();
|
||||
const char *data = "this is what we add as file system data.";
|
||||
size_t datalen;
|
||||
const char *compare;
|
||||
evutil_socket_t fd, pair[2];
|
||||
int r=0, n_written=0;
|
||||
|
||||
/* Add a test for a big file. XXXX */
|
||||
|
||||
@ -618,24 +620,29 @@ test_evbuffer_add_file(void *ptr)
|
||||
if (evutil_socketpair(AF_UNIX, SOCK_STREAM, 0, pair) == -1)
|
||||
tt_abort_msg("socketpair failed");
|
||||
|
||||
fd = regress_make_tmpfile(data, strlen(data));
|
||||
datalen = strlen(data);
|
||||
fd = regress_make_tmpfile(data, datalen);
|
||||
|
||||
tt_assert(fd != -1);
|
||||
|
||||
tt_assert(evbuffer_add_file(src, fd, 0, strlen(data)) != -1);
|
||||
tt_assert(evbuffer_add_file(src, fd, 0, datalen) != -1);
|
||||
|
||||
evbuffer_validate(src);
|
||||
|
||||
while (evbuffer_write(src, pair[0]) > 0) {
|
||||
while (evbuffer_get_length(src) &&
|
||||
(r = evbuffer_write(src, pair[0])) > 0) {
|
||||
evbuffer_validate(src);
|
||||
n_written += r;
|
||||
}
|
||||
tt_int_op(r, !=, -1);
|
||||
tt_int_op(n_written, ==, datalen);
|
||||
|
||||
evbuffer_validate(src);
|
||||
tt_assert(evbuffer_read(src, pair[1], strlen(data)) == strlen(data));
|
||||
tt_assert(evbuffer_read(src, pair[1], strlen(data)) == datalen);
|
||||
evbuffer_validate(src);
|
||||
compare = (char *)evbuffer_pullup(src, strlen(data));
|
||||
compare = (char *)evbuffer_pullup(src, datalen);
|
||||
tt_assert(compare != NULL);
|
||||
if (memcmp(compare, data, strlen(data)))
|
||||
if (memcmp(compare, data, datalen))
|
||||
tt_abort_msg("Data from add_file differs.");
|
||||
|
||||
evbuffer_validate(src);
|
||||
|
Loading…
x
Reference in New Issue
Block a user