mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-28 15:58:29 +00:00
checkout: add test coverage of dirs and subtrees
This commit is contained in:
parent
5af61863dd
commit
10df95c3ca
@ -4,26 +4,66 @@
|
||||
#include "repository.h"
|
||||
|
||||
static git_repository *g_repo;
|
||||
static git_checkout_opts g_opts;
|
||||
static git_object *g_object;
|
||||
|
||||
void test_checkout_tree__initialize(void)
|
||||
{
|
||||
g_repo = cl_git_sandbox_init("testrepo");
|
||||
|
||||
memset(&g_opts, 0, sizeof(g_opts));
|
||||
g_opts.checkout_strategy = GIT_CHECKOUT_CREATE_MISSING;
|
||||
}
|
||||
|
||||
void test_checkout_tree__cleanup(void)
|
||||
{
|
||||
git_object_free(g_object);
|
||||
|
||||
cl_git_sandbox_cleanup();
|
||||
}
|
||||
|
||||
void test_checkout_tree__cannot_checkout_a_non_treeish(void)
|
||||
{
|
||||
git_oid oid;
|
||||
git_blob *blob;
|
||||
/* blob */
|
||||
cl_git_pass(git_revparse_single(&g_object, g_repo, "a71586c1dfe8a71c6cbf6c129f404c5642ff31bd"));
|
||||
|
||||
cl_git_pass(git_oid_fromstr(&oid, "a71586c1dfe8a71c6cbf6c129f404c5642ff31bd"));
|
||||
cl_git_pass(git_blob_lookup(&blob, g_repo, &oid));
|
||||
|
||||
cl_git_fail(git_checkout_tree(g_repo, (git_object *)blob, NULL, NULL));
|
||||
|
||||
git_blob_free(blob);
|
||||
cl_git_fail(git_checkout_tree(g_repo, g_object, NULL, NULL));
|
||||
}
|
||||
|
||||
void test_checkout_tree__can_checkout_a_subdirectory_from_a_commit(void)
|
||||
{
|
||||
git_strarray paths;
|
||||
char *entries[] = { "ab/de/" };
|
||||
|
||||
paths.strings = entries;
|
||||
paths.count = 1;
|
||||
g_opts.paths = &paths;
|
||||
|
||||
cl_git_pass(git_revparse_single(&g_object, g_repo, "subtrees"));
|
||||
|
||||
cl_assert_equal_i(false, git_path_isdir("./testrepo/ab/"));
|
||||
|
||||
cl_git_pass(git_checkout_tree(g_repo, g_object, &g_opts, NULL));
|
||||
|
||||
cl_assert_equal_i(true, git_path_isfile("./testrepo/ab/de/2.txt"));
|
||||
cl_assert_equal_i(true, git_path_isfile("./testrepo/ab/de/fgh/1.txt"));
|
||||
}
|
||||
|
||||
void test_checkout_tree__can_checkout_a_subdirectory_from_a_subtree(void)
|
||||
{
|
||||
git_strarray paths;
|
||||
char *entries[] = { "de/" };
|
||||
|
||||
paths.strings = entries;
|
||||
paths.count = 1;
|
||||
g_opts.paths = &paths;
|
||||
|
||||
cl_git_pass(git_revparse_single(&g_object, g_repo, "subtrees:ab"));
|
||||
|
||||
cl_assert_equal_i(false, git_path_isdir("./testrepo/de/"));
|
||||
|
||||
cl_git_pass(git_checkout_tree(g_repo, g_object, &g_opts, NULL));
|
||||
|
||||
cl_assert_equal_i(true, git_path_isfile("./testrepo/de/2.txt"));
|
||||
cl_assert_equal_i(true, git_path_isfile("./testrepo/de/fgh/1.txt"));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user