Code

send-email: Honour SMTP domain when using TLS
[git.git] / t / t8003-blame.sh
1 #!/bin/sh
3 test_description='git blame corner cases'
4 . ./test-lib.sh
6 pick_fc='s/^[0-9a-f^]* *\([^ ]*\) *(\([^ ]*\) .*/\1-\2/'
8 test_expect_success setup '
10         echo A A A A A >one &&
11         echo B B B B B >two &&
12         echo C C C C C >tres &&
13         echo ABC >mouse &&
14         git add one two tres mouse &&
15         test_tick &&
16         GIT_AUTHOR_NAME=Initial git commit -m Initial &&
18         cat one >uno &&
19         mv two dos &&
20         cat one >>tres &&
21         echo DEF >>mouse
22         git add uno dos tres mouse &&
23         test_tick &&
24         GIT_AUTHOR_NAME=Second git commit -a -m Second &&
26         echo GHIJK >>mouse &&
27         git add mouse &&
28         test_tick &&
29         GIT_AUTHOR_NAME=Third git commit -m Third &&
31         cat mouse >cow &&
32         git add cow &&
33         test_tick &&
34         GIT_AUTHOR_NAME=Fourth git commit -m Fourth &&
36         {
37                 echo ABC
38                 echo DEF
39                 echo XXXX
40                 echo GHIJK
41         } >cow &&
42         git add cow &&
43         test_tick &&
44         GIT_AUTHOR_NAME=Fifth git commit -m Fifth
45 '
47 test_expect_success 'straight copy without -C' '
49         git blame uno | grep Second
51 '
53 test_expect_success 'straight move without -C' '
55         git blame dos | grep Initial
57 '
59 test_expect_success 'straight copy with -C' '
61         git blame -C1 uno | grep Second
63 '
65 test_expect_success 'straight move with -C' '
67         git blame -C1 dos | grep Initial
69 '
71 test_expect_success 'straight copy with -C -C' '
73         git blame -C -C1 uno | grep Initial
75 '
77 test_expect_success 'straight move with -C -C' '
79         git blame -C -C1 dos | grep Initial
81 '
83 test_expect_success 'append without -C' '
85         git blame -L2 tres | grep Second
87 '
89 test_expect_success 'append with -C' '
91         git blame -L2 -C1 tres | grep Second
93 '
95 test_expect_success 'append with -C -C' '
97         git blame -L2 -C -C1 tres | grep Second
99 '
101 test_expect_success 'append with -C -C -C' '
103         git blame -L2 -C -C -C1 tres | grep Initial
107 test_expect_success 'blame wholesale copy' '
109         git blame -f -C -C1 HEAD^ -- cow | sed -e "$pick_fc" >current &&
110         {
111                 echo mouse-Initial
112                 echo mouse-Second
113                 echo mouse-Third
114         } >expected &&
115         test_cmp expected current
119 test_expect_success 'blame wholesale copy and more' '
121         git blame -f -C -C1 HEAD -- cow | sed -e "$pick_fc" >current &&
122         {
123                 echo mouse-Initial
124                 echo mouse-Second
125                 echo cow-Fifth
126                 echo mouse-Third
127         } >expected &&
128         test_cmp expected current
132 test_expect_success 'blame path that used to be a directory' '
133         mkdir path &&
134         echo A A A A A >path/file &&
135         echo B B B B B >path/elif &&
136         git add path &&
137         test_tick &&
138         git commit -m "path was a directory" &&
139         rm -fr path &&
140         echo A A A A A >path &&
141         git add path &&
142         test_tick &&
143         git commit -m "path is a regular file" &&
144         git blame HEAD^.. -- path
147 test_expect_success 'blame to a commit with no author name' '
148   TREE=`git rev-parse HEAD:`
149   cat >badcommit <<EOF
150 tree $TREE
151 author <noname> 1234567890 +0000
152 committer David Reiss <dreiss@facebook.com> 1234567890 +0000
154 some message
155 EOF
156   COMMIT=`git hash-object -t commit -w badcommit`
157   git --no-pager blame $COMMIT -- uno >/dev/null
160 test_expect_success 'blame -L with invalid start' '
161         test_must_fail git blame -L5 tres 2>errors &&
162         grep "has only 2 lines" errors
165 test_expect_success 'blame -L with invalid end' '
166         test_must_fail git blame -L1,5 tres 2>errors &&
167         grep "has only 2 lines" errors
170 test_done