[PATCH 2/9 v4] bisect: add test cases for "git bisect replace"

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

 



Signed-off-by: Christian Couder <chriscool@xxxxxxxxxxxxx>
---
 t/t6035-bisect-replace.sh |  130 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 130 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..6ab3667
--- /dev/null
+++ b/t/t6035-bisect-replace.sh
@@ -0,0 +1,130 @@
+#!/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=
+HASH7=
+
+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)
+     echo "line 14" >> hello &&
+     echo "line 15" >> hello &&
+     echo "line 16" >> hello &&
+     add_and_commit_file hello "again 3 more lines" &&
+     HASH7=$(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
+'
+
+test_expect_success 'replace works when bisecting with a later bad commit' '
+     git rev-list --bisect-all $HASH7 > 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_expect_success 'replace works starting just after replaced commit' '
+     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_expect_success 'replace works starting from replaced commit' '
+     git rev-list --bisect-all $HASH5 > 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_expect_success 'standard bisect works' '
+     git bisect start $HASH6 $HASH1 &&
+     test "$(git rev-parse --verify HEAD)" = "$HASHFIX3" &&
+     git bisect good &&
+     test "$(git rev-parse --verify HEAD)" = "$HASH5" &&
+     git bisect bad &&
+     test "$(git rev-parse --verify HEAD)" = "$HASHFIX4" &&
+     git bisect bad > my_bisect_log.txt &&
+     grep "$HASHFIX4 is first bad commit" my_bisect_log.txt &&
+     git bisect reset
+'
+
+#
+#
+test_done
-- 
1.6.0.3.614.g0f3b9

--
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]

  Powered by Linux