summaryrefslogtreecommitdiff
path: root/t/t6030-bisect-run.sh
blob: 39c72283b516001ec110614a4f40dcdd2b06e90e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/sh
#
# Copyright (c) 2007 Christian Couder
#
test_description='Tests git-bisect run functionality'

. ./test-lib.sh

add_line_into_file()
{
    _line=$1
    _file=$2

    if [ -f "$_file" ]; then
        echo "$_line" >> $_file || return $?
        MSG="Add <$_line> into <$_file>."
    else
        echo "$_line" > $_file || return $?
        git add $_file || return $?
        MSG="Create file <$_file> with <$_line> inside."
    fi

    git-commit -m "$MSG" $_file
}

HASH1=
HASH3=
HASH4=

test_expect_success \
    'set up basic repo with 1 file (hello) and 4 commits' \
    'add_line_into_file "1: Hello World" hello &&
     add_line_into_file "2: A new day for git" hello &&
     add_line_into_file "3: Another new day for git" hello &&
     add_line_into_file "4: Ciao for now" hello &&
     HASH1=$(git rev-list HEAD | tail -1) &&
     HASH3=$(git rev-list HEAD | head -2 | tail -1) &&
     HASH4=$(git rev-list HEAD | head -1)'

# We want to automatically find the commit that
# introduced "Another" into hello.
test_expect_success \
    'git bisect run simple case' \
    'echo "#!/bin/sh" > test_script.sh &&
     echo "grep Another hello > /dev/null" >> test_script.sh &&
     echo "test \$? -ne 0" >> test_script.sh &&
     chmod +x test_script.sh &&
     git bisect start &&
     git bisect good $HASH1 &&
     git bisect bad $HASH4 &&
     git bisect run ./test_script.sh > my_bisect_log.txt &&
     grep "$HASH3 is first bad commit" my_bisect_log.txt'

#
#
test_done