Commit f6fded8f9110aa05fe3d947d9e53cbd5cc13d1d5

Vicent Marti 2013-01-03T19:07:41

Proper cleanup jeez

diff --git a/tests-clar/config/read.c b/tests-clar/config/read.c
index b603acb..9c02307 100644
--- a/tests-clar/config/read.c
+++ b/tests-clar/config/read.c
@@ -1,10 +1,5 @@
 #include "clar_libgit2.h"
 
-void test_config_read__cleanup(void)
-{
-	cl_fixture_cleanup("./empty");
-}
-
 void test_config_read__simple_read(void)
 {
 	git_config *cfg;
@@ -436,11 +431,18 @@ void test_config_read__simple_read_from_specific_level(void)
 	git_config_free(cfg);
 }
 
+static void clean_empty_config(void *unused)
+{
+	GIT_UNUSED(unused);
+	cl_fixture_cleanup("./empty");
+}
+
 void test_config_read__can_load_and_parse_an_empty_config_file(void)
 {
 	git_config *cfg;
 	int i;
 
+	cl_set_cleanup(&clean_empty_config, NULL);
 	cl_git_mkfile("./empty", "");
 	cl_git_pass(git_config_open_ondisk(&cfg, "./empty"));
 	cl_assert_equal_i(GIT_ENOTFOUND, git_config_get_int32(&i, cfg, "nope.neither"));
diff --git a/tests-clar/index/tests.c b/tests-clar/index/tests.c
index d2ad71c..989734c 100644
--- a/tests-clar/index/tests.c
+++ b/tests-clar/index/tests.c
@@ -24,8 +24,6 @@ static struct test_entry test_entries[] = {
    {48, "src/revobject.h", 1448, 0x4C3F7FE2}
 };
 
-static char *path_to_cleanup = NULL;
-
 // Helpers
 static void copy_file(const char *src, const char *dst)
 {
@@ -73,14 +71,6 @@ void test_index_tests__initialize(void)
 {
 }
 
-void test_index_tests__cleanup(void)
-{
-	if (path_to_cleanup)
-		cl_fixture_cleanup(path_to_cleanup);
-	path_to_cleanup = NULL;
-}
-
-
 void test_index_tests__empty_index(void)
 {
    git_index *index;
@@ -207,50 +197,57 @@ void test_index_tests__sort1(void)
    git_index_free(index);
 }
 
+static void cleanup_myrepo(void *opaque)
+{
+	GIT_UNUSED(opaque);
+	cl_fixture_cleanup("myrepo");
+}
+
 void test_index_tests__add(void)
 {
-   git_index *index;
-   git_filebuf file = GIT_FILEBUF_INIT;
-   git_repository *repo;
-   const git_index_entry *entry;
-   git_oid id1;
+	git_index *index;
+	git_filebuf file = GIT_FILEBUF_INIT;
+	git_repository *repo;
+	const git_index_entry *entry;
+	git_oid id1;
 
-   /* Intialize a new repository */
-   cl_git_pass(git_repository_init(&repo, "./myrepo", 0));
+	cl_set_cleanup(&cleanup_myrepo, NULL);
 
-   /* Ensure we're the only guy in the room */
-   cl_git_pass(git_repository_index(&index, repo));
-   cl_assert(git_index_entrycount(index) == 0);
+	/* Intialize a new repository */
+	cl_git_pass(git_repository_init(&repo, "./myrepo", 0));
 
-   /* Create a new file in the working directory */
-   cl_git_pass(git_futils_mkpath2file("myrepo/test.txt", 0777));
-   cl_git_pass(git_filebuf_open(&file, "myrepo/test.txt", 0));
-   cl_git_pass(git_filebuf_write(&file, "hey there\n", 10));
-   cl_git_pass(git_filebuf_commit(&file, 0666));
+	/* Ensure we're the only guy in the room */
+	cl_git_pass(git_repository_index(&index, repo));
+	cl_assert(git_index_entrycount(index) == 0);
 
-   /* Store the expected hash of the file/blob
-   * This has been generated by executing the following
-   * $ echo "hey there" | git hash-object --stdin
-   */
-   cl_git_pass(git_oid_fromstr(&id1, "a8233120f6ad708f843d861ce2b7228ec4e3dec6"));
+	/* Create a new file in the working directory */
+	cl_git_pass(git_futils_mkpath2file("myrepo/test.txt", 0777));
+	cl_git_pass(git_filebuf_open(&file, "myrepo/test.txt", 0));
+	cl_git_pass(git_filebuf_write(&file, "hey there\n", 10));
+	cl_git_pass(git_filebuf_commit(&file, 0666));
 
-   /* Add the new file to the index */
-   cl_git_pass(git_index_add_from_workdir(index, "test.txt"));
+	/* Store the expected hash of the file/blob
+	 * This has been generated by executing the following
+	 * $ echo "hey there" | git hash-object --stdin
+	 */
+	cl_git_pass(git_oid_fromstr(&id1, "a8233120f6ad708f843d861ce2b7228ec4e3dec6"));
 
-   /* Wow... it worked! */
-   cl_assert(git_index_entrycount(index) == 1);
-   entry = git_index_get_byindex(index, 0);
+	/* Add the new file to the index */
+	cl_git_pass(git_index_add_from_workdir(index, "test.txt"));
 
-   /* And the built-in hashing mechanism worked as expected */
-   cl_assert(git_oid_cmp(&id1, &entry->oid) == 0);
+	/* Wow... it worked! */
+	cl_assert(git_index_entrycount(index) == 1);
+	entry = git_index_get_byindex(index, 0);
 
-   /* Test access by path instead of index */
-   cl_assert((entry = git_index_get_bypath(index, "test.txt", 0)) != NULL);
-   cl_assert(git_oid_cmp(&id1, &entry->oid) == 0);
+	/* And the built-in hashing mechanism worked as expected */
+	cl_assert(git_oid_cmp(&id1, &entry->oid) == 0);
 
-   git_index_free(index);
-   git_repository_free(repo);
-	path_to_cleanup = "myrepo";
+	/* Test access by path instead of index */
+	cl_assert((entry = git_index_get_bypath(index, "test.txt", 0)) != NULL);
+	cl_assert(git_oid_cmp(&id1, &entry->oid) == 0);
+
+	git_index_free(index);
+	git_repository_free(repo);
 }
 
 void test_index_tests__add_from_workdir_to_a_bare_repository_returns_EBAREPO(void)