diff options
Diffstat (limited to 'tests-clar/stash/drop.c')
-rw-r--r-- | tests-clar/stash/drop.c | 53 |
1 files changed, 44 insertions, 9 deletions
diff --git a/tests-clar/stash/drop.c b/tests-clar/stash/drop.c index 16e3d77ac..1eb42c029 100644 --- a/tests-clar/stash/drop.c +++ b/tests-clar/stash/drop.c @@ -1,6 +1,7 @@ #include "clar_libgit2.h" #include "fileops.h" #include "stash_helpers.h" +#include "refs.h" static git_repository *repo; static git_signature *signature; @@ -24,7 +25,7 @@ void test_stash_drop__cleanup(void) void test_stash_drop__cannot_drop_from_an_empty_stash(void) { - cl_assert_equal_i(GIT_ENOTFOUND, git_stash_drop(repo, 0)); + cl_git_fail_with(git_stash_drop(repo, 0), GIT_ENOTFOUND); } static void push_three_states(void) @@ -60,9 +61,9 @@ void test_stash_drop__cannot_drop_a_non_existing_stashed_state(void) { push_three_states(); - cl_assert_equal_i(GIT_ENOTFOUND, git_stash_drop(repo, 666)); - cl_assert_equal_i(GIT_ENOTFOUND, git_stash_drop(repo, 42)); - cl_assert_equal_i(GIT_ENOTFOUND, git_stash_drop(repo, 3)); + cl_git_fail_with(git_stash_drop(repo, 666), GIT_ENOTFOUND); + cl_git_fail_with(git_stash_drop(repo, 42), GIT_ENOTFOUND); + cl_git_fail_with(git_stash_drop(repo, 3), GIT_ENOTFOUND); } void test_stash_drop__can_purge_the_stash_from_the_top(void) @@ -73,7 +74,7 @@ void test_stash_drop__can_purge_the_stash_from_the_top(void) cl_git_pass(git_stash_drop(repo, 0)); cl_git_pass(git_stash_drop(repo, 0)); - cl_assert_equal_i(GIT_ENOTFOUND, git_stash_drop(repo, 0)); + cl_git_fail_with(git_stash_drop(repo, 0), GIT_ENOTFOUND); } void test_stash_drop__can_purge_the_stash_from_the_bottom(void) @@ -84,7 +85,7 @@ void test_stash_drop__can_purge_the_stash_from_the_bottom(void) cl_git_pass(git_stash_drop(repo, 1)); cl_git_pass(git_stash_drop(repo, 0)); - cl_assert_equal_i(GIT_ENOTFOUND, git_stash_drop(repo, 0)); + cl_git_fail_with(git_stash_drop(repo, 0), GIT_ENOTFOUND); } void test_stash_drop__dropping_an_entry_rewrites_reflog_history(void) @@ -97,7 +98,7 @@ void test_stash_drop__dropping_an_entry_rewrites_reflog_history(void) push_three_states(); - cl_git_pass(git_reference_lookup(&stash, repo, "refs/stash")); + cl_git_pass(git_reference_lookup(&stash, repo, GIT_REFS_STASH_FILE)); cl_git_pass(git_reflog_read(&reflog, stash)); entry = git_reflog_entry_byindex(reflog, 1); @@ -126,12 +127,46 @@ void test_stash_drop__dropping_the_last_entry_removes_the_stash(void) push_three_states(); - cl_git_pass(git_reference_lookup(&stash, repo, "refs/stash")); + cl_git_pass(git_reference_lookup(&stash, repo, GIT_REFS_STASH_FILE)); git_reference_free(stash); cl_git_pass(git_stash_drop(repo, 0)); cl_git_pass(git_stash_drop(repo, 0)); cl_git_pass(git_stash_drop(repo, 0)); - cl_assert_equal_i(GIT_ENOTFOUND, git_reference_lookup(&stash, repo, "refs/stash")); + cl_git_fail_with( + git_reference_lookup(&stash, repo, GIT_REFS_STASH_FILE), GIT_ENOTFOUND); +} + +void retrieve_top_stash_id(git_oid *out) +{ + git_object *top_stash; + + cl_git_pass(git_revparse_single(&top_stash, repo, "stash@{0}")); + cl_git_pass(git_reference_name_to_id(out, repo, GIT_REFS_STASH_FILE)); + + cl_assert_equal_i(true, git_oid_cmp(out, git_object_id(top_stash)) == 0); + + git_object_free(top_stash); +} + +void test_stash_drop__dropping_the_top_stash_updates_the_stash_reference(void) +{ + git_object *next_top_stash; + git_oid oid; + + push_three_states(); + + retrieve_top_stash_id(&oid); + + cl_git_pass(git_revparse_single(&next_top_stash, repo, "stash@{1}")); + cl_assert_equal_i( + false, git_oid_cmp(&oid, git_object_id(next_top_stash)) == 0); + + cl_git_pass(git_stash_drop(repo, 0)); + + retrieve_top_stash_id(&oid); + + cl_assert_equal_i( + true, git_oid_cmp(&oid, git_object_id(next_top_stash)) == 0); } |