[PATCH v2 4/4] reset: add test cases for "--merge-safe" option
- From
Christian Couder <chriscool@tuxfamily.org>
- Date
- Sep 16, 2009, 04:14 UTC
- Message-ID
- <20090916041443.3737.58488.chriscool@tuxfamily.org>
- In-Reply-To
- <20090916035131.3737.33020.chriscool@tuxfamily.org>
This shows that with the "--merge-safe" option, changes that are both in the work tree and the index are kept in the work tree after the reset (but discarded in the index). As with the "--merge" option, changes that are in both the work tree and the index are discarded after the reset.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org> --- t/t7110-reset-merge.sh | 50 +++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/t/t7110-reset-merge.sh b/t/t7110-reset-merge.sh index 1ec32f9..5b6db41 100755 --- a/t/t7110-reset-merge.sh +++ b/t/t7110-reset-merge.sh @@ -3,7 +3,7 @@ # Copyright (c) 2009 Christian Couder # -test_description='Tests for "git reset --merge"' +test_description='Tests for "git reset" with --merge and --merge-safe' . ./test-lib.sh @@ -30,6 +30,20 @@ test_expect_success 'reset --merge is ok with changes in file it does not touch' grep 4 file2 ' +test_expect_success 'reset --merge-safe is ok with changes in file it does not touch' ' + git reset --hard HEAD^ && + echo "line 4" >> file1 && + echo "line 4" >> file2 && + test_tick && + git commit -m "add line 4" file1 && + git reset --merge-safe HEAD^ && + ! grep 4 file1 && + grep 4 file2 && + git reset --merge-safe HEAD@{1} && + grep 4 file1 && + grep 4 file2 +' + test_expect_success 'reset --merge discards changes added to index (1)' ' echo "line 5" >> file1 && git add file1 && @@ -55,13 +69,43 @@ test_expect_success 'reset --merge discards changes added to index (2)' ' grep 4 file1 ' +test_expect_success 'reset --merge-safe fails with changes in index in files it touches' ' + echo "line 4" >> file2 && + echo "line 5" >> file1 && + git add file1 && + test_must_fail git reset --merge-safe HEAD^ && + git reset --hard HEAD +' + +test_expect_success 'reset --merge-safe keeps changes it does not touch' ' + echo "line 4" >> file2 && + git add file2 && + git reset --merge-safe HEAD^ && + grep 4 file2 && + git reset --merge-safe HEAD@{1} && + grep 4 file2 && + grep 4 file1 && + git reset --hard HEAD +' + test_expect_success 'reset --merge fails with changes in file it touches' ' - echo "line 6" >> file1 && + echo "line 5" >> file1 && test_tick && - git commit -m "add line 6" file1 && + git commit -m "add line 5" file1 && sed -e "s/line 1/changed line 1/" <file1 >file3 && mv file3 file1 && test_must_fail git reset --merge HEAD^ 2>err.log && + grep file1 err.log | grep "not uptodate" && + git reset --hard HEAD^ +' + +test_expect_success 'reset --merge-safe fails with changes in file it touches' ' + echo "line 5" >> file1 && + test_tick && + git commit -m "add line 5" file1 && + sed -e "s/line 1/changed line 1/" <file1 >file3 && + mv file3 file1 && + test_must_fail git reset --merge-safe HEAD^ 2>err.log && grep file1 err.log | grep "not uptodate" '
-- 1.6.5.rc0.150.g38fe6