From: Christian Couder Date: Mon, 07 Jul 2014 06:35:32 GMT Subject: [PATCH v6 03/10] replace: add test for --graft Message-ID: <20140707063540.3708.9611.chriscool@tuxfamily.org> In-Reply-To: <20140707063342.3708.83493.chriscool@tuxfamily.org> Signed-off-by: Christian Couder Signed-off-by: Junio C Hamano --- t/t6050-replace.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/t/t6050-replace.sh b/t/t6050-replace.sh index fb07ad2..d80a89e 100755 --- a/t/t6050-replace.sh +++ b/t/t6050-replace.sh @@ -18,6 +18,33 @@ 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' actual && + shift && + : >expected && + for _parent + do + echo "parent $_parent" >>expected || return 1 + done && + test_cmp actual expected +} + +commit_has_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 +} + HASH1= HASH2= HASH3= @@ -351,4 +378,17 @@ 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_buffer_contains_parents $HASH5 && + commit_has_parents $HASH5 && + test_must_fail git replace --graft $HASH5 $HASH4 $HASH3 && + git replace --force -g $HASH5 $HASH4 $HASH3 && + commit_buffer_contains_parents $HASH5 $HASH4 $HASH3 && + commit_has_parents $HASH5 $HASH4 $HASH3 && + git replace -d $HASH5 +' + test_done -- 2.0.0.421.g786a89d.dirty