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:
2023-05-21 21:36:51 +00:00
parent 1ccb9183b4
commit f421606e21
299 changed files with 7167 additions and 4918 deletions

View File

@ -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;
}