]>
Commit | Line | Data |
---|---|---|
8752d11d FK |
1 | # This file isn't used as a test script directly, instead it is |
2 | # sourced from t8001-annotate.sh and t8001-blame.sh. | |
3 | ||
92a903ac JH |
4 | check_count () { |
5 | head= | |
6 | case "$1" in -h) head="$2"; shift; shift ;; esac | |
cee7f245 | 7 | echo "$PROG file $head" >&4 |
1fd4da64 RJ |
8 | $PROG file $head >.result || return 1 |
9 | cat .result | perl -e ' | |
92a903ac JH |
10 | my %expect = (@ARGV); |
11 | my %count = (); | |
12 | while (<STDIN>) { | |
13 | if (/^[0-9a-f]+\t\(([^\t]+)\t/) { | |
14 | my $author = $1; | |
15 | for ($author) { s/^\s*//; s/\s*$//; } | |
16 | if (exists $expect{$author}) { | |
17 | $count{$author}++; | |
18 | } | |
19 | } | |
20 | } | |
21 | my $bad = 0; | |
22 | while (my ($author, $count) = each %count) { | |
23 | my $ok; | |
24 | if ($expect{$author} != $count) { | |
25 | $bad = 1; | |
26 | $ok = "bad"; | |
27 | } | |
28 | else { | |
29 | $ok = "good"; | |
30 | } | |
31 | print STDERR "Author $author (expected $expect{$author}, attributed $count) $ok\n"; | |
32 | } | |
33 | exit($bad); | |
34 | ' "$@" | |
35 | } | |
36 | ||
8752d11d FK |
37 | test_expect_success \ |
38 | 'prepare reference tree' \ | |
39 | 'echo "1A quick brown fox jumps over the" >file && | |
40 | echo "lazy dog" >>file && | |
41 | git add file | |
42 | GIT_AUTHOR_NAME="A" git commit -a -m "Initial."' | |
43 | ||
44 | test_expect_success \ | |
45 | 'check all lines blamed on A' \ | |
92a903ac | 46 | 'check_count A 2' |
8752d11d FK |
47 | |
48 | test_expect_success \ | |
49 | 'Setup new lines blamed on B' \ | |
50 | 'echo "2A quick brown fox jumps over the" >>file && | |
51 | echo "lazy dog" >> file && | |
52 | GIT_AUTHOR_NAME="B" git commit -a -m "Second."' | |
53 | ||
54 | test_expect_success \ | |
92a903ac JH |
55 | 'Two lines blamed on A, two on B' \ |
56 | 'check_count A 2 B 2' | |
8752d11d FK |
57 | |
58 | test_expect_success \ | |
59 | 'merge-setup part 1' \ | |
60 | 'git checkout -b branch1 master && | |
61 | echo "3A slow green fox jumps into the" >> file && | |
62 | echo "well." >> file && | |
63 | GIT_AUTHOR_NAME="B1" git commit -a -m "Branch1-1"' | |
64 | ||
65 | test_expect_success \ | |
92a903ac JH |
66 | 'Two lines blamed on A, two on B, two on B1' \ |
67 | 'check_count A 2 B 2 B1 2' | |
8752d11d FK |
68 | |
69 | test_expect_success \ | |
70 | 'merge-setup part 2' \ | |
71 | 'git checkout -b branch2 master && | |
72 | sed -e "s/2A quick brown/4A quick brown lazy dog/" < file > file.new && | |
73 | mv file.new file && | |
74 | GIT_AUTHOR_NAME="B2" git commit -a -m "Branch2-1"' | |
75 | ||
76 | test_expect_success \ | |
92a903ac JH |
77 | 'Two lines blamed on A, one on B, one on B2' \ |
78 | 'check_count A 2 B 1 B2 1' | |
8752d11d FK |
79 | |
80 | test_expect_success \ | |
81 | 'merge-setup part 3' \ | |
82 | 'git pull . branch1' | |
83 | ||
84 | test_expect_success \ | |
92a903ac JH |
85 | 'Two lines blamed on A, one on B, two on B1, one on B2' \ |
86 | 'check_count A 2 B 1 B1 2 B2 1' | |
8752d11d FK |
87 | |
88 | test_expect_success \ | |
92a903ac JH |
89 | 'Annotating an old revision works' \ |
90 | 'check_count -h master A 2 B 2' | |
8752d11d FK |
91 | |
92 | test_expect_success \ | |
92a903ac JH |
93 | 'Annotating an old revision works' \ |
94 | 'check_count -h master^ A 2' | |
8752d11d | 95 | |
ce5b6e71 JH |
96 | test_expect_success \ |
97 | 'merge-setup part 4' \ | |
98 | 'echo "evil merge." >>file && | |
8ff99e74 | 99 | git commit -a --amend' |
ce5b6e71 JH |
100 | |
101 | test_expect_success \ | |
102 | 'Two lines blamed on A, one on B, two on B1, one on B2, one on A U Thor' \ | |
103 | 'check_count A 2 B 1 B1 2 B2 1 "A U Thor" 1' | |
104 | ||
1242642c JH |
105 | test_expect_success \ |
106 | 'an incomplete line added' \ | |
107 | 'echo "incomplete" | tr -d "\\012" >>file && | |
108 | GIT_AUTHOR_NAME="C" git commit -a -m "Incomplete"' | |
109 | ||
110 | test_expect_success \ | |
111 | 'With incomplete lines.' \ | |
112 | 'check_count A 2 B 1 B1 2 B2 1 "A U Thor" 1 C 1' | |
113 | ||
114 | test_expect_success \ | |
115 | 'some edit' \ | |
563b43ee | 116 | 'mv file file.orig && |
d8b69ecb BC |
117 | { |
118 | cat file.orig && | |
119 | echo | |
120 | } | sed -e "s/^3A/99/" -e "/^1A/d" -e "/^incomplete/d" > file && | |
58db64f7 | 121 | echo "incomplete" | tr -d "\\012" >>file && |
1242642c JH |
122 | GIT_AUTHOR_NAME="D" git commit -a -m "edit"' |
123 | ||
124 | test_expect_success \ | |
125 | 'some edit' \ | |
126 | 'check_count A 1 B 1 B1 1 B2 1 "A U Thor" 1 C 1 D 1' |