forked from cory/tildefriends
libuv 1.45.0, #include cleanup, probably something else.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4308 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
346
deps/libuv/test/test-fs.c
vendored
346
deps/libuv/test/test-fs.c
vendored
@ -37,6 +37,9 @@
|
||||
# ifndef ERROR_SYMLINK_NOT_SUPPORTED
|
||||
# define ERROR_SYMLINK_NOT_SUPPORTED 1464
|
||||
# endif
|
||||
# ifndef S_IFIFO
|
||||
# define S_IFIFO _S_IFIFO
|
||||
# endif
|
||||
# define unlink _unlink
|
||||
# define rmdir _rmdir
|
||||
# define open _open
|
||||
@ -219,16 +222,6 @@ static void realpath_cb(uv_fs_t* req) {
|
||||
char test_file_abs_buf[PATHMAX];
|
||||
size_t test_file_abs_size = sizeof(test_file_abs_buf);
|
||||
ASSERT(req->fs_type == UV_FS_REALPATH);
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
* Windows XP and Server 2003 don't support GetFinalPathNameByHandleW()
|
||||
*/
|
||||
if (req->result == UV_ENOSYS) {
|
||||
realpath_cb_count++;
|
||||
uv_fs_req_cleanup(req);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
ASSERT(req->result == 0);
|
||||
|
||||
uv_cwd(test_file_abs_buf, &test_file_abs_size);
|
||||
@ -669,6 +662,15 @@ static void stat_cb(uv_fs_t* req) {
|
||||
ASSERT(!req->ptr);
|
||||
}
|
||||
|
||||
static void stat_batch_cb(uv_fs_t* req) {
|
||||
ASSERT(req->fs_type == UV_FS_STAT || req->fs_type == UV_FS_LSTAT);
|
||||
ASSERT(req->result == 0);
|
||||
ASSERT(req->ptr);
|
||||
stat_cb_count++;
|
||||
uv_fs_req_cleanup(req);
|
||||
ASSERT(!req->ptr);
|
||||
}
|
||||
|
||||
|
||||
static void sendfile_cb(uv_fs_t* req) {
|
||||
ASSERT(req == &sendfile_req);
|
||||
@ -730,7 +732,7 @@ TEST_IMPL(fs_file_noent) {
|
||||
|
||||
/* TODO add EACCES test */
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -756,7 +758,7 @@ TEST_IMPL(fs_file_nametoolong) {
|
||||
uv_run(loop, UV_RUN_DEFAULT);
|
||||
ASSERT(open_cb_count == 1);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -770,11 +772,10 @@ TEST_IMPL(fs_file_loop) {
|
||||
r = uv_fs_symlink(NULL, &req, "test_symlink", "test_symlink", 0, NULL);
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
* Windows XP and Server 2003 don't support symlinks; we'll get UV_ENOTSUP.
|
||||
* Starting with vista they are supported, but only when elevated, otherwise
|
||||
* Symlinks are only suported but only when elevated, otherwise
|
||||
* we'll see UV_EPERM.
|
||||
*/
|
||||
if (r == UV_ENOTSUP || r == UV_EPERM)
|
||||
if (r == UV_EPERM)
|
||||
return 0;
|
||||
#elif defined(__MSYS__)
|
||||
/* MSYS2's approximation of symlinks with copies does not work for broken
|
||||
@ -799,7 +800,7 @@ TEST_IMPL(fs_file_loop) {
|
||||
|
||||
unlink("test_symlink");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -966,7 +967,7 @@ TEST_IMPL(fs_file_async) {
|
||||
unlink("test_file");
|
||||
unlink("test_file2");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1056,7 +1057,7 @@ TEST_IMPL(fs_file_sync) {
|
||||
fs_file_sync(0);
|
||||
fs_file_sync(UV_FS_O_FILEMAP);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1092,7 +1093,7 @@ TEST_IMPL(fs_file_write_null_buffer) {
|
||||
fs_file_write_null_buffer(0);
|
||||
fs_file_write_null_buffer(UV_FS_O_FILEMAP);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1187,7 +1188,7 @@ TEST_IMPL(fs_async_dir) {
|
||||
unlink("test_dir/file2");
|
||||
rmdir("test_dir");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1239,6 +1240,8 @@ static int test_sendfile(void (*setup)(int), uv_fs_cb cb, off_t expected_size) {
|
||||
ASSERT(r == 0);
|
||||
uv_fs_req_cleanup(&close_req);
|
||||
|
||||
memset(&s1, 0, sizeof(s1));
|
||||
memset(&s2, 0, sizeof(s2));
|
||||
ASSERT(0 == stat("test_file", &s1));
|
||||
ASSERT(0 == stat("test_file2", &s2));
|
||||
ASSERT(s2.st_size == expected_size);
|
||||
@ -1265,7 +1268,7 @@ static int test_sendfile(void (*setup)(int), uv_fs_cb cb, off_t expected_size) {
|
||||
unlink("test_file");
|
||||
unlink("test_file2");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1313,7 +1316,7 @@ TEST_IMPL(fs_mkdtemp) {
|
||||
uv_fs_req_cleanup(&mkdtemp_req1);
|
||||
uv_fs_req_cleanup(&mkdtemp_req2);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1346,6 +1349,8 @@ TEST_IMPL(fs_mkstemp) {
|
||||
/* Make sure that path is empty string */
|
||||
ASSERT_EQ(0, strlen(mkstemp_req3.path));
|
||||
|
||||
uv_fs_req_cleanup(&mkstemp_req3);
|
||||
|
||||
/* We can write to the opened file */
|
||||
iov = uv_buf_init(test_buf, sizeof(test_buf));
|
||||
r = uv_fs_write(NULL, &req, mkstemp_req1.result, &iov, 1, -1, NULL);
|
||||
@ -1379,7 +1384,7 @@ TEST_IMPL(fs_mkstemp) {
|
||||
uv_fs_req_cleanup(&mkstemp_req1);
|
||||
uv_fs_req_cleanup(&mkstemp_req2);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1393,6 +1398,13 @@ TEST_IMPL(fs_fstat) {
|
||||
struct stat t;
|
||||
#endif
|
||||
|
||||
#if defined(__s390__) && defined(__QEMU__)
|
||||
/* qemu-user-s390x has this weird bug where statx() reports nanoseconds
|
||||
* but plain fstat() does not.
|
||||
*/
|
||||
RETURN_SKIP("Test does not currently work in QEMU");
|
||||
#endif
|
||||
|
||||
/* Setup. */
|
||||
unlink("test_file");
|
||||
|
||||
@ -1406,6 +1418,7 @@ TEST_IMPL(fs_fstat) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
#ifndef _WIN32
|
||||
memset(&t, 0, sizeof(t));
|
||||
ASSERT(0 == fstat(file, &t));
|
||||
ASSERT(0 == uv_fs_fstat(NULL, &req, file, NULL));
|
||||
ASSERT(req.result == 0);
|
||||
@ -1535,7 +1548,44 @@ TEST_IMPL(fs_fstat) {
|
||||
/* Cleanup. */
|
||||
unlink("test_file");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(fs_fstat_stdio) {
|
||||
int fd;
|
||||
int res;
|
||||
uv_fs_t req;
|
||||
#ifdef _WIN32
|
||||
uv_stat_t* st;
|
||||
DWORD ft;
|
||||
#endif
|
||||
|
||||
for (fd = 0; fd <= 2; ++fd) {
|
||||
res = uv_fs_fstat(NULL, &req, fd, NULL);
|
||||
ASSERT(res == 0);
|
||||
ASSERT(req.result == 0);
|
||||
|
||||
#ifdef _WIN32
|
||||
st = req.ptr;
|
||||
ft = uv_guess_handle(fd);
|
||||
switch (ft) {
|
||||
case UV_TTY:
|
||||
case UV_NAMED_PIPE:
|
||||
ASSERT(st->st_mode == (ft == UV_TTY ? S_IFCHR : S_IFIFO));
|
||||
ASSERT(st->st_nlink == 1);
|
||||
ASSERT(st->st_rdev == (ft == UV_TTY ? FILE_DEVICE_CONSOLE : FILE_DEVICE_NAMED_PIPE) << 16);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
uv_fs_req_cleanup(&req);
|
||||
}
|
||||
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1611,7 +1661,7 @@ TEST_IMPL(fs_access) {
|
||||
unlink("test_file");
|
||||
rmdir("test_dir");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1709,7 +1759,7 @@ TEST_IMPL(fs_chmod) {
|
||||
/* Cleanup. */
|
||||
unlink("test_file");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1768,7 +1818,7 @@ TEST_IMPL(fs_unlink_readonly) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
unlink("test_file");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1826,7 +1876,7 @@ TEST_IMPL(fs_unlink_archive_readonly) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
unlink("test_file");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -1919,7 +1969,7 @@ TEST_IMPL(fs_chown) {
|
||||
unlink("test_file");
|
||||
unlink("test_file_link");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2005,28 +2055,61 @@ TEST_IMPL(fs_link) {
|
||||
unlink("test_file_link");
|
||||
unlink("test_file_link2");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(fs_readlink) {
|
||||
uv_fs_t req;
|
||||
/* Must return UV_ENOENT on an inexistent file */
|
||||
{
|
||||
uv_fs_t req;
|
||||
|
||||
loop = uv_default_loop();
|
||||
ASSERT(0 == uv_fs_readlink(loop, &req, "no_such_file", dummy_cb));
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(dummy_cb_count == 1);
|
||||
ASSERT_NULL(req.ptr);
|
||||
ASSERT(req.result == UV_ENOENT);
|
||||
uv_fs_req_cleanup(&req);
|
||||
loop = uv_default_loop();
|
||||
ASSERT(0 == uv_fs_readlink(loop, &req, "no_such_file", dummy_cb));
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(dummy_cb_count == 1);
|
||||
ASSERT_NULL(req.ptr);
|
||||
ASSERT(req.result == UV_ENOENT);
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
ASSERT(UV_ENOENT == uv_fs_readlink(NULL, &req, "no_such_file", NULL));
|
||||
ASSERT_NULL(req.ptr);
|
||||
ASSERT(req.result == UV_ENOENT);
|
||||
uv_fs_req_cleanup(&req);
|
||||
ASSERT(UV_ENOENT == uv_fs_readlink(NULL, &req, "no_such_file", NULL));
|
||||
ASSERT_NULL(req.ptr);
|
||||
ASSERT(req.result == UV_ENOENT);
|
||||
uv_fs_req_cleanup(&req);
|
||||
}
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
/* Must return UV_EINVAL on a non-symlink file */
|
||||
{
|
||||
int r;
|
||||
uv_fs_t req;
|
||||
uv_file file;
|
||||
|
||||
/* Setup */
|
||||
|
||||
/* Create a non-symlink file */
|
||||
r = uv_fs_open(NULL, &req, "test_file", O_RDWR | O_CREAT,
|
||||
S_IWUSR | S_IRUSR, NULL);
|
||||
ASSERT_GE(r, 0);
|
||||
ASSERT_GE(req.result, 0);
|
||||
file = req.result;
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
r = uv_fs_close(NULL, &req, file, NULL);
|
||||
ASSERT_EQ(r, 0);
|
||||
ASSERT_EQ(req.result, 0);
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
/* Test */
|
||||
r = uv_fs_readlink(NULL, &req, "test_file", NULL);
|
||||
ASSERT_EQ(r, UV_EINVAL);
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
/* Cleanup */
|
||||
unlink("test_file");
|
||||
}
|
||||
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2039,15 +2122,6 @@ TEST_IMPL(fs_realpath) {
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(dummy_cb_count == 1);
|
||||
ASSERT_NULL(req.ptr);
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
* Windows XP and Server 2003 don't support GetFinalPathNameByHandleW()
|
||||
*/
|
||||
if (req.result == UV_ENOSYS) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
RETURN_SKIP("realpath is not supported on Windows XP");
|
||||
}
|
||||
#endif
|
||||
ASSERT(req.result == UV_ENOENT);
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
@ -2056,7 +2130,7 @@ TEST_IMPL(fs_realpath) {
|
||||
ASSERT(req.result == UV_ENOENT);
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2158,15 +2232,6 @@ TEST_IMPL(fs_symlink) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
r = uv_fs_realpath(NULL, &req, "test_file_symlink_symlink", NULL);
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
* Windows XP and Server 2003 don't support GetFinalPathNameByHandleW()
|
||||
*/
|
||||
if (r == UV_ENOSYS) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
RETURN_SKIP("realpath is not supported on Windows XP");
|
||||
}
|
||||
#endif
|
||||
ASSERT(r == 0);
|
||||
#ifdef _WIN32
|
||||
ASSERT(stricmp(req.ptr, test_file_abs_buf) == 0);
|
||||
@ -2216,15 +2281,6 @@ TEST_IMPL(fs_symlink) {
|
||||
ASSERT(readlink_cb_count == 1);
|
||||
|
||||
r = uv_fs_realpath(loop, &req, "test_file", realpath_cb);
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
* Windows XP and Server 2003 don't support GetFinalPathNameByHandleW()
|
||||
*/
|
||||
if (r == UV_ENOSYS) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
RETURN_SKIP("realpath is not supported on Windows XP");
|
||||
}
|
||||
#endif
|
||||
ASSERT(r == 0);
|
||||
uv_run(loop, UV_RUN_DEFAULT);
|
||||
ASSERT(realpath_cb_count == 1);
|
||||
@ -2242,7 +2298,7 @@ TEST_IMPL(fs_symlink) {
|
||||
unlink("test_file_symlink2");
|
||||
unlink("test_file_symlink2_symlink");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2325,15 +2381,6 @@ int test_symlink_dir_impl(int type) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
r = uv_fs_realpath(NULL, &req, "test_dir_symlink", NULL);
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
* Windows XP and Server 2003 don't support GetFinalPathNameByHandleW()
|
||||
*/
|
||||
if (r == UV_ENOSYS) {
|
||||
uv_fs_req_cleanup(&req);
|
||||
RETURN_SKIP("realpath is not supported on Windows XP");
|
||||
}
|
||||
#endif
|
||||
ASSERT(r == 0);
|
||||
#ifdef _WIN32
|
||||
ASSERT(strlen(req.ptr) == test_dir_abs_size - 5);
|
||||
@ -2396,7 +2443,7 @@ int test_symlink_dir_impl(int type) {
|
||||
rmdir("test_dir");
|
||||
rmdir("test_dir_symlink");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2505,7 +2552,7 @@ TEST_IMPL(fs_non_symlink_reparse_point) {
|
||||
unlink("test_dir/test_file");
|
||||
rmdir("test_dir");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2525,7 +2572,7 @@ TEST_IMPL(fs_lstat_windows_store_apps) {
|
||||
len = sizeof(localappdata);
|
||||
r = uv_os_getenv("LOCALAPPDATA", localappdata, &len);
|
||||
if (r == UV_ENOENT) {
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return TEST_SKIP;
|
||||
}
|
||||
ASSERT_EQ(r, 0);
|
||||
@ -2536,11 +2583,11 @@ TEST_IMPL(fs_lstat_windows_store_apps) {
|
||||
ASSERT_GT(r, 0);
|
||||
if (uv_fs_opendir(loop, &req, windowsapps_path, NULL) != 0) {
|
||||
/* If we cannot read the directory, skip the test. */
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return TEST_SKIP;
|
||||
}
|
||||
if (uv_fs_scandir(loop, &req, windowsapps_path, 0, NULL) <= 0) {
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return TEST_SKIP;
|
||||
}
|
||||
while (uv_fs_scandir_next(&req, &dirent) != UV_EOF) {
|
||||
@ -2556,7 +2603,7 @@ TEST_IMPL(fs_lstat_windows_store_apps) {
|
||||
}
|
||||
ASSERT_EQ(uv_fs_lstat(loop, &stat_req, file_path, NULL), 0);
|
||||
}
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -2603,7 +2650,7 @@ TEST_IMPL(fs_utime) {
|
||||
/* Cleanup. */
|
||||
unlink(path);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2642,7 +2689,7 @@ TEST_IMPL(fs_utime_round) {
|
||||
check_utime(path, atime, mtime, /* test_lutime */ 0);
|
||||
unlink(path);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2673,7 +2720,7 @@ TEST_IMPL(fs_stat_root) {
|
||||
r = uv_fs_stat(NULL, &stat_req, "\\\\?\\C:\\", NULL);
|
||||
ASSERT(r == 0);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -2736,7 +2783,7 @@ TEST_IMPL(fs_futime) {
|
||||
/* Cleanup. */
|
||||
unlink(path);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2755,8 +2802,8 @@ TEST_IMPL(fs_lutime) {
|
||||
loop = uv_default_loop();
|
||||
unlink(path);
|
||||
r = uv_fs_open(NULL, &req, path, O_RDWR | O_CREAT, S_IWUSR | S_IRUSR, NULL);
|
||||
ASSERT(r >= 0);
|
||||
ASSERT(req.result >= 0);
|
||||
ASSERT_GE(r, 0);
|
||||
ASSERT_GE(req.result, 0);
|
||||
uv_fs_req_cleanup(&req);
|
||||
uv_fs_close(loop, &req, r, NULL);
|
||||
|
||||
@ -2772,8 +2819,8 @@ TEST_IMPL(fs_lutime) {
|
||||
"Symlink creation requires elevated console (with admin rights)");
|
||||
}
|
||||
#endif
|
||||
ASSERT(s == 0);
|
||||
ASSERT(req.result == 0);
|
||||
ASSERT_EQ(s, 0);
|
||||
ASSERT_EQ(req.result, 0);
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
/* Test the synchronous version. */
|
||||
@ -2787,12 +2834,12 @@ TEST_IMPL(fs_lutime) {
|
||||
r = uv_fs_lutime(NULL, &req, symlink_path, atime, mtime, NULL);
|
||||
#if (defined(_AIX) && !defined(_AIX71)) || \
|
||||
defined(__MVS__)
|
||||
ASSERT(r == UV_ENOSYS);
|
||||
ASSERT_EQ(r, UV_ENOSYS);
|
||||
RETURN_SKIP("lutime is not implemented for z/OS and AIX versions below 7.1");
|
||||
#endif
|
||||
ASSERT(r == 0);
|
||||
ASSERT_EQ(r, 0);
|
||||
lutime_cb(&req);
|
||||
ASSERT(lutime_cb_count == 1);
|
||||
ASSERT_EQ(lutime_cb_count, 1);
|
||||
|
||||
/* Test the asynchronous version. */
|
||||
atime = mtime = 1291404900; /* 2010-12-03 20:35:00 */
|
||||
@ -2802,15 +2849,15 @@ TEST_IMPL(fs_lutime) {
|
||||
checkme.path = symlink_path;
|
||||
|
||||
r = uv_fs_lutime(loop, &req, symlink_path, atime, mtime, lutime_cb);
|
||||
ASSERT(r == 0);
|
||||
ASSERT_EQ(r, 0);
|
||||
uv_run(loop, UV_RUN_DEFAULT);
|
||||
ASSERT(lutime_cb_count == 2);
|
||||
ASSERT_EQ(lutime_cb_count, 2);
|
||||
|
||||
/* Cleanup. */
|
||||
unlink(path);
|
||||
unlink(symlink_path);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2826,7 +2873,7 @@ TEST_IMPL(fs_stat_missing_path) {
|
||||
ASSERT(req.result == UV_ENOENT);
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2863,7 +2910,7 @@ TEST_IMPL(fs_scandir_empty_dir) {
|
||||
uv_fs_rmdir(NULL, &req, path, NULL);
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2897,7 +2944,7 @@ TEST_IMPL(fs_scandir_non_existent_dir) {
|
||||
uv_run(loop, UV_RUN_DEFAULT);
|
||||
ASSERT(scandir_cb_count == 1);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2919,7 +2966,25 @@ TEST_IMPL(fs_scandir_file) {
|
||||
uv_run(loop, UV_RUN_DEFAULT);
|
||||
ASSERT(scandir_cb_count == 1);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Run in Valgrind. Should not leak when the iterator isn't exhausted. */
|
||||
TEST_IMPL(fs_scandir_early_exit) {
|
||||
uv_dirent_t d;
|
||||
uv_fs_t req;
|
||||
|
||||
ASSERT_LT(0, uv_fs_scandir(NULL, &req, "test/fixtures/one_file", 0, NULL));
|
||||
ASSERT_NE(UV_EOF, uv_fs_scandir_next(&req, &d));
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
ASSERT_LT(0, uv_fs_scandir(NULL, &req, "test/fixtures", 0, NULL));
|
||||
ASSERT_NE(UV_EOF, uv_fs_scandir_next(&req, &d));
|
||||
uv_fs_req_cleanup(&req);
|
||||
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2949,7 +3014,7 @@ TEST_IMPL(fs_open_dir) {
|
||||
uv_run(loop, UV_RUN_DEFAULT);
|
||||
ASSERT(open_cb_count == 1);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3024,7 +3089,7 @@ TEST_IMPL(fs_file_open_append) {
|
||||
fs_file_open_append(0);
|
||||
fs_file_open_append(UV_FS_O_FILEMAP);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3093,7 +3158,7 @@ TEST_IMPL(fs_rename_to_existing_file) {
|
||||
unlink("test_file");
|
||||
unlink("test_file2");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3151,7 +3216,7 @@ TEST_IMPL(fs_read_bufs) {
|
||||
fs_read_bufs(0);
|
||||
fs_read_bufs(UV_FS_O_FILEMAP);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3217,7 +3282,7 @@ TEST_IMPL(fs_read_file_eof) {
|
||||
fs_read_file_eof(0);
|
||||
fs_read_file_eof(UV_FS_O_FILEMAP);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3311,7 +3376,7 @@ TEST_IMPL(fs_write_multiple_bufs) {
|
||||
fs_write_multiple_bufs(0);
|
||||
fs_write_multiple_bufs(UV_FS_O_FILEMAP);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3418,7 +3483,7 @@ TEST_IMPL(fs_write_alotof_bufs) {
|
||||
fs_write_alotof_bufs(0);
|
||||
fs_write_alotof_bufs(UV_FS_O_FILEMAP);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3534,7 +3599,7 @@ TEST_IMPL(fs_write_alotof_bufs_with_offset) {
|
||||
fs_write_alotof_bufs_with_offset(0);
|
||||
fs_write_alotof_bufs_with_offset(UV_FS_O_FILEMAP);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3589,7 +3654,7 @@ TEST_IMPL(fs_read_dir) {
|
||||
/* Cleanup */
|
||||
rmdir("test_dir");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3682,9 +3747,9 @@ static void test_fs_partial(int doread) {
|
||||
ctx.doread = doread;
|
||||
ctx.interval = 1000;
|
||||
ctx.size = sizeof(test_buf) * iovcount;
|
||||
ctx.data = malloc(ctx.size);
|
||||
ctx.data = calloc(ctx.size, 1);
|
||||
ASSERT_NOT_NULL(ctx.data);
|
||||
buffer = malloc(ctx.size);
|
||||
buffer = calloc(ctx.size, 1);
|
||||
ASSERT_NOT_NULL(buffer);
|
||||
|
||||
for (index = 0; index < iovcount; ++index)
|
||||
@ -3727,9 +3792,10 @@ static void test_fs_partial(int doread) {
|
||||
uv_fs_req_cleanup(&write_req);
|
||||
}
|
||||
|
||||
ASSERT(0 == memcmp(buffer, ctx.data, ctx.size));
|
||||
|
||||
ASSERT(0 == uv_thread_join(&thread));
|
||||
|
||||
ASSERT_MEM_EQ(buffer, ctx.data, ctx.size);
|
||||
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
|
||||
ASSERT(0 == close(pipe_fds[1]));
|
||||
@ -3747,7 +3813,7 @@ static void test_fs_partial(int doread) {
|
||||
free(buffer);
|
||||
free(ctx.data);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
}
|
||||
|
||||
TEST_IMPL(fs_partial_read) {
|
||||
@ -3820,6 +3886,7 @@ TEST_IMPL(fs_read_write_null_arguments) {
|
||||
uv_run(loop, UV_RUN_DEFAULT);
|
||||
uv_fs_req_cleanup(&write_req);
|
||||
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3858,7 +3925,7 @@ TEST_IMPL(get_osfhandle_valid_handle) {
|
||||
/* Cleanup. */
|
||||
unlink("test_file");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3904,7 +3971,7 @@ TEST_IMPL(open_osfhandle_valid_handle) {
|
||||
/* Cleanup. */
|
||||
unlink("test_file");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -3944,7 +4011,7 @@ TEST_IMPL(fs_file_pos_after_op_with_offset) {
|
||||
/* Cleanup */
|
||||
unlink("test_file");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -4043,7 +4110,7 @@ TEST_IMPL(fs_file_pos_write) {
|
||||
fs_file_pos_write(0);
|
||||
fs_file_pos_write(UV_FS_O_FILEMAP);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -4083,7 +4150,7 @@ TEST_IMPL(fs_file_pos_append) {
|
||||
fs_file_pos_append(0);
|
||||
fs_file_pos_append(UV_FS_O_FILEMAP);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -4243,7 +4310,7 @@ TEST_IMPL(fs_exclusive_sharing_mode) {
|
||||
/* Cleanup */
|
||||
unlink("test_file");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -4290,7 +4357,7 @@ TEST_IMPL(fs_file_flag_no_buffering) {
|
||||
/* Cleanup */
|
||||
unlink("test_file");
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -4376,7 +4443,7 @@ TEST_IMPL(fs_open_readonly_acl) {
|
||||
unlink("test_file_icacls");
|
||||
uv_os_free_passwd(&pwd);
|
||||
ASSERT(r == 0);
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
@ -4461,6 +4528,7 @@ TEST_IMPL(fs_statfs) {
|
||||
uv_run(loop, UV_RUN_DEFAULT);
|
||||
ASSERT(statfs_cb_count == 2);
|
||||
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -4481,3 +4549,27 @@ TEST_IMPL(fs_get_system_error) {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
TEST_IMPL(fs_stat_batch_multiple) {
|
||||
uv_fs_t req[300];
|
||||
int r;
|
||||
int i;
|
||||
|
||||
rmdir("test_dir");
|
||||
|
||||
r = uv_fs_mkdir(NULL, &mkdir_req, "test_dir", 0755, NULL);
|
||||
ASSERT_EQ(r, 0);
|
||||
|
||||
loop = uv_default_loop();
|
||||
|
||||
for (i = 0; i < (int) ARRAY_SIZE(req); ++i) {
|
||||
r = uv_fs_stat(loop, &req[i], "test_dir", stat_batch_cb);
|
||||
ASSERT_EQ(r, 0);
|
||||
}
|
||||
|
||||
uv_run(loop, UV_RUN_DEFAULT);
|
||||
ASSERT_EQ(stat_cb_count, ARRAY_SIZE(req));
|
||||
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user