--- t/t6035-bisect-replace.sh | 89 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 89 insertions(+), 0 deletions(-) create mode 100755 t/t6035-bisect-replace.sh diff --git a/t/t6035-bisect-replace.sh b/t/t6035-bisect-replace.sh new file mode 100755 index 0000000..ed2061e --- /dev/null +++ b/t/t6035-bisect-replace.sh @@ -0,0 +1,89 @@ +#!/bin/sh +# +# Copyright (c) 2008 Christian Couder +# +test_description='Test git bisect replace functionality' + +exec </dev/null + +. ./test-lib.sh + +add_and_commit_file() +{ + _file="$1" + _msg="$2" + + git add $_file || return $? + test_tick || return $? + git commit --quiet -m "$_file: $_msg" +} + +HASH1= +HASH2= +HASH3= +HASH4= +HASH5= +HASH6= + +test_expect_success 'set up buggy branch' ' + echo "line 1" >> hello && + echo "line 2" >> hello && + echo "line 3" >> hello && + echo "line 4" >> hello && + add_and_commit_file hello "4 lines" && + HASH1=$(git rev-parse --verify HEAD) && + echo "line BUG" >> hello && + echo "line 6" >> hello && + echo "line 7" >> hello && + echo "line 8" >> hello && + add_and_commit_file hello "4 more lines with a BUG" && + HASH2=$(git rev-parse --verify HEAD) && + echo "line 9" >> hello && + echo "line 10" >> hello && + add_and_commit_file hello "2 more lines" && + HASH3=$(git rev-parse --verify HEAD) && + echo "line 11" >> hello && + add_and_commit_file hello "1 more line" && + HASH4=$(git rev-parse --verify HEAD) && + sed -e "s/BUG/5/" hello > hello.new && + mv hello.new hello && + add_and_commit_file hello "BUG fixed" && + HASH5=$(git rev-parse --verify HEAD) && + echo "line 12" >> hello && + echo "line 13" >> hello && + add_and_commit_file hello "2 more lines" && + HASH6=$(git rev-parse --verify HEAD) +' + +HASHFIX2= +HASHFIX3= +HASHFIX4= + +test_expect_success 'set up fixed branch' ' + git checkout $HASH1 && + echo "line 5" >> hello && + echo "line 6" >> hello && + echo "line 7" >> hello && + echo "line 8" >> hello && + add_and_commit_file hello "4 more lines with no BUG" && + HASHFIX2=$(git rev-parse --verify HEAD) && + git cherry-pick $HASH3 && + HASHFIX3=$(git rev-parse --verify HEAD) && + git cherry-pick $HASH4 && + HASHFIX4=$(git rev-parse --verify HEAD) +' + +test_expect_success '"git bisect replace" buggy branch with fixed one' ' + git bisect replace $HASH5 HEAD && + git rev-list --bisect-all $HASH6 > rev_list.txt && + grep $HASHFIX2 rev_list.txt && + grep $HASHFIX3 rev_list.txt && + grep $HASHFIX4 rev_list.txt && + test_must_fail grep $HASH2 rev_list.txt && + test_must_fail grep $HASH3 rev_list.txt && + test_must_fail grep $HASH4 rev_list.txt +' + +# +# +test_done -- 1.6.0.3.531.gd12eb.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