summaryrefslogtreecommitdiff
path: root/tests/reset
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2015-03-07 00:30:40 +0100
committerCarlos Martín Nieto <cmn@dwim.me>2015-03-16 16:57:30 +0100
commita5815a2afb7f6a0e86d52467b99d06d9bf01a9fb (patch)
tree0f341027c5d9772b58095c1315a978a491dd888f /tests/reset
parent62dd4d71db1408ae03ca7d4d4d2c48f7874a41d9 (diff)
downloadlibgit2-a5815a2afb7f6a0e86d52467b99d06d9bf01a9fb.tar.gz
Add tests for the annotated versions of ref-modifying functions
This also brings the soft-reset tests back to life. The function name was missing an underscore, meaning they had not been running.
Diffstat (limited to 'tests/reset')
-rw-r--r--tests/reset/hard.c13
-rw-r--r--tests/reset/mixed.c12
-rw-r--r--tests/reset/soft.c33
3 files changed, 42 insertions, 16 deletions
diff --git a/tests/reset/hard.c b/tests/reset/hard.c
index f6ca1037b..86d4be2ed 100644
--- a/tests/reset/hard.c
+++ b/tests/reset/hard.c
@@ -201,6 +201,7 @@ void test_reset_hard__cleans_up_merge(void)
void test_reset_hard__reflog_is_correct(void)
{
git_buf buf = GIT_BUF_INIT;
+ git_annotated_commit *annotated;
const char *exp_msg = "commit: Add a file which name should appear before the "
"\"subdir/\" folder while being dealt with by the treewalker";
@@ -215,7 +216,7 @@ void test_reset_hard__reflog_is_correct(void)
git_object_free(target);
- /* Moved branch, expect default message */
+ /* Moved branch, expect id in message */
cl_git_pass(git_revparse_single(&target, repo, "HEAD~^{commit}"));
cl_git_pass(git_buf_printf(&buf, "reset: moving to %s", git_oid_tostr_s(git_object_id(target))));
cl_git_pass(git_reset(repo, target, GIT_RESET_HARD, NULL));
@@ -223,4 +224,14 @@ void test_reset_hard__reflog_is_correct(void)
reflog_check(repo, "refs/heads/master", 4, NULL, git_buf_cstr(&buf));
git_buf_free(&buf);
+
+ /* Moved branch, expect revspec in message */
+ exp_msg = "reset: moving to HEAD~^{commit}";
+ cl_git_pass(git_annotated_commit_from_revspec(&annotated, repo, "HEAD~^{commit}"));
+ cl_git_pass(git_reset_from_annotated(repo, annotated, GIT_RESET_HARD, NULL));
+ reflog_check(repo, "HEAD", 5, NULL, exp_msg);
+ reflog_check(repo, "refs/heads/master", 5, NULL, exp_msg);
+
+ git_annotated_commit_free(annotated);
+
}
diff --git a/tests/reset/mixed.c b/tests/reset/mixed.c
index b374902aa..97eac74e8 100644
--- a/tests/reset/mixed.c
+++ b/tests/reset/mixed.c
@@ -51,6 +51,7 @@ void test_reset_mixed__resetting_refreshes_the_index_to_the_commit_tree(void)
void test_reset_mixed__reflog_is_correct(void)
{
git_buf buf = GIT_BUF_INIT;
+ git_annotated_commit *annotated;
const char *exp_msg = "commit: Updating test data so we can test inter-hunk-context";
reflog_check(repo, "HEAD", 9, "yoram.harmelin@gmail.com", exp_msg);
@@ -65,13 +66,20 @@ void test_reset_mixed__reflog_is_correct(void)
git_object_free(target);
target = NULL;
- /* Moved branch, expect default message */
+ /* Moved branch, expect id in message */
cl_git_pass(git_revparse_single(&target, repo, "HEAD~^{commit}"));
git_buf_clear(&buf);
cl_git_pass(git_buf_printf(&buf, "reset: moving to %s", git_oid_tostr_s(git_object_id(target))));
cl_git_pass(git_reset(repo, target, GIT_RESET_MIXED, NULL));
reflog_check(repo, "HEAD", 10, NULL, git_buf_cstr(&buf));
reflog_check(repo, "refs/heads/master", 10, NULL, git_buf_cstr(&buf));
-
git_buf_free(&buf);
+
+ /* Moved branch, expect revspec in message */
+ exp_msg = "reset: moving to HEAD~^{commit}";
+ cl_git_pass(git_annotated_commit_from_revspec(&annotated, repo, "HEAD~^{commit}"));
+ cl_git_pass(git_reset_from_annotated(repo, annotated, GIT_RESET_MIXED, NULL));
+ reflog_check(repo, "HEAD", 11, NULL, exp_msg);
+ reflog_check(repo, "refs/heads/master", 11, NULL, exp_msg);
+ git_annotated_commit_free(annotated);
}
diff --git a/tests/reset/soft.c b/tests/reset/soft.c
index a5bb13cc8..506decaed 100644
--- a/tests/reset/soft.c
+++ b/tests/reset/soft.c
@@ -155,28 +155,35 @@ void test_reset_soft__fails_when_index_contains_conflicts_independently_of_MERGE
cl_assert_equal_i(GIT_EUNMERGED, git_reset(repo, target, GIT_RESET_SOFT, NULL));
}
-void test_reset_soft_reflog_is_correct(void)
+void test_reset_soft__reflog_is_correct(void)
{
- const char *exp_msg = "commit: Updating test data so we can test inter-hunk-context";
+ git_annotated_commit *annotated;
+ const char *exp_msg = "checkout: moving from br2 to master";
+ const char *master_msg = "commit: checking in";
- reflog_check(repo, "HEAD", 9, "yoram.harmelin@gmail.com", exp_msg);
- reflog_check(repo, "refs/heads/master", 9, "yoram.harmelin@gmail.com", exp_msg);
+ reflog_check(repo, "HEAD", 7, "yoram.harmelin@gmail.com", exp_msg);
+ reflog_check(repo, "refs/heads/master", 2, "yoram.harmelin@gmail.com", master_msg);
/* Branch not moving, no reflog entry */
cl_git_pass(git_revparse_single(&target, repo, "HEAD^{commit}"));
cl_git_pass(git_reset(repo, target, GIT_RESET_SOFT, NULL));
- reflog_check(repo, "HEAD", 9, "yoram.harmelin@gmail.com", exp_msg);
- reflog_check(repo, "refs/heads/master", 9, "yoram.harmelin@gmail.com", exp_msg);
+ reflog_check(repo, "HEAD", 7, "yoram.harmelin@gmail.com", exp_msg);
+ reflog_check(repo, "refs/heads/master", 2, "yoram.harmelin@gmail.com", master_msg);
+ git_object_free(target);
- /* Moved branch, expect default message */
+ /* Moved branch, expect id in message */
+ exp_msg = "reset: moving to be3563ae3f795b2b4353bcce3a527ad0a4f7f644";
cl_git_pass(git_revparse_single(&target, repo, "HEAD~^{commit}"));
cl_git_pass(git_reset(repo, target, GIT_RESET_SOFT, NULL));
- reflog_check(repo, "HEAD", 9, "yoram.harmelin@gmail.com", exp_msg);
- reflog_check(repo, "refs/heads/master", 10, NULL, "reset: moving");
+ reflog_check(repo, "HEAD", 8, "yoram.harmelin@gmail.com", exp_msg);
+ reflog_check(repo, "refs/heads/master", 3, NULL, exp_msg);
- /* Moved branch, expect custom message */
- cl_git_pass(git_revparse_single(&target, repo, "HEAD~^{commit}"));
- cl_git_pass(git_reset(repo, target, GIT_RESET_SOFT, NULL));
+ /* Moved branch, expect message with annotated string */
+ exp_msg = "reset: moving to HEAD~^{commit}";
+ cl_git_pass(git_annotated_commit_from_revspec(&annotated, repo, "HEAD~^{commit}"));
+ cl_git_pass(git_reset_from_annotated(repo, annotated, GIT_RESET_SOFT, NULL));
reflog_check(repo, "HEAD", 9, "yoram.harmelin@gmail.com", exp_msg);
- reflog_check(repo, "refs/heads/master", 11, NULL, "message1");
+ reflog_check(repo, "refs/heads/master", 4, NULL, exp_msg);
+
+ git_annotated_commit_free(annotated);
}