ext/libuv/test/test-getaddrinfo.c in uvrb-0.1.4 vs ext/libuv/test/test-getaddrinfo.c in uvrb-0.2.0

- old
+ new

@@ -31,12 +31,24 @@ /* data used for running multiple calls concurrently */ static uv_getaddrinfo_t* getaddrinfo_handle; static uv_getaddrinfo_t getaddrinfo_handles[CONCURRENT_COUNT]; static int callback_counts[CONCURRENT_COUNT]; +static int fail_cb_called; +static void getaddrinfo_fail_cb(uv_getaddrinfo_t* req, + int status, + struct addrinfo* res) { + ASSERT(fail_cb_called == 0); + ASSERT(status < 0); + ASSERT(res == NULL); + uv_freeaddrinfo(res); /* Should not crash. */ + fail_cb_called++; +} + + static void getaddrinfo_basic_cb(uv_getaddrinfo_t* handle, int status, struct addrinfo* res) { ASSERT(handle == getaddrinfo_handle); getaddrinfo_cbs++; @@ -63,9 +75,26 @@ free(data); uv_freeaddrinfo(res); getaddrinfo_cbs++; +} + + +TEST_IMPL(getaddrinfo_fail) { + uv_getaddrinfo_t req; + + ASSERT(0 == uv_getaddrinfo(uv_default_loop(), + &req, + getaddrinfo_fail_cb, + "xyzzy.xyzzy.xyzzy", + NULL, + NULL)); + ASSERT(0 == uv_run(uv_default_loop(), UV_RUN_DEFAULT)); + ASSERT(fail_cb_called == 1); + + MAKE_VALGRIND_HAPPY(); + return 0; } TEST_IMPL(getaddrinfo_basic) { int r;