Commit e85c705f by Vicent Marti

Merge branch 'join-path-tests' of https://github.com/nulltoken/libgit2

parents 13317a5e fc8afc87
...@@ -207,6 +207,8 @@ char *git__joinpath(const char *path_a, const char *path_b) ...@@ -207,6 +207,8 @@ char *git__joinpath(const char *path_a, const char *path_b)
int len_a, len_b; int len_a, len_b;
char *path_new; char *path_new;
assert(path_a && path_b);
len_a = strlen(path_a); len_a = strlen(path_a);
len_b = strlen(path_b); len_b = strlen(path_b);
...@@ -216,7 +218,7 @@ char *git__joinpath(const char *path_a, const char *path_b) ...@@ -216,7 +218,7 @@ char *git__joinpath(const char *path_a, const char *path_b)
strcpy(path_new, path_a); strcpy(path_new, path_a);
if (path_new[len_a - 1] != '/') if (len_a > 0 && len_b > 0 && path_new[len_a - 1] != '/')
path_new[len_a++] = '/'; path_new[len_a++] = '/';
if (path_b[0] == '/') if (path_b[0] == '/')
......
...@@ -342,6 +342,36 @@ BEGIN_TEST("path", dir_path_prettifying) ...@@ -342,6 +342,36 @@ BEGIN_TEST("path", dir_path_prettifying)
must_fail(ensure_dir_path_normalized("/d1/.../d2", NULL)); must_fail(ensure_dir_path_normalized("/d1/.../d2", NULL));
END_TEST END_TEST
static int ensure_joinpath(const char *path_a, const char *path_b, const char *expected_path)
{
int error = GIT_SUCCESS;
char* joined_path;
joined_path = git__joinpath(path_a, path_b);
if (joined_path == NULL)
return GIT_ERROR;
if (strcmp(joined_path, expected_path))
error = GIT_ERROR;
free(joined_path);
return error;
}
BEGIN_TEST("path", joinpath)
must_pass(ensure_joinpath("", "", ""));
must_pass(ensure_joinpath("", "a", "a"));
must_pass(ensure_joinpath("a", "", "a"));
must_pass(ensure_joinpath("a", "b", "a/b"));
must_pass(ensure_joinpath("/", "a", "/a"));
must_pass(ensure_joinpath("/", "", "/"));
must_pass(ensure_joinpath("/a", "/b", "/a/b"));
must_pass(ensure_joinpath("/a", "/b/", "/a/b/"));
must_pass(ensure_joinpath("/a/", "b/", "/a/b/"));
must_pass(ensure_joinpath("/a/", "/b/", "/a/b/"));
END_TEST
typedef struct name_data { typedef struct name_data {
int count; /* return count */ int count; /* return count */
char *name; /* filename */ char *name; /* filename */
...@@ -601,6 +631,7 @@ git_testsuite *libgit2_suite_core(void) ...@@ -601,6 +631,7 @@ git_testsuite *libgit2_suite_core(void)
ADD_TEST(suite, "path", file_path_prettifying); ADD_TEST(suite, "path", file_path_prettifying);
ADD_TEST(suite, "path", dir_path_prettifying); ADD_TEST(suite, "path", dir_path_prettifying);
ADD_TEST(suite, "path", joinpath);
ADD_TEST(suite, "dirent", dot); ADD_TEST(suite, "dirent", dot);
ADD_TEST(suite, "dirent", sub); ADD_TEST(suite, "dirent", sub);
......
...@@ -146,6 +146,8 @@ BEGIN_TEST("write", index_write_test) ...@@ -146,6 +146,8 @@ BEGIN_TEST("write", index_write_test)
must_pass(git_filelock_commit(&out_file)); must_pass(git_filelock_commit(&out_file));
git_index_free(index); git_index_free(index);
gitfo_unlink("index_rewrite");
END_TEST END_TEST
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment