From 29e1797c14c4c67f5f941130bdda835b8c74869e Mon Sep 17 00:00:00 2001 From: nulltoken Date: Sat, 5 Mar 2011 14:26:22 +0100 Subject: [PATCH] Add remove_placeholders() test helper function which recursively removes marker files from a directory structure --- tests/test_helpers.c | 28 ++++++++++++++++++++++++++++ tests/test_helpers.h | 1 + 2 files changed, 29 insertions(+) diff --git a/tests/test_helpers.c b/tests/test_helpers.c index 1d345356a..760de238b 100644 --- a/tests/test_helpers.c +++ b/tests/test_helpers.c @@ -256,3 +256,31 @@ void close_temp_repo(git_repository *repo) git_repository_free(repo); rmdir_recurs(TEMP_REPO_FOLDER); } + +static int remove_placeholders_recurs(void *filename, char *path) +{ + char passed_filename[GIT_PATH_MAX]; + char *data = (char *)filename; + + if (!gitfo_isdir(path)) + return gitfo_dirent(path, GIT_PATH_MAX, remove_placeholders_recurs, data); + + if (git__basename_r(passed_filename, sizeof(passed_filename), path) < GIT_SUCCESS) + return GIT_EINVALIDPATH; + + if (!strcmp(data, passed_filename)) + return gitfo_unlink(path); + + return GIT_SUCCESS; +} + +int remove_placeholders(char *directory_path, char *filename) +{ + char buffer[GIT_PATH_MAX]; + + if (gitfo_isdir(directory_path)) + return GIT_EINVALIDPATH; + + strcpy(buffer, directory_path); + return remove_placeholders_recurs(filename, buffer); +} diff --git a/tests/test_helpers.h b/tests/test_helpers.h index 9a24ebccf..19c8ae55c 100644 --- a/tests/test_helpers.h +++ b/tests/test_helpers.h @@ -67,6 +67,7 @@ extern int cmp_files(const char *a, const char *b); extern int copy_file(const char *source, const char *dest); extern int rmdir_recurs(const char *directory_path); extern int copydir_recurs(const char *source_directory_path, const char *destination_directory_path); +extern int remove_placeholders(char *directory_path, char *filename); extern int open_temp_repo(git_repository **repo, const char *path); extern void close_temp_repo(git_repository *repo);