diff options
author | Christian Couder <chriscool@tuxfamily.org> | 2014-07-19 17:01:09 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-07-21 12:04:40 -0700 |
commit | adf8e5423891fa9bd04fcb0489ffb5da7025ec07 (patch) | |
tree | 1a1575f033ca3ea24416d6f4a07364f25c29231c | |
parent | 4228e8bc989c6cac1c47faece720faa06531281f (diff) | |
download | git-adf8e5423891fa9bd04fcb0489ffb5da7025ec07.tar.gz git-adf8e5423891fa9bd04fcb0489ffb5da7025ec07.tar.xz |
replace: add test for --graft
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | t/t6050-replace.sh | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/t/t6050-replace.sh b/t/t6050-replace.sh index fb07ad242..f854dae79 100755 --- a/t/t6050-replace.sh +++ b/t/t6050-replace.sh @@ -8,7 +8,7 @@ exec </dev/null . ./test-lib.sh -add_and_commit_file() +add_and_commit_file () { _file="$1" _msg="$2" @@ -18,6 +18,38 @@ add_and_commit_file() git commit --quiet -m "$_file: $_msg" } +commit_buffer_contains_parents () +{ + git cat-file commit "$1" >payload && + sed -n -e '/^$/q' -e '/^parent /p' <payload >actual && + shift && + for _parent + do + echo "parent $_parent" + done >expected && + test_cmp expected actual +} + +commit_peeling_shows_parents () +{ + _parent_number=1 + _commit="$1" + shift && + for _parent + do + _found=$(git rev-parse --verify $_commit^$_parent_number) || return 1 + test "$_found" = "$_parent" || return 1 + _parent_number=$(( $_parent_number + 1 )) + done && + test_must_fail git rev-parse --verify $_commit^$_parent_number +} + +commit_has_parents () +{ + commit_buffer_contains_parents "$@" && + commit_peeling_shows_parents "$@" +} + HASH1= HASH2= HASH3= @@ -351,4 +383,15 @@ test_expect_success 'replace ref cleanup' ' test -z "$(git replace)" ' +test_expect_success '--graft with and without already replaced object' ' + test $(git log --oneline | wc -l) = 7 && + git replace --graft $HASH5 && + test $(git log --oneline | wc -l) = 3 && + commit_has_parents $HASH5 && + test_must_fail git replace --graft $HASH5 $HASH4 $HASH3 && + git replace --force -g $HASH5 $HASH4 $HASH3 && + commit_has_parents $HASH5 $HASH4 $HASH3 && + git replace -d $HASH5 +' + test_done |