Commit 0345a380 by Edward Thomson

p_fallocate: add a test for our implementation

parent 7ab7bf46
......@@ -27,6 +27,11 @@ void test_core_posix__initialize(void)
#endif
}
void test_core_posix__cleanup(void)
{
p_unlink("fallocate_test");
}
static bool supports_ipv6(void)
{
#ifdef GIT_WIN32
......@@ -190,3 +195,39 @@ void test_core_posix__p_regcomp_compile_userdiff_regexps(void)
cl_must_pass(error);
}
}
void test_core_posix__fallocate(void)
{
int fd;
struct stat st;
/* fallocate a new file succeeds */
cl_must_pass(fd = p_open("fallocate_test", O_RDWR|O_CREAT, 0666));
cl_must_pass(p_fallocate(fd, 0, 42));
cl_must_pass(p_fstat(fd, &st));
cl_assert_equal_i(42, st.st_size);
p_close(fd);
/* fallocate an existing file succeeds */
cl_must_pass(fd = p_open("fallocate_test", O_RDWR, 0666));
cl_must_pass(p_fallocate(fd, 90, 9));
cl_must_pass(p_fstat(fd, &st));
cl_assert_equal_i(99, st.st_size);
p_close(fd);
/* fallocate doesn't shrink */
cl_must_pass(fd = p_open("fallocate_test", O_RDWR, 0666));
cl_must_pass(p_fallocate(fd, 0, 14));
cl_must_pass(p_fstat(fd, &st));
cl_assert_equal_i(99, st.st_size);
p_close(fd);
/* fallocate doesn't move the cursor */
cl_must_pass(fd = p_open("fallocate_test", O_RDWR, 0666));
cl_must_pass(p_fallocate(fd, 0, 100));
cl_assert_equal_i(0, p_lseek(fd, 0, SEEK_CUR));
cl_must_pass(p_lseek(fd, 42, SEEK_SET));
cl_must_pass(p_fallocate(fd, 0, 200));
cl_assert_equal_i(42, p_lseek(fd, 0, SEEK_CUR));
p_close(fd);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment