diff options
author | Russell Belfer <rb@github.com> | 2013-10-02 11:07:18 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2013-10-03 10:44:13 -0700 |
commit | d0849f830f494445e4ef9f04d32be1a2d10b89b3 (patch) | |
tree | 1f7f3e60a962391e034386383e076a6d7304991f /tests-clar | |
parent | 966bb17a57d0c1128261b7575db245f5bc3cf41d (diff) | |
download | libgit2-d0849f830f494445e4ef9f04d32be1a2d10b89b3.tar.gz |
Simplify git_path_is_empty_dir implementation
This simplifies git_path_is_empty_dir on both Windows (getting rid
of git_buf allocation inside the function) and other platforms (by
just using git_path_direach), and adds tests for the function, and
uses the function to simplify some existing tests.
Diffstat (limited to 'tests-clar')
-rw-r--r-- | tests-clar/clone/nonetwork.c | 20 | ||||
-rw-r--r-- | tests-clar/core/dirent.c | 31 |
2 files changed, 24 insertions, 27 deletions
diff --git a/tests-clar/clone/nonetwork.c b/tests-clar/clone/nonetwork.c index c4d75a8dc..071e3d09f 100644 --- a/tests-clar/clone/nonetwork.c +++ b/tests-clar/clone/nonetwork.c @@ -56,34 +56,18 @@ void test_clone_nonetwork__bad_url(void) cl_assert(!git_path_exists("./foo")); } -static int dont_call_me(void *state, git_buf *path) -{ - GIT_UNUSED(state); - GIT_UNUSED(path); - return GIT_ERROR; -} - -static void assert_empty_directory(const char *path) -{ - git_buf buf = GIT_BUF_INIT; - cl_assert(git_path_exists(path)); - cl_git_pass(git_buf_sets(&buf, path)); - cl_git_pass(git_path_direach(&buf, 0, dont_call_me, NULL)); - git_buf_free(&buf); -} - void test_clone_nonetwork__do_not_clean_existing_directory(void) { /* Clone should not remove the directory if it already exists, but * Should clean up entries it creates. */ p_mkdir("./foo", GIT_DIR_MODE); cl_git_fail(git_clone(&g_repo, "not_a_repo", "./foo", &g_options)); - assert_empty_directory("./foo"); + cl_assert(git_path_is_empty_dir("./foo")); /* Try again with a bare repository. */ g_options.bare = true; cl_git_fail(git_clone(&g_repo, "not_a_repo", "./foo", &g_options)); - assert_empty_directory("./foo"); + cl_assert(git_path_is_empty_dir("./foo")); } void test_clone_nonetwork__local(void) diff --git a/tests-clar/core/dirent.c b/tests-clar/core/dirent.c index a9a83e827..f17260362 100644 --- a/tests-clar/core/dirent.c +++ b/tests-clar/core/dirent.c @@ -88,14 +88,6 @@ static int one_entry(void *state, git_buf *path) return GIT_ERROR; } -static int dont_call_me(void *state, git_buf *path) -{ - GIT_UNUSED(state); - GIT_UNUSED(path); - return GIT_ERROR; -} - - static name_data dot_names[] = { { 0, "./a" }, @@ -183,7 +175,7 @@ void test_core_dirent__dont_traverse_empty_folders(void) check_counts(&empty); /* make sure callback not called */ - cl_git_pass(git_path_direach(&empty.path, 0, dont_call_me, &empty)); + cl_assert(git_path_is_empty_dir(empty.path.ptr)); } static name_data odd_names[] = { @@ -219,5 +211,26 @@ void test_core_dirent__length_limits(void) big_filename[FILENAME_MAX] = 0; cl_must_fail(p_creat(big_filename, 0666)); + git__free(big_filename); } + +void test_core_dirent__empty_dir(void) +{ + cl_must_pass(p_mkdir("empty_dir", 0777)); + cl_assert(git_path_is_empty_dir("empty_dir")); + + cl_git_mkfile("empty_dir/content", "whatever\n"); + cl_assert(!git_path_is_empty_dir("empty_dir")); + cl_assert(!git_path_is_empty_dir("empty_dir/content")); + + cl_must_pass(p_unlink("empty_dir/content")); + + cl_must_pass(p_mkdir("empty_dir/content", 0777)); + cl_assert(!git_path_is_empty_dir("empty_dir")); + cl_assert(git_path_is_empty_dir("empty_dir/content")); + + cl_must_pass(p_rmdir("empty_dir/content")); + + cl_must_pass(p_rmdir("empty_dir")); +} |