Commit ba1bdf86e74777f1a597ac2737dddd7965f41711

nulltoken 2011-03-18T22:27:15

Improve test coverage of new path prettifying behavior

diff --git a/tests/t12-repo.c b/tests/t12-repo.c
index 2c7f131..9b8933f 100644
--- a/tests/t12-repo.c
+++ b/tests/t12-repo.c
@@ -158,7 +158,7 @@ BEGIN_TEST(init1, "initialize a bare repo")
 	must_pass(ensure_repository_init(TEMP_REPO_FOLDER_NS, BARE_REPOSITORY, NULL, path_repository, NULL));
 END_TEST
 
-BEGIN_TEST(init2, "Initialize a bare repo with a relative path escaping out of the current working directory")
+BEGIN_TEST(init2, "Initialize and open a bare repo with a relative path escaping out of the current working directory")
 	char path_repository[GIT_PATH_MAX];
 	char current_workdir[GIT_PATH_MAX];
 	const int mode = 0755; /* or 0777 ? */
@@ -176,6 +176,38 @@ BEGIN_TEST(init2, "Initialize a bare repo with a relative path escaping out of t
 
 	git_repository_free(repo);
 
+	must_pass(git_repository_open(&repo, "../d/e.git"));
+
+	git_repository_free(repo);
+
+	must_pass(chdir(current_workdir));
+	rmdir_recurs(TEMP_REPO_FOLDER);
+END_TEST
+
+BEGIN_TEST(open2, "Open a bare repository with a relative path escaping out of the current working directory")
+	char new_current_workdir[GIT_PATH_MAX];
+	char current_workdir[GIT_PATH_MAX];
+	char path_repository[GIT_PATH_MAX];
+
+	const int mode = 0755; /* or 0777 ? */
+	git_repository* repo;
+
+	/* Setup the repository to open */
+	must_pass(gitfo_getcwd(current_workdir, sizeof(current_workdir)));
+	strcpy(path_repository, current_workdir);
+	git__joinpath_n(path_repository, 3, path_repository, TEMP_REPO_FOLDER, "a/d/e.git");
+	must_pass(gitfo_mkdir_recurs(path_repository, mode));
+	must_pass(copydir_recurs(REPOSITORY_FOLDER, path_repository));
+
+	/* Change the current working directory */
+	git__joinpath(new_current_workdir, TEMP_REPO_FOLDER, "a/b/c/");
+	must_pass(gitfo_mkdir_recurs(new_current_workdir, mode));
+	must_pass(chdir(new_current_workdir));
+
+	must_pass(git_repository_open(&repo, "../../d/e.git"));
+
+	git_repository_free(repo);
+
 	must_pass(chdir(current_workdir));
 	rmdir_recurs(TEMP_REPO_FOLDER);
 END_TEST
@@ -186,5 +218,6 @@ BEGIN_SUITE(repository)
 	ADD_TEST(init0);
 	ADD_TEST(init1);
 	ADD_TEST(init2);
+	ADD_TEST(open2);
 END_SUITE