[PATCHv3 4/4] Add tests for git-status --sequencer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Add t7061-status-sequence.sh with tests for the various
'git status --sequence' states.

I did not include tests for these states because I am not
sure how to induce these conditions organically yet:

   conflicted am status
   empty am status
   rebase-interactive editing status
   rebase-interactive splitting status

Signed-off-by: Phil Hord <hordp@xxxxxxxxx>
---
 t/t7061-status-sequence.sh | 96 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 96 insertions(+)
 create mode 100755 t/t7061-status-sequence.sh

diff --git a/t/t7061-status-sequence.sh b/t/t7061-status-sequence.sh
new file mode 100755
index 0000000..db99822
--- /dev/null
+++ b/t/t7061-status-sequence.sh
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+test_description='sequencer state tokens'
+
+. ./test-lib.sh
+
+expect_tokens() {
+	for TOKEN in "$@" ; do
+		echo "## $TOKEN"
+	done | sort
+}
+
+status_has_only() {
+	expect_tokens "$@" >expect &&
+	git status -S | sort >actual &&
+	test_cmp expect actual
+}
+	
+test_expect_success setup '
+	test_commit A &&
+	test_commit B oneside added &&
+	git checkout A^0 &&
+	test_commit C oneside created
+'
+
+test_expect_success 'status -S reports conflicted merge' '
+	git checkout B^0 &&
+	test_must_fail git merge C &&
+	status_has_only commit-pending conflicted merge
+'
+
+test_expect_success 'git reset --hard cleans up merge status' '
+	git reset --hard HEAD &&
+	status_has_only
+'
+
+test_expect_success 'status -S reports conflicted rebase' '
+	git reset --hard HEAD &&
+	git checkout B^0 &&
+	test_must_fail git rebase C &&
+	status_has_only conflicted rebase
+'
+
+test_expect_success 'git rebase --abort cleans up rebase status' '
+	git rebase --abort &&
+	status_has_only
+'
+
+test_expect_success 'status -S reports incomplete cherry-pick' '
+	git reset --hard HEAD &&
+	git checkout A &&
+	git cherry-pick --no-commit C &&
+	status_has_only commit-pending
+'
+
+test_expect_success 'completing commit cleans up pending commit status' '
+	git commit -mcompleted &&
+	status_has_only
+'
+
+test_expect_success 'status -S reports failed cherry-pick' '
+	git reset --hard HEAD &&
+	git checkout B &&
+	test_must_fail git cherry-pick C &&
+	status_has_only cherry-pick commit-pending conflicted
+'
+
+test_expect_success 'resolved conflicts clear conflicted status' '
+	git add oneside &&
+	status_has_only cherry-pick commit-pending
+'
+
+test_expect_success 'aborted cherry-pick clears cherry-pick status' '
+	git cherry-pick --abort &&
+	status_has_only
+'
+
+test_expect_success 'conflicted rebase-interactive status' '
+	git reset --hard HEAD &&
+	git checkout B &&
+	test_must_fail git rebase -i C &&
+	status_has_only rebase-interactive conflicted commit-pending
+'
+
+test_expect_success 'bisect status' '
+	git reset --hard HEAD &&
+	git bisect start &&
+	status_has_only bisect
+'
+
+test_expect_success 'bisect-reset clears bisect status' '
+	git bisect reset &&
+	status_has_only
+'
+
+test_done
-- 
1.8.0.3.gde9c7d5.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]