Merge branch 'nd/stop-setenv-work-tree'
[git] / t / t8002-blame.sh
1 #!/bin/sh
2
3 test_description='git blame'
4 . ./test-lib.sh
5
6 PROG='git blame -c'
7 . "$TEST_DIRECTORY"/annotate-tests.sh
8
9 PROG='git blame -c -e'
10 test_expect_success 'blame --show-email' '
11         check_count \
12                 "<A@test.git>" 1 \
13                 "<B@test.git>" 1 \
14                 "<B1@test.git>" 1 \
15                 "<B2@test.git>" 1 \
16                 "<author@example.com>" 1 \
17                 "<C@test.git>" 1 \
18                 "<D@test.git>" 1 \
19                 "<E at test dot git>" 1
20 '
21
22 test_expect_success 'setup showEmail tests' '
23         echo "bin: test number 1" >one &&
24         git add one &&
25         GIT_AUTHOR_NAME=name1 \
26         GIT_AUTHOR_EMAIL=email1@test.git \
27         git commit -m First --date="2010-01-01 01:00:00" &&
28         cat >expected_n <<-\EOF &&
29         (name1 2010-01-01 01:00:00 +0000 1) bin: test number 1
30         EOF
31         cat >expected_e <<-\EOF
32         (<email1@test.git> 2010-01-01 01:00:00 +0000 1) bin: test number 1
33         EOF
34 '
35
36 find_blame () {
37         sed -e 's/^[^(]*//'
38 }
39
40 test_expect_success 'blame with no options and no config' '
41         git blame one >blame &&
42         find_blame <blame >result &&
43         test_cmp expected_n result
44 '
45
46 test_expect_success 'blame with showemail options' '
47         git blame --show-email one >blame1 &&
48         find_blame <blame1 >result &&
49         test_cmp expected_e result &&
50         git blame -e one >blame2 &&
51         find_blame <blame2 >result &&
52         test_cmp expected_e result &&
53         git blame --no-show-email one >blame3 &&
54         find_blame <blame3 >result &&
55         test_cmp expected_n result
56 '
57
58 test_expect_success 'blame with showEmail config false' '
59         git config blame.showEmail false &&
60         git blame one >blame1 &&
61         find_blame <blame1 >result &&
62         test_cmp expected_n result &&
63         git blame --show-email one >blame2 &&
64         find_blame <blame2 >result &&
65         test_cmp expected_e result &&
66         git blame -e one >blame3 &&
67         find_blame <blame3 >result &&
68         test_cmp expected_e result &&
69         git blame --no-show-email one >blame4 &&
70         find_blame <blame4 >result &&
71         test_cmp expected_n result
72 '
73
74 test_expect_success 'blame with showEmail config true' '
75         git config blame.showEmail true &&
76         git blame one >blame1 &&
77         find_blame <blame1 >result &&
78         test_cmp expected_e result &&
79         git blame --no-show-email one >blame2 &&
80         find_blame <blame2 >result &&
81         test_cmp expected_n result
82 '
83
84 test_done