]> git.proxmox.com Git - libgit2.git/commitdiff
diriter: test we can iterate root
authorEdward Thomson <ethomson@microsoft.com>
Sun, 13 Sep 2015 17:52:19 +0000 (13:52 -0400)
committerEdward Thomson <ethomson@microsoft.com>
Sun, 13 Sep 2015 17:52:23 +0000 (13:52 -0400)
Ensure that we can iterate the filesystem root and that paths come
back well-formed, not with an additional '/'.  (eg, when iterating
`c:/`, expect that we do not get some path like `c://autoexec.bat`).

tests/core/dirent.c

index d95e44196dc71167affa50403b3eb8d0e621e628..2bd60269d7a6db763f1bafc511f02cdda4a708f7 100644 (file)
@@ -275,3 +275,32 @@ void test_core_dirent__diriter_with_fullname(void)
 
        check_counts(&sub);
 }
+
+void test_core_dirent__diriter_at_directory_root(void)
+{
+       git_path_diriter diriter = GIT_PATH_DIRITER_INIT;
+       const char *sandbox_path, *path;
+       char *root_path;
+       size_t path_len;
+       int root_offset, error;
+
+       sandbox_path = clar_sandbox_path();
+       cl_assert((root_offset = git_path_root(sandbox_path)) >= 0);
+
+       cl_assert(root_path = git__calloc(1, root_offset + 2));
+       strncpy(root_path, sandbox_path, root_offset + 1);
+
+       cl_git_pass(git_path_diriter_init(&diriter, root_path, 0));
+
+       while ((error = git_path_diriter_next(&diriter)) == 0) {
+               cl_git_pass(git_path_diriter_fullpath(&path, &path_len, &diriter));
+
+               cl_assert(path_len > (size_t)(root_offset + 1));
+               cl_assert(path[root_offset+1] != '/');
+       }
+
+       cl_assert_equal_i(error, GIT_ITEROVER);
+
+       git_path_diriter_free(&diriter);
+       git__free(root_path);
+}