summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2011-02-25 21:58:25 +0100
committerVicent Marti <tanoku@gmail.com>2011-03-03 20:23:50 +0200
commit3b3a10176e6f6c239abad4f835883ee903067180 (patch)
treea5218aea4a9323743082daac80c5a8cc9b65d727 /tests
parent47d0db78bb1e52925b726450572b17bd7805a196 (diff)
downloadlibgit2-3b3a10176e6f6c239abad4f835883ee903067180.tar.gz
Added rmdir_recurs(), a test helper function which recursively removes the content of a directory.
Diffstat (limited to 'tests')
-rw-r--r--tests/test_helpers.c26
-rw-r--r--tests/test_helpers.h1
2 files changed, 27 insertions, 0 deletions
diff --git a/tests/test_helpers.c b/tests/test_helpers.c
index c93d31b57..60ef5b50d 100644
--- a/tests/test_helpers.c
+++ b/tests/test_helpers.c
@@ -175,3 +175,29 @@ int cmp_files(const char *a, const char *b)
return error;
}
+
+static int remove_filesystem_element_recurs(void *GIT_UNUSED(nil), char *path)
+{
+ char temp_path[GIT_PATH_MAX];
+ int error = GIT_SUCCESS;
+
+ GIT_UNUSED_ARG(nil);
+
+ error = gitfo_isdir(path);
+ if (error == GIT_SUCCESS)
+ {
+ strcpy(temp_path, path);
+ error = gitfo_dirent(temp_path, sizeof(temp_path), remove_filesystem_element_recurs, NULL);
+ if (error < GIT_SUCCESS)
+ return error;
+
+ return rmdir(path);
+ }
+
+ return gitfo_unlink(path);
+}
+
+int rmdir_recurs(char *directory_path)
+{
+ return remove_filesystem_element_recurs(NULL, directory_path);
+}
diff --git a/tests/test_helpers.h b/tests/test_helpers.h
index 0a9a9e161..c757eb6bc 100644
--- a/tests/test_helpers.h
+++ b/tests/test_helpers.h
@@ -58,6 +58,7 @@ extern int remove_loose_object(const char *odb_dir, git_object *object);
extern int cmp_files(const char *a, const char *b);
extern int copy_file(const char *source, const char *dest);
+extern int rmdir_recurs(char *directory_path);
#endif
/* INCLUDE_test_helpers_h__ */