diff options
| author | nulltoken <emeric.fermas@gmail.com> | 2012-09-15 12:23:49 +0200 |
|---|---|---|
| committer | nulltoken <emeric.fermas@gmail.com> | 2012-09-17 10:48:31 +0200 |
| commit | 10df95c3cac1c4e195bd39a0914de899245ee5e0 (patch) | |
| tree | e5c5635593c2720baebeab3f69d86fa9f7abd205 /tests-clar/checkout/tree.c | |
| parent | 5af61863dd735887e73d98e9a8cba699276303fd (diff) | |
| download | libgit2-10df95c3cac1c4e195bd39a0914de899245ee5e0.tar.gz | |
checkout: add test coverage of dirs and subtrees
Diffstat (limited to 'tests-clar/checkout/tree.c')
| -rw-r--r-- | tests-clar/checkout/tree.c | 52 |
1 files changed, 46 insertions, 6 deletions
diff --git a/tests-clar/checkout/tree.c b/tests-clar/checkout/tree.c index 32b64e5d7..5f99043f9 100644 --- a/tests-clar/checkout/tree.c +++ b/tests-clar/checkout/tree.c @@ -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_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_git_pass(git_oid_fromstr(&oid, "a71586c1dfe8a71c6cbf6c129f404c5642ff31bd")); - cl_git_pass(git_blob_lookup(&blob, g_repo, &oid)); + cl_assert_equal_i(false, git_path_isdir("./testrepo/de/")); - cl_git_fail(git_checkout_tree(g_repo, (git_object *)blob, NULL, NULL)); + cl_git_pass(git_checkout_tree(g_repo, g_object, &g_opts, NULL)); - git_blob_free(blob); + 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")); } |
