Hash :
e54343a4
Author :
Date :
2019-06-29T09:17:32
fileops: rename to "futils.h" to match function signatures Our file utils functions all have a "futils" prefix, e.g. `git_futils_touch`. One would thus naturally guess that their definitions and implementation would live in files "futils.h" and "futils.c", respectively, but in fact they live in "fileops.h". Rename the files to match expectations.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
#include "clar_libgit2.h"
#include "futils.h"
#include "path.h"
#include "posix.h"
void test_core_stat__initialize(void)
{
cl_git_pass(git_futils_mkdir("root/d1/d2", 0755, GIT_MKDIR_PATH));
cl_git_mkfile("root/file", "whatever\n");
cl_git_mkfile("root/d1/file", "whatever\n");
}
void test_core_stat__cleanup(void)
{
git_futils_rmdir_r("root", NULL, GIT_RMDIR_REMOVE_FILES);
}
#define cl_assert_error(val) \
do { err = errno; cl_assert_equal_i((val), err); } while (0)
void test_core_stat__0(void)
{
struct stat st;
int err;
cl_assert_equal_i(0, p_lstat("root", &st));
cl_assert(S_ISDIR(st.st_mode));
cl_assert_error(0);
cl_assert_equal_i(0, p_lstat("root/", &st));
cl_assert(S_ISDIR(st.st_mode));
cl_assert_error(0);
cl_assert_equal_i(0, p_lstat("root/file", &st));
cl_assert(S_ISREG(st.st_mode));
cl_assert_error(0);
cl_assert_equal_i(0, p_lstat("root/d1", &st));
cl_assert(S_ISDIR(st.st_mode));
cl_assert_error(0);
cl_assert_equal_i(0, p_lstat("root/d1/", &st));
cl_assert(S_ISDIR(st.st_mode));
cl_assert_error(0);
cl_assert_equal_i(0, p_lstat("root/d1/file", &st));
cl_assert(S_ISREG(st.st_mode));
cl_assert_error(0);
cl_assert(p_lstat("root/missing", &st) < 0);
cl_assert_error(ENOENT);
cl_assert(p_lstat("root/missing/but/could/be/created", &st) < 0);
cl_assert_error(ENOENT);
cl_assert(p_lstat_posixly("root/missing/but/could/be/created", &st) < 0);
cl_assert_error(ENOENT);
cl_assert(p_lstat("root/d1/missing", &st) < 0);
cl_assert_error(ENOENT);
cl_assert(p_lstat("root/d1/missing/deeper/path", &st) < 0);
cl_assert_error(ENOENT);
cl_assert(p_lstat_posixly("root/d1/missing/deeper/path", &st) < 0);
cl_assert_error(ENOENT);
cl_assert(p_lstat_posixly("root/d1/file/deeper/path", &st) < 0);
cl_assert_error(ENOTDIR);
cl_assert(p_lstat("root/file/invalid", &st) < 0);
#ifdef GIT_WIN32
cl_assert_error(ENOENT);
#else
cl_assert_error(ENOTDIR);
#endif
cl_assert(p_lstat_posixly("root/file/invalid", &st) < 0);
cl_assert_error(ENOTDIR);
cl_assert(p_lstat("root/file/invalid/deeper_path", &st) < 0);
#ifdef GIT_WIN32
cl_assert_error(ENOENT);
#else
cl_assert_error(ENOTDIR);
#endif
cl_assert(p_lstat_posixly("root/file/invalid/deeper_path", &st) < 0);
cl_assert_error(ENOTDIR);
cl_assert(p_lstat_posixly("root/d1/file/extra", &st) < 0);
cl_assert_error(ENOTDIR);
cl_assert(p_lstat_posixly("root/d1/file/further/invalid/items", &st) < 0);
cl_assert_error(ENOTDIR);
}
void test_core_stat__root(void)
{
const char *sandbox = clar_sandbox_path();
git_buf root = GIT_BUF_INIT;
int root_len;
struct stat st;
root_len = git_path_root(sandbox);
cl_assert(root_len >= 0);
git_buf_set(&root, sandbox, root_len+1);
cl_must_pass(p_stat(root.ptr, &st));
cl_assert(S_ISDIR(st.st_mode));
git_buf_dispose(&root);
}