455dc60812ea43fad633c9006e5f67708dd099ee
   1#!/bin/sh
   2#
   3# Copyright (c) 2007 Christian Couder
   4#
   5test_description='Tests git-bisect run functionality'
   6
   7. ./test-lib.sh
   8
   9add_line_into_file()
  10{
  11    _line=$1
  12    _file=$2
  13
  14    if [ -f "$_file" ]; then
  15        echo "$_line" >> $_file || return $?
  16        MSG="Add <$_line> into <$_file>."
  17    else
  18        echo "$_line" > $_file || return $?
  19        git add $_file || return $?
  20        MSG="Create file <$_file> with <$_line> inside."
  21    fi
  22
  23    git-commit -m "$MSG" $_file
  24}
  25
  26HASH1=
  27HASH3=
  28HASH4=
  29
  30test_expect_success \
  31    'set up basic repo with 1 file (hello) and 4 commits' \
  32    'add_line_into_file "1: Hello World" hello &&
  33     add_line_into_file "2: A new day for git" hello &&
  34     add_line_into_file "3: Another new day for git" hello &&
  35     add_line_into_file "4: Ciao for now" hello &&
  36     HASH1=$(git rev-list HEAD | tail -1) &&
  37     HASH3=$(git rev-list HEAD | head -2 | tail -1) &&
  38     HASH4=$(git rev-list HEAD | head -1)'
  39
  40# We want to automatically find the commit that
  41# introduced "Another" into hello.
  42test_expect_success \
  43    '"git bisect run" simple case' \
  44    'echo "#"\!"/bin/sh" > test_script.sh &&
  45     echo "grep Another hello > /dev/null" >> test_script.sh &&
  46     echo "test \$? -ne 0" >> test_script.sh &&
  47     chmod +x test_script.sh &&
  48     git bisect start &&
  49     git bisect good $HASH1 &&
  50     git bisect bad $HASH4 &&
  51     git bisect run ./test_script.sh > my_bisect_log.txt &&
  52     grep "$HASH3 is first bad commit" my_bisect_log.txt &&
  53     git bisect reset'
  54
  55# We want to automatically find the commit that
  56# introduced "Ciao" into hello.
  57test_expect_success \
  58    '"git bisect run" with more complex "git bisect start"' \
  59    'echo "#"\!"/bin/sh" > test_script.sh &&
  60     echo "grep Ciao hello > /dev/null" >> test_script.sh &&
  61     echo "test \$? -ne 0" >> test_script.sh &&
  62     chmod +x test_script.sh &&
  63     git bisect start $HASH4 $HASH1 &&
  64     git bisect run ./test_script.sh > my_bisect_log.txt &&
  65     grep "$HASH4 is first bad commit" my_bisect_log.txt &&
  66     git bisect reset'
  67
  68#
  69#
  70test_done
  71