This source file includes following definitions.
- close_cb
 
- TEST_IMPL
 
- TEST_IMPL
 
- TEST_IMPL
 
- TEST_IMPL
 
#include "uv.h"
#include "task.h"
#include <stdio.h>
#include <stdlib.h>
#ifdef _WIN32
# define BAD_PIPENAME "bad-pipe"
#else
# define BAD_PIPENAME "/path/to/unix/socket/that/really/should/not/be/there"
#endif
static int close_cb_called = 0;
static void close_cb(uv_handle_t* handle) {
  ASSERT(handle != NULL);
  close_cb_called++;
}
TEST_IMPL(pipe_bind_error_addrinuse) {
  uv_pipe_t server1, server2;
  int r;
  r = uv_pipe_init(uv_default_loop(), &server1, 0);
  ASSERT(r == 0);
  r = uv_pipe_bind(&server1, TEST_PIPENAME);
  ASSERT(r == 0);
  r = uv_pipe_init(uv_default_loop(), &server2, 0);
  ASSERT(r == 0);
  r = uv_pipe_bind(&server2, TEST_PIPENAME);
  ASSERT(r == UV_EADDRINUSE);
  r = uv_listen((uv_stream_t*)&server1, SOMAXCONN, NULL);
  ASSERT(r == 0);
  r = uv_listen((uv_stream_t*)&server2, SOMAXCONN, NULL);
  ASSERT(r == UV_EINVAL);
  uv_close((uv_handle_t*)&server1, close_cb);
  uv_close((uv_handle_t*)&server2, close_cb);
  uv_run(uv_default_loop(), UV_RUN_DEFAULT);
  ASSERT(close_cb_called == 2);
  MAKE_VALGRIND_HAPPY();
  return 0;
}
TEST_IMPL(pipe_bind_error_addrnotavail) {
  uv_pipe_t server;
  int r;
  r = uv_pipe_init(uv_default_loop(), &server, 0);
  ASSERT(r == 0);
  r = uv_pipe_bind(&server, BAD_PIPENAME);
  ASSERT(r == UV_EACCES);
  uv_close((uv_handle_t*)&server, close_cb);
  uv_run(uv_default_loop(), UV_RUN_DEFAULT);
  ASSERT(close_cb_called == 1);
  MAKE_VALGRIND_HAPPY();
  return 0;
}
TEST_IMPL(pipe_bind_error_inval) {
  uv_pipe_t server;
  int r;
  r = uv_pipe_init(uv_default_loop(), &server, 0);
  ASSERT(r == 0);
  r = uv_pipe_bind(&server, TEST_PIPENAME);
  ASSERT(r == 0);
  r = uv_pipe_bind(&server, TEST_PIPENAME_2);
  ASSERT(r == UV_EINVAL);
  uv_close((uv_handle_t*)&server, close_cb);
  uv_run(uv_default_loop(), UV_RUN_DEFAULT);
  ASSERT(close_cb_called == 1);
  MAKE_VALGRIND_HAPPY();
  return 0;
}
TEST_IMPL(pipe_listen_without_bind) {
  uv_pipe_t server;
  int r;
  r = uv_pipe_init(uv_default_loop(), &server, 0);
  ASSERT(r == 0);
  r = uv_listen((uv_stream_t*)&server, SOMAXCONN, NULL);
  ASSERT(r == UV_EINVAL);
  uv_close((uv_handle_t*)&server, close_cb);
  uv_run(uv_default_loop(), UV_RUN_DEFAULT);
  ASSERT(close_cb_called == 1);
  MAKE_VALGRIND_HAPPY();
  return 0;
}