@matheusbsbs / matheus-bagliano / commits / 86140d56c1
Fork 0

add tests for git diff --submodule

Copied from the submodule summary test and changed to reflect the differences in the output of git diff --submodule. Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jens Lehmann committed Oct 23, 2009 at 13:25 UTC 86140d56c150aa17e6c98dde4ba669516f3c302a
1 file changed +260
t/t4041-diff-submodule.sh new
+260
@@ -0,0 +1,260 @@
1 +#!/bin/sh
2 +#
3 +# Copyright (c) 2009 Jens Lehmann, based on t7401 by Ping Yin
4 +#
5 +
6 +test_description='Support for verbose submodule differences in git diff
7 +
8 +This test tries to verify the sanity of the --submodule option of git diff.
9 +'
10 +
11 +. ./test-lib.sh
12 +
13 +add_file () {
14 + sm=$1
15 + shift
16 + owd=$(pwd)
17 + cd "$sm"
18 + for name; do
19 + echo "$name" > "$name" &&
20 + git add "$name" &&
21 + test_tick &&
22 + git commit -m "Add $name"
23 + done >/dev/null
24 + git rev-parse --verify HEAD | cut -c1-7
25 + cd "$owd"
26 +}
27 +commit_file () {
28 + test_tick &&
29 + git commit "$@" -m "Commit $*" >/dev/null
30 +}
31 +
32 +test_create_repo sm1 &&
33 +add_file . foo >/dev/null
34 +
35 +head1=$(add_file sm1 foo1 foo2)
36 +
37 +test_expect_success 'added submodule' "
38 + git add sm1 &&
39 + git diff-index -p --submodule=log HEAD >actual &&
40 + diff actual - <<-EOF
41 +Submodule sm1 0000000...$head1 (new submodule)
42 +EOF
43 +"
44 +
45 +commit_file sm1 &&
46 +head2=$(add_file sm1 foo3)
47 +
48 +test_expect_success 'modified submodule(forward)' "
49 + git diff-index -p --submodule=log HEAD >actual &&
50 + diff actual - <<-EOF
51 +Submodule sm1 $head1..$head2:
52 + > Add foo3
53 +EOF
54 +"
55 +
56 +test_expect_success 'modified submodule(forward)' "
57 + git diff --submodule=log >actual &&
58 + diff actual - <<-EOF
59 +Submodule sm1 $head1..$head2:
60 + > Add foo3
61 +EOF
62 +"
63 +
64 +test_expect_success 'modified submodule(forward) --submodule' "
65 + git diff --submodule >actual &&
66 + diff actual - <<-EOF
67 +Submodule sm1 $head1..$head2:
68 + > Add foo3
69 +EOF
70 +"
71 +
72 +fullhead1=$(cd sm1; git rev-list --max-count=1 $head1)
73 +fullhead2=$(cd sm1; git rev-list --max-count=1 $head2)
74 +test_expect_success 'modified submodule(forward) --submodule=short' "
75 + git diff --submodule=short >actual &&
76 + diff actual - <<-EOF
77 +diff --git a/sm1 b/sm1
78 +index $head1..$head2 160000
79 +--- a/sm1
80 ++++ b/sm1
81 +@@ -1 +1 @@
82 +-Subproject commit $fullhead1
83 ++Subproject commit $fullhead2
84 +EOF
85 +"
86 +
87 +commit_file sm1 &&
88 +cd sm1 &&
89 +git reset --hard HEAD~2 >/dev/null &&
90 +head3=$(git rev-parse --verify HEAD | cut -c1-7) &&
91 +cd ..
92 +
93 +test_expect_success 'modified submodule(backward)' "
94 + git diff-index -p --submodule=log HEAD >actual &&
95 + diff actual - <<-EOF
96 +Submodule sm1 $head2..$head3 (rewind):
97 + < Add foo3
98 + < Add foo2
99 +EOF
100 +"
101 +
102 +head4=$(add_file sm1 foo4 foo5) &&
103 +head4_full=$(GIT_DIR=sm1/.git git rev-parse --verify HEAD)
104 +test_expect_success 'modified submodule(backward and forward)' "
105 + git diff-index -p --submodule=log HEAD >actual &&
106 + diff actual - <<-EOF
107 +Submodule sm1 $head2...$head4:
108 + > Add foo5
109 + > Add foo4
110 + < Add foo3
111 + < Add foo2
112 +EOF
113 +"
114 +
115 +commit_file sm1 &&
116 +mv sm1 sm1-bak &&
117 +echo sm1 >sm1 &&
118 +head5=$(git hash-object sm1 | cut -c1-7) &&
119 +git add sm1 &&
120 +rm -f sm1 &&
121 +mv sm1-bak sm1
122 +
123 +test_expect_success 'typechanged submodule(submodule->blob), --cached' "
124 + git diff --submodule=log --cached >actual &&
125 + diff actual - <<-EOF
126 +Submodule sm1 41fbea9...0000000 (submodule deleted)
127 +diff --git a/sm1 b/sm1
128 +new file mode 100644
129 +index 0000000..9da5fb8
130 +--- /dev/null
131 ++++ b/sm1
132 +@@ -0,0 +1 @@
133 ++sm1
134 +EOF
135 +"
136 +
137 +test_expect_success 'typechanged submodule(submodule->blob)' "
138 + git diff --submodule=log >actual &&
139 + diff actual - <<-EOF
140 +diff --git a/sm1 b/sm1
141 +deleted file mode 100644
142 +index 9da5fb8..0000000
143 +--- a/sm1
144 ++++ /dev/null
145 +@@ -1 +0,0 @@
146 +-sm1
147 +Submodule sm1 0000000...$head4 (new submodule)
148 +EOF
149 +"
150 +
151 +rm -rf sm1 &&
152 +git checkout-index sm1
153 +test_expect_success 'typechanged submodule(submodule->blob)' "
154 + git diff-index -p --submodule=log HEAD >actual &&
155 + diff actual - <<-EOF
156 +Submodule sm1 $head4...0000000 (submodule deleted)
157 +diff --git a/sm1 b/sm1
158 +new file mode 100644
159 +index 0000000..$head5
160 +--- /dev/null
161 ++++ b/sm1
162 +@@ -0,0 +1 @@
163 ++sm1
164 +EOF
165 +"
166 +
167 +rm -f sm1 &&
168 +test_create_repo sm1 &&
169 +head6=$(add_file sm1 foo6 foo7)
170 +fullhead6=$(cd sm1; git rev-list --max-count=1 $head6)
171 +test_expect_success 'nonexistent commit' "
172 + git diff-index -p --submodule=log HEAD >actual &&
173 + diff actual - <<-EOF
174 +Submodule sm1 $head4...$head6 (commits not present)
175 +EOF
176 +"
177 +
178 +commit_file
179 +test_expect_success 'typechanged submodule(blob->submodule)' "
180 + git diff-index -p --submodule=log HEAD >actual &&
181 + diff actual - <<-EOF
182 +diff --git a/sm1 b/sm1
183 +deleted file mode 100644
184 +index $head5..0000000
185 +--- a/sm1
186 ++++ /dev/null
187 +@@ -1 +0,0 @@
188 +-sm1
189 +Submodule sm1 0000000...$head6 (new submodule)
190 +EOF
191 +"
192 +
193 +commit_file sm1 &&
194 +rm -rf sm1
195 +test_expect_success 'deleted submodule' "
196 + git diff-index -p --submodule=log HEAD >actual &&
197 + diff actual - <<-EOF
198 +Submodule sm1 $head6...0000000 (submodule deleted)
199 +EOF
200 +"
201 +
202 +test_create_repo sm2 &&
203 +head7=$(add_file sm2 foo8 foo9) &&
204 +git add sm2
205 +
206 +test_expect_success 'multiple submodules' "
207 + git diff-index -p --submodule=log HEAD >actual &&
208 + diff actual - <<-EOF
209 +Submodule sm1 $head6...0000000 (submodule deleted)
210 +Submodule sm2 0000000...$head7 (new submodule)
211 +EOF
212 +"
213 +
214 +test_expect_success 'path filter' "
215 + git diff-index -p --submodule=log HEAD sm2 >actual &&
216 + diff actual - <<-EOF
217 +Submodule sm2 0000000...$head7 (new submodule)
218 +EOF
219 +"
220 +
221 +commit_file sm2
222 +test_expect_success 'given commit' "
223 + git diff-index -p --submodule=log HEAD^ >actual &&
224 + diff actual - <<-EOF
225 +Submodule sm1 $head6...0000000 (submodule deleted)
226 +Submodule sm2 0000000...$head7 (new submodule)
227 +EOF
228 +"
229 +
230 +test_expect_success 'given commit --submodule' "
231 + git diff-index -p --submodule HEAD^ >actual &&
232 + diff actual - <<-EOF
233 +Submodule sm1 $head6...0000000 (submodule deleted)
234 +Submodule sm2 0000000...$head7 (new submodule)
235 +EOF
236 +"
237 +
238 +fullhead7=$(cd sm2; git rev-list --max-count=1 $head7)
239 +
240 +test_expect_success 'given commit --submodule=short' "
241 + git diff-index -p --submodule=short HEAD^ >actual &&
242 + diff actual - <<-EOF
243 +diff --git a/sm1 b/sm1
244 +deleted file mode 160000
245 +index $head6..0000000
246 +--- a/sm1
247 ++++ /dev/null
248 +@@ -1 +0,0 @@
249 +-Subproject commit $fullhead6
250 +diff --git a/sm2 b/sm2
251 +new file mode 160000
252 +index 0000000..$head7
253 +--- /dev/null
254 ++++ b/sm2
255 +@@ -0,0 +1 @@
256 ++Subproject commit $fullhead7
257 +EOF
258 +"
259 +
260 +test_done