Blame


1 95adcdca 2019-03-27 stsp #!/bin/sh
2 95adcdca 2019-03-27 stsp #
3 95adcdca 2019-03-27 stsp # Copyright (c) 2019 Stefan Sperling <stsp@openbsd.org>
4 95adcdca 2019-03-27 stsp #
5 95adcdca 2019-03-27 stsp # Permission to use, copy, modify, and distribute this software for any
6 95adcdca 2019-03-27 stsp # purpose with or without fee is hereby granted, provided that the above
7 95adcdca 2019-03-27 stsp # copyright notice and this permission notice appear in all copies.
8 95adcdca 2019-03-27 stsp #
9 95adcdca 2019-03-27 stsp # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 95adcdca 2019-03-27 stsp # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 95adcdca 2019-03-27 stsp # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 95adcdca 2019-03-27 stsp # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 95adcdca 2019-03-27 stsp # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 95adcdca 2019-03-27 stsp # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 95adcdca 2019-03-27 stsp # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 95adcdca 2019-03-27 stsp
17 95adcdca 2019-03-27 stsp . ./common.sh
18 95adcdca 2019-03-27 stsp
19 f6cae3ed 2020-09-13 naddy test_diff_basic() {
20 95adcdca 2019-03-27 stsp local testroot=`test_init diff_basic`
21 95adcdca 2019-03-27 stsp local head_rev=`git_show_head $testroot/repo`
22 4ad4d490 2022-08-30 thomas local alpha_blobid=`get_blob_id $testroot/repo "" alpha`
23 95adcdca 2019-03-27 stsp
24 95adcdca 2019-03-27 stsp got checkout $testroot/repo $testroot/wt > /dev/null
25 fc414659 2022-04-16 thomas ret=$?
26 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
27 95adcdca 2019-03-27 stsp test_done "$testroot" "$ret"
28 95adcdca 2019-03-27 stsp return 1
29 95adcdca 2019-03-27 stsp fi
30 95adcdca 2019-03-27 stsp
31 95adcdca 2019-03-27 stsp echo "modified alpha" > $testroot/wt/alpha
32 95adcdca 2019-03-27 stsp (cd $testroot/wt && got rm beta >/dev/null)
33 95adcdca 2019-03-27 stsp echo "new file" > $testroot/wt/new
34 95adcdca 2019-03-27 stsp (cd $testroot/wt && got add new >/dev/null)
35 95adcdca 2019-03-27 stsp
36 9b4458b4 2022-06-26 thomas echo "diff $testroot/wt" > $testroot/stdout.expected
37 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
38 9b4458b4 2022-06-26 thomas echo "path + $testroot/wt" >> $testroot/stdout.expected
39 95adcdca 2019-03-27 stsp echo -n 'blob - ' >> $testroot/stdout.expected
40 95adcdca 2019-03-27 stsp got tree -r $testroot/repo -i | grep 'alpha$' | cut -d' ' -f 1 \
41 95adcdca 2019-03-27 stsp >> $testroot/stdout.expected
42 95adcdca 2019-03-27 stsp echo 'file + alpha' >> $testroot/stdout.expected
43 95adcdca 2019-03-27 stsp echo '--- alpha' >> $testroot/stdout.expected
44 95adcdca 2019-03-27 stsp echo '+++ alpha' >> $testroot/stdout.expected
45 95adcdca 2019-03-27 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
46 95adcdca 2019-03-27 stsp echo '-alpha' >> $testroot/stdout.expected
47 95adcdca 2019-03-27 stsp echo '+modified alpha' >> $testroot/stdout.expected
48 95adcdca 2019-03-27 stsp echo -n 'blob - ' >> $testroot/stdout.expected
49 95adcdca 2019-03-27 stsp got tree -r $testroot/repo -i | grep 'beta$' | cut -d' ' -f 1 \
50 95adcdca 2019-03-27 stsp >> $testroot/stdout.expected
51 95adcdca 2019-03-27 stsp echo 'file + /dev/null' >> $testroot/stdout.expected
52 95adcdca 2019-03-27 stsp echo '--- beta' >> $testroot/stdout.expected
53 1cb46f00 2020-11-21 stsp echo '+++ /dev/null' >> $testroot/stdout.expected
54 95adcdca 2019-03-27 stsp echo '@@ -1 +0,0 @@' >> $testroot/stdout.expected
55 95adcdca 2019-03-27 stsp echo '-beta' >> $testroot/stdout.expected
56 95adcdca 2019-03-27 stsp echo 'blob - /dev/null' >> $testroot/stdout.expected
57 95adcdca 2019-03-27 stsp echo 'file + new' >> $testroot/stdout.expected
58 1cb46f00 2020-11-21 stsp echo '--- /dev/null' >> $testroot/stdout.expected
59 95adcdca 2019-03-27 stsp echo '+++ new' >> $testroot/stdout.expected
60 95adcdca 2019-03-27 stsp echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
61 95adcdca 2019-03-27 stsp echo '+new file' >> $testroot/stdout.expected
62 95adcdca 2019-03-27 stsp
63 95adcdca 2019-03-27 stsp (cd $testroot/wt && got diff > $testroot/stdout)
64 8d301dd9 2019-05-14 stsp cmp -s $testroot/stdout.expected $testroot/stdout
65 fc414659 2022-04-16 thomas ret=$?
66 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
67 95adcdca 2019-03-27 stsp diff -u $testroot/stdout.expected $testroot/stdout
68 2a06fe5f 2019-08-24 stsp test_done "$testroot" "$ret"
69 2a06fe5f 2019-08-24 stsp return 1
70 95adcdca 2019-03-27 stsp fi
71 2a06fe5f 2019-08-24 stsp
72 30f6c0c6 2021-10-08 thomas # 'got diff' in a repository without any arguments is an error
73 30f6c0c6 2021-10-08 thomas (cd $testroot/repo && got diff 2> $testroot/stderr)
74 30f6c0c6 2021-10-08 thomas echo "got: no got work tree found" > $testroot/stderr.expected
75 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stderr.expected $testroot/stderr
76 fc414659 2022-04-16 thomas ret=$?
77 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
78 30f6c0c6 2021-10-08 thomas diff -u $testroot/stderr.expected $testroot/stderr
79 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
80 30f6c0c6 2021-10-08 thomas return 1
81 30f6c0c6 2021-10-08 thomas fi
82 30f6c0c6 2021-10-08 thomas
83 30f6c0c6 2021-10-08 thomas # 'got diff' in a repository with two arguments requires that
84 30f6c0c6 2021-10-08 thomas # both named objects exist
85 30f6c0c6 2021-10-08 thomas (cd $testroot/repo && got diff $head_rev foo 2> $testroot/stderr)
86 30f6c0c6 2021-10-08 thomas echo "got: foo: object not found" > $testroot/stderr.expected
87 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stderr.expected $testroot/stderr
88 fc414659 2022-04-16 thomas ret=$?
89 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
90 30f6c0c6 2021-10-08 thomas diff -u $testroot/stderr.expected $testroot/stderr
91 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
92 30f6c0c6 2021-10-08 thomas return 1
93 30f6c0c6 2021-10-08 thomas fi
94 30f6c0c6 2021-10-08 thomas
95 2a06fe5f 2019-08-24 stsp # diff non-existent path
96 2a06fe5f 2019-08-24 stsp (cd $testroot/wt && got diff nonexistent > $testroot/stdout \
97 2a06fe5f 2019-08-24 stsp 2> $testroot/stderr)
98 2a06fe5f 2019-08-24 stsp
99 2a06fe5f 2019-08-24 stsp echo -n > $testroot/stdout.expected
100 2a06fe5f 2019-08-24 stsp cmp -s $testroot/stdout.expected $testroot/stdout
101 fc414659 2022-04-16 thomas ret=$?
102 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
103 2a06fe5f 2019-08-24 stsp diff -u $testroot/stdout.expected $testroot/stdout
104 2a06fe5f 2019-08-24 stsp test_done "$testroot" "$ret"
105 2a06fe5f 2019-08-24 stsp return 1
106 2a06fe5f 2019-08-24 stsp fi
107 2a06fe5f 2019-08-24 stsp
108 2a06fe5f 2019-08-24 stsp echo "got: nonexistent: No such file or directory" \
109 30f6c0c6 2021-10-08 thomas > $testroot/stderr.expected
110 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stderr.expected $testroot/stderr
111 fc414659 2022-04-16 thomas ret=$?
112 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
113 30f6c0c6 2021-10-08 thomas diff -u $testroot/stderr.expected $testroot/stderr
114 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
115 30f6c0c6 2021-10-08 thomas return 1
116 30f6c0c6 2021-10-08 thomas fi
117 30f6c0c6 2021-10-08 thomas
118 30f6c0c6 2021-10-08 thomas echo "modified zeta" > $testroot/wt/epsilon/zeta
119 30f6c0c6 2021-10-08 thomas
120 30f6c0c6 2021-10-08 thomas # diff several paths in a work tree
121 9b4458b4 2022-06-26 thomas echo "diff $testroot/wt" > $testroot/stdout.expected
122 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
123 9b4458b4 2022-06-26 thomas echo "path + $testroot/wt" >> $testroot/stdout.expected
124 30f6c0c6 2021-10-08 thomas echo -n 'blob - ' >> $testroot/stdout.expected
125 30f6c0c6 2021-10-08 thomas got tree -r $testroot/repo -i | grep 'alpha$' | cut -d' ' -f 1 \
126 30f6c0c6 2021-10-08 thomas >> $testroot/stdout.expected
127 30f6c0c6 2021-10-08 thomas echo 'file + alpha' >> $testroot/stdout.expected
128 30f6c0c6 2021-10-08 thomas echo '--- alpha' >> $testroot/stdout.expected
129 30f6c0c6 2021-10-08 thomas echo '+++ alpha' >> $testroot/stdout.expected
130 30f6c0c6 2021-10-08 thomas echo '@@ -1 +1 @@' >> $testroot/stdout.expected
131 30f6c0c6 2021-10-08 thomas echo '-alpha' >> $testroot/stdout.expected
132 30f6c0c6 2021-10-08 thomas echo '+modified alpha' >> $testroot/stdout.expected
133 30f6c0c6 2021-10-08 thomas echo -n 'blob - ' >> $testroot/stdout.expected
134 f1417e9f 2021-10-12 thomas got tree -r $testroot/repo -i | grep 'beta$' | cut -d' ' -f 1 \
135 f1417e9f 2021-10-12 thomas >> $testroot/stdout.expected
136 f1417e9f 2021-10-12 thomas echo 'file + /dev/null' >> $testroot/stdout.expected
137 f1417e9f 2021-10-12 thomas echo '--- beta' >> $testroot/stdout.expected
138 f1417e9f 2021-10-12 thomas echo '+++ /dev/null' >> $testroot/stdout.expected
139 f1417e9f 2021-10-12 thomas echo '@@ -1 +0,0 @@' >> $testroot/stdout.expected
140 f1417e9f 2021-10-12 thomas echo '-beta' >> $testroot/stdout.expected
141 f1417e9f 2021-10-12 thomas echo -n 'blob - ' >> $testroot/stdout.expected
142 30f6c0c6 2021-10-08 thomas got tree -r $testroot/repo -i epsilon | grep 'zeta$' | cut -d' ' -f 1 \
143 30f6c0c6 2021-10-08 thomas >> $testroot/stdout.expected
144 30f6c0c6 2021-10-08 thomas echo 'file + epsilon/zeta' >> $testroot/stdout.expected
145 30f6c0c6 2021-10-08 thomas echo '--- epsilon/zeta' >> $testroot/stdout.expected
146 30f6c0c6 2021-10-08 thomas echo '+++ epsilon/zeta' >> $testroot/stdout.expected
147 30f6c0c6 2021-10-08 thomas echo '@@ -1 +1 @@' >> $testroot/stdout.expected
148 30f6c0c6 2021-10-08 thomas echo '-zeta' >> $testroot/stdout.expected
149 30f6c0c6 2021-10-08 thomas echo '+modified zeta' >> $testroot/stdout.expected
150 f1417e9f 2021-10-12 thomas echo 'blob - /dev/null' >> $testroot/stdout.expected
151 f1417e9f 2021-10-12 thomas echo 'file + new' >> $testroot/stdout.expected
152 f1417e9f 2021-10-12 thomas echo '--- /dev/null' >> $testroot/stdout.expected
153 f1417e9f 2021-10-12 thomas echo '+++ new' >> $testroot/stdout.expected
154 f1417e9f 2021-10-12 thomas echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
155 f1417e9f 2021-10-12 thomas echo '+new file' >> $testroot/stdout.expected
156 30f6c0c6 2021-10-08 thomas
157 30f6c0c6 2021-10-08 thomas (cd $testroot/wt && got diff new alpha epsilon beta > $testroot/stdout)
158 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stdout.expected $testroot/stdout
159 fc414659 2022-04-16 thomas ret=$?
160 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
161 30f6c0c6 2021-10-08 thomas diff -u $testroot/stdout.expected $testroot/stdout
162 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
163 30f6c0c6 2021-10-08 thomas return 1
164 30f6c0c6 2021-10-08 thomas fi
165 30f6c0c6 2021-10-08 thomas
166 f1417e9f 2021-10-12 thomas # different order of arguments results in same output order
167 f1417e9f 2021-10-12 thomas (cd $testroot/wt && got diff alpha new epsilon beta \
168 30f6c0c6 2021-10-08 thomas > $testroot/stdout 2> $testroot/stderr)
169 fc414659 2022-04-16 thomas ret=$?
170 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
171 30f6c0c6 2021-10-08 thomas echo "diff failed unexpectedly" >&2
172 30f6c0c6 2021-10-08 thomas test_done "$testroot" "1"
173 30f6c0c6 2021-10-08 thomas return 1
174 30f6c0c6 2021-10-08 thomas fi
175 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stdout.expected $testroot/stdout
176 fc414659 2022-04-16 thomas ret=$?
177 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
178 30f6c0c6 2021-10-08 thomas diff -u $testroot/stdout.expected $testroot/stdout
179 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
180 30f6c0c6 2021-10-08 thomas return 1
181 30f6c0c6 2021-10-08 thomas fi
182 30f6c0c6 2021-10-08 thomas
183 f1417e9f 2021-10-12 thomas # a branch 'new' should not collide with path 'new' if more
184 f1417e9f 2021-10-12 thomas # than two arguments are passed
185 f1417e9f 2021-10-12 thomas got br -r $testroot/repo -c master new > /dev/null
186 f1417e9f 2021-10-12 thomas (cd $testroot/wt && got diff new alpha epsilon beta \
187 30f6c0c6 2021-10-08 thomas > $testroot/stdout 2> $testroot/stderr)
188 fc414659 2022-04-16 thomas ret=$?
189 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
190 30f6c0c6 2021-10-08 thomas echo "diff failed unexpectedly" >&2
191 30f6c0c6 2021-10-08 thomas test_done "$testroot" "1"
192 30f6c0c6 2021-10-08 thomas return 1
193 30f6c0c6 2021-10-08 thomas fi
194 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stdout.expected $testroot/stdout
195 fc414659 2022-04-16 thomas ret=$?
196 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
197 30f6c0c6 2021-10-08 thomas diff -u $testroot/stdout.expected $testroot/stdout
198 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
199 30f6c0c6 2021-10-08 thomas return 1
200 30f6c0c6 2021-10-08 thomas fi
201 30f6c0c6 2021-10-08 thomas
202 30f6c0c6 2021-10-08 thomas # Two arguments are interpreted as objects if a colliding path exists
203 30f6c0c6 2021-10-08 thomas echo master > $testroot/wt/master
204 30f6c0c6 2021-10-08 thomas (cd $testroot/wt && got add master > /dev/null)
205 30f6c0c6 2021-10-08 thomas (cd $testroot/wt && got diff master new > $testroot/stdout)
206 fc414659 2022-04-16 thomas ret=$?
207 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
208 30f6c0c6 2021-10-08 thomas echo "diff failed unexpectedly" >&2
209 30f6c0c6 2021-10-08 thomas test_done "$testroot" "1"
210 30f6c0c6 2021-10-08 thomas return 1
211 30f6c0c6 2021-10-08 thomas fi
212 30f6c0c6 2021-10-08 thomas echo "diff refs/heads/master refs/heads/new" > $testroot/stdout.expected
213 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
214 9b4458b4 2022-06-26 thomas echo "commit + $head_rev" >> $testroot/stdout.expected
215 30f6c0c6 2021-10-08 thomas # diff between the branches is empty
216 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stdout.expected $testroot/stdout
217 fc414659 2022-04-16 thomas ret=$?
218 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
219 30f6c0c6 2021-10-08 thomas diff -u $testroot/stdout.expected $testroot/stdout
220 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
221 30f6c0c6 2021-10-08 thomas return 1
222 30f6c0c6 2021-10-08 thomas fi
223 30f6c0c6 2021-10-08 thomas # same without a work tree
224 30f6c0c6 2021-10-08 thomas (cd $testroot/repo && got diff master new > $testroot/stdout)
225 fc414659 2022-04-16 thomas ret=$?
226 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
227 30f6c0c6 2021-10-08 thomas echo "diff failed unexpectedly" >&2
228 30f6c0c6 2021-10-08 thomas test_done "$testroot" "1"
229 30f6c0c6 2021-10-08 thomas return 1
230 30f6c0c6 2021-10-08 thomas fi
231 30f6c0c6 2021-10-08 thomas echo "diff refs/heads/master refs/heads/new" > $testroot/stdout.expected
232 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
233 9b4458b4 2022-06-26 thomas echo "commit + $head_rev" >> $testroot/stdout.expected
234 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stdout.expected $testroot/stdout
235 fc414659 2022-04-16 thomas ret=$?
236 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
237 30f6c0c6 2021-10-08 thomas diff -u $testroot/stdout.expected $testroot/stdout
238 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
239 30f6c0c6 2021-10-08 thomas return 1
240 30f6c0c6 2021-10-08 thomas fi
241 30f6c0c6 2021-10-08 thomas # same with -r argument
242 30f6c0c6 2021-10-08 thomas got diff -r $testroot/repo master new > $testroot/stdout
243 fc414659 2022-04-16 thomas ret=$?
244 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
245 30f6c0c6 2021-10-08 thomas echo "diff failed unexpectedly" >&2
246 30f6c0c6 2021-10-08 thomas test_done "$testroot" "1"
247 30f6c0c6 2021-10-08 thomas return 1
248 30f6c0c6 2021-10-08 thomas fi
249 30f6c0c6 2021-10-08 thomas echo "diff refs/heads/master refs/heads/new" > $testroot/stdout.expected
250 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
251 9b4458b4 2022-06-26 thomas echo "commit + $head_rev" >> $testroot/stdout.expected
252 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stdout.expected $testroot/stdout
253 fc414659 2022-04-16 thomas ret=$?
254 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
255 30f6c0c6 2021-10-08 thomas diff -u $testroot/stdout.expected $testroot/stdout
256 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
257 30f6c0c6 2021-10-08 thomas return 1
258 30f6c0c6 2021-10-08 thomas fi
259 30f6c0c6 2021-10-08 thomas
260 30f6c0c6 2021-10-08 thomas # -P can be used to force use of paths
261 30f6c0c6 2021-10-08 thomas (cd $testroot/wt && got diff -P new master > $testroot/stdout)
262 fc414659 2022-04-16 thomas ret=$?
263 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
264 30f6c0c6 2021-10-08 thomas echo "diff failed unexpectedly" >&2
265 30f6c0c6 2021-10-08 thomas test_done "$testroot" "1"
266 30f6c0c6 2021-10-08 thomas return 1
267 30f6c0c6 2021-10-08 thomas fi
268 9b4458b4 2022-06-26 thomas echo "diff $testroot/wt" > $testroot/stdout.expected
269 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
270 9b4458b4 2022-06-26 thomas echo "path + $testroot/wt" >> $testroot/stdout.expected
271 30f6c0c6 2021-10-08 thomas echo 'blob - /dev/null' >> $testroot/stdout.expected
272 30f6c0c6 2021-10-08 thomas echo 'file + master' >> $testroot/stdout.expected
273 30f6c0c6 2021-10-08 thomas echo '--- /dev/null' >> $testroot/stdout.expected
274 30f6c0c6 2021-10-08 thomas echo '+++ master' >> $testroot/stdout.expected
275 30f6c0c6 2021-10-08 thomas echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
276 30f6c0c6 2021-10-08 thomas echo '+master' >> $testroot/stdout.expected
277 f1417e9f 2021-10-12 thomas echo 'blob - /dev/null' >> $testroot/stdout.expected
278 f1417e9f 2021-10-12 thomas echo 'file + new' >> $testroot/stdout.expected
279 f1417e9f 2021-10-12 thomas echo '--- /dev/null' >> $testroot/stdout.expected
280 f1417e9f 2021-10-12 thomas echo '+++ new' >> $testroot/stdout.expected
281 f1417e9f 2021-10-12 thomas echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
282 f1417e9f 2021-10-12 thomas echo '+new file' >> $testroot/stdout.expected
283 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stdout.expected $testroot/stdout
284 fc414659 2022-04-16 thomas ret=$?
285 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
286 30f6c0c6 2021-10-08 thomas diff -u $testroot/stdout.expected $testroot/stdout
287 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
288 30f6c0c6 2021-10-08 thomas return 1
289 30f6c0c6 2021-10-08 thomas fi
290 30f6c0c6 2021-10-08 thomas
291 30f6c0c6 2021-10-08 thomas # -P can only be used in a work tree
292 30f6c0c6 2021-10-08 thomas got diff -r $testroot/repo -P new master 2> $testroot/stderr
293 fc414659 2022-04-16 thomas ret=$?
294 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
295 30f6c0c6 2021-10-08 thomas echo "diff succeeded unexpectedly" >&2
296 30f6c0c6 2021-10-08 thomas test_done "$testroot" "1"
297 30f6c0c6 2021-10-08 thomas return 1
298 30f6c0c6 2021-10-08 thomas fi
299 30f6c0c6 2021-10-08 thomas echo "got: -P option can only be used when diffing a work tree" \
300 2a06fe5f 2019-08-24 stsp > $testroot/stderr.expected
301 2a06fe5f 2019-08-24 stsp cmp -s $testroot/stderr.expected $testroot/stderr
302 fc414659 2022-04-16 thomas ret=$?
303 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
304 2a06fe5f 2019-08-24 stsp diff -u $testroot/stderr.expected $testroot/stderr
305 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
306 30f6c0c6 2021-10-08 thomas return 1
307 30f6c0c6 2021-10-08 thomas fi
308 30f6c0c6 2021-10-08 thomas
309 30f6c0c6 2021-10-08 thomas # a single argument which can be resolved to a path is not ambiguous
310 9b4458b4 2022-06-26 thomas echo "diff $testroot/wt" > $testroot/stdout.expected
311 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
312 9b4458b4 2022-06-26 thomas echo "path + $testroot/wt" >> $testroot/stdout.expected
313 30f6c0c6 2021-10-08 thomas echo 'blob - /dev/null' >> $testroot/stdout.expected
314 30f6c0c6 2021-10-08 thomas echo 'file + new' >> $testroot/stdout.expected
315 30f6c0c6 2021-10-08 thomas echo '--- /dev/null' >> $testroot/stdout.expected
316 30f6c0c6 2021-10-08 thomas echo '+++ new' >> $testroot/stdout.expected
317 30f6c0c6 2021-10-08 thomas echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
318 30f6c0c6 2021-10-08 thomas echo '+new file' >> $testroot/stdout.expected
319 30f6c0c6 2021-10-08 thomas (cd $testroot/wt && got diff new > $testroot/stdout)
320 fc414659 2022-04-16 thomas ret=$?
321 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
322 30f6c0c6 2021-10-08 thomas echo "diff failed unexpectedly" >&2
323 30f6c0c6 2021-10-08 thomas test_done "$testroot" "1"
324 30f6c0c6 2021-10-08 thomas return 1
325 30f6c0c6 2021-10-08 thomas fi
326 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stdout.expected $testroot/stdout
327 fc414659 2022-04-16 thomas ret=$?
328 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
329 30f6c0c6 2021-10-08 thomas diff -u $testroot/stdout.expected $testroot/stdout
330 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
331 30f6c0c6 2021-10-08 thomas return 1
332 30f6c0c6 2021-10-08 thomas fi
333 30f6c0c6 2021-10-08 thomas
334 30f6c0c6 2021-10-08 thomas # diff with just one object ID argument results in
335 30f6c0c6 2021-10-08 thomas # interpretation of argument as a path
336 30f6c0c6 2021-10-08 thomas (cd $testroot/wt && got diff $head_rev 2> $testroot/stderr)
337 fc414659 2022-04-16 thomas ret=$?
338 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
339 30f6c0c6 2021-10-08 thomas echo "diff succeeded unexpectedly" >&2
340 30f6c0c6 2021-10-08 thomas test_done "$testroot" "1"
341 30f6c0c6 2021-10-08 thomas return 1
342 30f6c0c6 2021-10-08 thomas fi
343 30f6c0c6 2021-10-08 thomas echo "got: $head_rev: No such file or directory" \
344 30f6c0c6 2021-10-08 thomas > $testroot/stderr.expected
345 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stderr.expected $testroot/stderr
346 fc414659 2022-04-16 thomas ret=$?
347 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
348 30f6c0c6 2021-10-08 thomas diff -u $testroot/stderr.expected $testroot/stderr
349 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
350 30f6c0c6 2021-10-08 thomas return 1
351 30f6c0c6 2021-10-08 thomas fi
352 30f6c0c6 2021-10-08 thomas
353 30f6c0c6 2021-10-08 thomas # diff with more than two object arguments results in
354 30f6c0c6 2021-10-08 thomas # interpretation of arguments as paths
355 30f6c0c6 2021-10-08 thomas (cd $testroot/wt && got diff new $head_rev master \
356 30f6c0c6 2021-10-08 thomas > $testroot/stout 2> $testroot/stderr)
357 fc414659 2022-04-16 thomas ret=$?
358 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
359 30f6c0c6 2021-10-08 thomas echo "diff succeeded unexpectedly" >&2
360 30f6c0c6 2021-10-08 thomas test_done "$testroot" "1"
361 30f6c0c6 2021-10-08 thomas return 1
362 30f6c0c6 2021-10-08 thomas fi
363 30f6c0c6 2021-10-08 thomas
364 9b4458b4 2022-06-26 thomas echo "diff $testroot/wt" > $testroot/stdout.expected
365 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
366 9b4458b4 2022-06-26 thomas echo "path + $testroot/wt" >> $testroot/stdout.expected
367 30f6c0c6 2021-10-08 thomas echo 'blob - /dev/null' >> $testroot/stdout.expected
368 30f6c0c6 2021-10-08 thomas echo 'file + new' >> $testroot/stdout.expected
369 30f6c0c6 2021-10-08 thomas echo '--- /dev/null' >> $testroot/stdout.expected
370 30f6c0c6 2021-10-08 thomas echo '+++ new' >> $testroot/stdout.expected
371 30f6c0c6 2021-10-08 thomas echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
372 30f6c0c6 2021-10-08 thomas echo '+new file' >> $testroot/stdout.expected
373 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stdout.expected $testroot/stdout
374 fc414659 2022-04-16 thomas ret=$?
375 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
376 30f6c0c6 2021-10-08 thomas diff -u $testroot/stdout.expected $testroot/stdout
377 30f6c0c6 2021-10-08 thomas test_done "$testroot" "$ret"
378 30f6c0c6 2021-10-08 thomas return 1
379 30f6c0c6 2021-10-08 thomas fi
380 30f6c0c6 2021-10-08 thomas
381 30f6c0c6 2021-10-08 thomas echo "got: $head_rev: No such file or directory" \
382 30f6c0c6 2021-10-08 thomas > $testroot/stderr.expected
383 30f6c0c6 2021-10-08 thomas cmp -s $testroot/stderr.expected $testroot/stderr
384 fc414659 2022-04-16 thomas ret=$?
385 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
386 30f6c0c6 2021-10-08 thomas diff -u $testroot/stderr.expected $testroot/stderr
387 4ad4d490 2022-08-30 thomas return 1
388 4ad4d490 2022-08-30 thomas fi
389 4ad4d490 2022-08-30 thomas
390 4ad4d490 2022-08-30 thomas # diff two blob ids
391 4ad4d490 2022-08-30 thomas (cd $testroot/wt && got commit -m 'edit' alpha >/dev/null)
392 4ad4d490 2022-08-30 thomas local alpha_new_blobid=`get_blob_id $testroot/repo "" alpha`
393 4ad4d490 2022-08-30 thomas (cd $testroot/wt && got diff $alpha_blobid $alpha_new_blobid) > $testroot/diff
394 4ad4d490 2022-08-30 thomas ret=$?
395 4ad4d490 2022-08-30 thomas if [ $ret -ne 0 ]; then
396 4ad4d490 2022-08-30 thomas echo "diff failed unexpectedly" >&2
397 4ad4d490 2022-08-30 thomas test_done "$testroot" "$ret"
398 4ad4d490 2022-08-30 thomas return 1
399 4ad4d490 2022-08-30 thomas fi
400 4ad4d490 2022-08-30 thomas
401 4ad4d490 2022-08-30 thomas cat <<EOF >$testroot/diff.expected
402 4ad4d490 2022-08-30 thomas blob - $alpha_blobid
403 4ad4d490 2022-08-30 thomas blob + $alpha_new_blobid
404 4ad4d490 2022-08-30 thomas --- $alpha_blobid
405 4ad4d490 2022-08-30 thomas +++ $alpha_new_blobid
406 4ad4d490 2022-08-30 thomas @@ -1 +1 @@
407 4ad4d490 2022-08-30 thomas -alpha
408 4ad4d490 2022-08-30 thomas +modified alpha
409 4ad4d490 2022-08-30 thomas EOF
410 4ad4d490 2022-08-30 thomas
411 4ad4d490 2022-08-30 thomas cmp -s $testroot/diff.expected $testroot/diff
412 4ad4d490 2022-08-30 thomas ret=$?
413 4ad4d490 2022-08-30 thomas if [ $ret -ne 0 ]; then
414 4ad4d490 2022-08-30 thomas echo
415 4ad4d490 2022-08-30 thomas diff -u $testroot/diff.expected $testroot/diff
416 4ad4d490 2022-08-30 thomas test_done "$testroot" "$ret"
417 30f6c0c6 2021-10-08 thomas return 1
418 2a06fe5f 2019-08-24 stsp fi
419 4ad4d490 2022-08-30 thomas
420 95adcdca 2019-03-27 stsp test_done "$testroot" "$ret"
421 95adcdca 2019-03-27 stsp }
422 95adcdca 2019-03-27 stsp
423 f6cae3ed 2020-09-13 naddy test_diff_shows_conflict() {
424 95adcdca 2019-03-27 stsp local testroot=`test_init diff_shows_conflict 1`
425 95adcdca 2019-03-27 stsp
426 95adcdca 2019-03-27 stsp echo "1" > $testroot/repo/numbers
427 95adcdca 2019-03-27 stsp echo "2" >> $testroot/repo/numbers
428 95adcdca 2019-03-27 stsp echo "3" >> $testroot/repo/numbers
429 95adcdca 2019-03-27 stsp echo "4" >> $testroot/repo/numbers
430 95adcdca 2019-03-27 stsp echo "5" >> $testroot/repo/numbers
431 95adcdca 2019-03-27 stsp echo "6" >> $testroot/repo/numbers
432 95adcdca 2019-03-27 stsp echo "7" >> $testroot/repo/numbers
433 95adcdca 2019-03-27 stsp echo "8" >> $testroot/repo/numbers
434 95adcdca 2019-03-27 stsp (cd $testroot/repo && git add numbers)
435 95adcdca 2019-03-27 stsp git_commit $testroot/repo -m "added numbers file"
436 f69721c3 2019-10-21 stsp local base_commit=`git_show_head $testroot/repo`
437 95adcdca 2019-03-27 stsp
438 95adcdca 2019-03-27 stsp got checkout $testroot/repo $testroot/wt > /dev/null
439 fc414659 2022-04-16 thomas ret=$?
440 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
441 95adcdca 2019-03-27 stsp test_done "$testroot" "$ret"
442 95adcdca 2019-03-27 stsp return 1
443 95adcdca 2019-03-27 stsp fi
444 95adcdca 2019-03-27 stsp
445 c206b220 2021-10-09 thomas sed -i '' -e 's/2/22/' $testroot/repo/numbers
446 c206b220 2021-10-09 thomas sed -i '' -e 's/8/33/' $testroot/repo/numbers
447 95adcdca 2019-03-27 stsp git_commit $testroot/repo -m "modified line 2"
448 95adcdca 2019-03-27 stsp local head_rev=`git_show_head $testroot/repo`
449 95adcdca 2019-03-27 stsp
450 d136cfcb 2019-10-12 stsp # modify lines 2 and 8 in conflicting ways
451 c206b220 2021-10-09 thomas sed -i '' -e 's/2/77/' $testroot/wt/numbers
452 c206b220 2021-10-09 thomas sed -i '' -e 's/8/88/' $testroot/wt/numbers
453 95adcdca 2019-03-27 stsp
454 95adcdca 2019-03-27 stsp echo "C numbers" > $testroot/stdout.expected
455 4f3c844b 2021-09-14 stsp echo -n "Updated to refs/heads/master: $head_rev" \
456 4f3c844b 2021-09-14 stsp >> $testroot/stdout.expected
457 95adcdca 2019-03-27 stsp echo >> $testroot/stdout.expected
458 9627c110 2020-04-18 stsp echo "Files with new merge conflicts: 1" >> $testroot/stdout.expected
459 95adcdca 2019-03-27 stsp
460 95adcdca 2019-03-27 stsp (cd $testroot/wt && got update > $testroot/stdout)
461 95adcdca 2019-03-27 stsp
462 8d301dd9 2019-05-14 stsp cmp -s $testroot/stdout.expected $testroot/stdout
463 fc414659 2022-04-16 thomas ret=$?
464 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
465 95adcdca 2019-03-27 stsp diff -u $testroot/stdout.expected $testroot/stdout
466 95adcdca 2019-03-27 stsp test_done "$testroot" "$ret"
467 95adcdca 2019-03-27 stsp return 1
468 95adcdca 2019-03-27 stsp fi
469 95adcdca 2019-03-27 stsp
470 9b4458b4 2022-06-26 thomas echo "diff $testroot/wt" > $testroot/stdout.expected
471 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
472 9b4458b4 2022-06-26 thomas echo "path + $testroot/wt" >> $testroot/stdout.expected
473 95adcdca 2019-03-27 stsp echo -n 'blob - ' >> $testroot/stdout.expected
474 95adcdca 2019-03-27 stsp got tree -r $testroot/repo -i | grep 'numbers$' | cut -d' ' -f 1 \
475 95adcdca 2019-03-27 stsp >> $testroot/stdout.expected
476 95adcdca 2019-03-27 stsp echo 'file + numbers' >> $testroot/stdout.expected
477 95adcdca 2019-03-27 stsp echo '--- numbers' >> $testroot/stdout.expected
478 95adcdca 2019-03-27 stsp echo '+++ numbers' >> $testroot/stdout.expected
479 d136cfcb 2019-10-12 stsp echo '@@ -1,8 +1,20 @@' >> $testroot/stdout.expected
480 95adcdca 2019-03-27 stsp echo ' 1' >> $testroot/stdout.expected
481 f69721c3 2019-10-21 stsp echo "+<<<<<<< merged change: commit $head_rev" \
482 f69721c3 2019-10-21 stsp >> $testroot/stdout.expected
483 95adcdca 2019-03-27 stsp echo ' 22' >> $testroot/stdout.expected
484 f69721c3 2019-10-21 stsp echo "+||||||| 3-way merge base: commit $base_commit" \
485 f69721c3 2019-10-21 stsp >> $testroot/stdout.expected
486 d136cfcb 2019-10-12 stsp echo '+2' >> $testroot/stdout.expected
487 95adcdca 2019-03-27 stsp echo '+=======' >> $testroot/stdout.expected
488 95adcdca 2019-03-27 stsp echo '+77' >> $testroot/stdout.expected
489 f69721c3 2019-10-21 stsp echo '+>>>>>>>' >> $testroot/stdout.expected
490 95adcdca 2019-03-27 stsp echo ' 3' >> $testroot/stdout.expected
491 95adcdca 2019-03-27 stsp echo ' 4' >> $testroot/stdout.expected
492 95adcdca 2019-03-27 stsp echo ' 5' >> $testroot/stdout.expected
493 d136cfcb 2019-10-12 stsp echo ' 6' >> $testroot/stdout.expected
494 d136cfcb 2019-10-12 stsp echo ' 7' >> $testroot/stdout.expected
495 f69721c3 2019-10-21 stsp echo "+<<<<<<< merged change: commit $head_rev" \
496 f69721c3 2019-10-21 stsp >> $testroot/stdout.expected
497 d136cfcb 2019-10-12 stsp echo ' 33' >> $testroot/stdout.expected
498 f69721c3 2019-10-21 stsp echo "+||||||| 3-way merge base: commit $base_commit" \
499 f69721c3 2019-10-21 stsp >> $testroot/stdout.expected
500 d136cfcb 2019-10-12 stsp echo '+8' >> $testroot/stdout.expected
501 d136cfcb 2019-10-12 stsp echo '+=======' >> $testroot/stdout.expected
502 d136cfcb 2019-10-12 stsp echo '+88' >> $testroot/stdout.expected
503 f69721c3 2019-10-21 stsp echo '+>>>>>>>' >> $testroot/stdout.expected
504 95adcdca 2019-03-27 stsp
505 95adcdca 2019-03-27 stsp (cd $testroot/wt && got diff > $testroot/stdout)
506 95adcdca 2019-03-27 stsp
507 8d301dd9 2019-05-14 stsp cmp -s $testroot/stdout.expected $testroot/stdout
508 fc414659 2022-04-16 thomas ret=$?
509 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
510 95adcdca 2019-03-27 stsp diff -u $testroot/stdout.expected $testroot/stdout
511 95adcdca 2019-03-27 stsp fi
512 95adcdca 2019-03-27 stsp test_done "$testroot" "$ret"
513 95adcdca 2019-03-27 stsp }
514 95adcdca 2019-03-27 stsp
515 f6cae3ed 2020-09-13 naddy test_diff_tag() {
516 d24820bf 2019-08-11 stsp local testroot=`test_init diff_tag`
517 d24820bf 2019-08-11 stsp local commit_id0=`git_show_head $testroot/repo`
518 d24820bf 2019-08-11 stsp local tag1=1.0.0
519 d24820bf 2019-08-11 stsp local tag2=2.0.0
520 d24820bf 2019-08-11 stsp
521 d24820bf 2019-08-11 stsp echo "modified alpha" > $testroot/repo/alpha
522 d24820bf 2019-08-11 stsp git_commit $testroot/repo -m "changed alpha"
523 d24820bf 2019-08-11 stsp local commit_id1=`git_show_head $testroot/repo`
524 d24820bf 2019-08-11 stsp
525 d24820bf 2019-08-11 stsp (cd $testroot/repo && git tag -m "test" $tag1)
526 d24820bf 2019-08-11 stsp
527 d24820bf 2019-08-11 stsp echo "new file" > $testroot/repo/new
528 d24820bf 2019-08-11 stsp (cd $testroot/repo && git add new)
529 d24820bf 2019-08-11 stsp git_commit $testroot/repo -m "new file"
530 d24820bf 2019-08-11 stsp local commit_id2=`git_show_head $testroot/repo`
531 d24820bf 2019-08-11 stsp
532 d24820bf 2019-08-11 stsp (cd $testroot/repo && git tag -m "test" $tag2)
533 562580bc 2020-01-14 stsp
534 562580bc 2020-01-14 stsp echo "diff $commit_id0 refs/tags/$tag1" > $testroot/stdout.expected
535 9b4458b4 2022-06-26 thomas echo "commit - $commit_id0" >> $testroot/stdout.expected
536 9b4458b4 2022-06-26 thomas echo "commit + $commit_id1" >> $testroot/stdout.expected
537 562580bc 2020-01-14 stsp echo -n 'blob - ' >> $testroot/stdout.expected
538 562580bc 2020-01-14 stsp got tree -r $testroot/repo -c $commit_id0 -i | grep 'alpha$' | \
539 562580bc 2020-01-14 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
540 562580bc 2020-01-14 stsp echo -n 'blob + ' >> $testroot/stdout.expected
541 562580bc 2020-01-14 stsp got tree -r $testroot/repo -i | grep 'alpha$' | cut -d' ' -f 1 \
542 562580bc 2020-01-14 stsp >> $testroot/stdout.expected
543 562580bc 2020-01-14 stsp echo '--- alpha' >> $testroot/stdout.expected
544 562580bc 2020-01-14 stsp echo '+++ alpha' >> $testroot/stdout.expected
545 562580bc 2020-01-14 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
546 562580bc 2020-01-14 stsp echo '-alpha' >> $testroot/stdout.expected
547 562580bc 2020-01-14 stsp echo '+modified alpha' >> $testroot/stdout.expected
548 562580bc 2020-01-14 stsp
549 562580bc 2020-01-14 stsp got diff -r $testroot/repo $commit_id0 $tag1 > $testroot/stdout
550 562580bc 2020-01-14 stsp cmp -s $testroot/stdout.expected $testroot/stdout
551 fc414659 2022-04-16 thomas ret=$?
552 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
553 562580bc 2020-01-14 stsp diff -u $testroot/stdout.expected $testroot/stdout
554 562580bc 2020-01-14 stsp test_done "$testroot" "$ret"
555 562580bc 2020-01-14 stsp return 1
556 562580bc 2020-01-14 stsp fi
557 562580bc 2020-01-14 stsp
558 562580bc 2020-01-14 stsp echo "diff refs/tags/$tag1 refs/tags/$tag2" > $testroot/stdout.expected
559 9b4458b4 2022-06-26 thomas echo "commit - $commit_id1" >> $testroot/stdout.expected
560 9b4458b4 2022-06-26 thomas echo "commit + $commit_id2" >> $testroot/stdout.expected
561 562580bc 2020-01-14 stsp echo "blob - /dev/null" >> $testroot/stdout.expected
562 562580bc 2020-01-14 stsp echo -n 'blob + ' >> $testroot/stdout.expected
563 562580bc 2020-01-14 stsp got tree -r $testroot/repo -i -c $commit_id2 | grep 'new$' | \
564 562580bc 2020-01-14 stsp cut -d' ' -f 1 | tr -d '\n' >> $testroot/stdout.expected
565 562580bc 2020-01-14 stsp echo " (mode 644)" >> $testroot/stdout.expected
566 562580bc 2020-01-14 stsp echo '--- /dev/null' >> $testroot/stdout.expected
567 562580bc 2020-01-14 stsp echo '+++ new' >> $testroot/stdout.expected
568 562580bc 2020-01-14 stsp echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
569 562580bc 2020-01-14 stsp echo '+new file' >> $testroot/stdout.expected
570 d24820bf 2019-08-11 stsp
571 562580bc 2020-01-14 stsp got diff -r $testroot/repo $tag1 $tag2 > $testroot/stdout
572 562580bc 2020-01-14 stsp cmp -s $testroot/stdout.expected $testroot/stdout
573 fc414659 2022-04-16 thomas ret=$?
574 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
575 562580bc 2020-01-14 stsp diff -u $testroot/stdout.expected $testroot/stdout
576 562580bc 2020-01-14 stsp fi
577 562580bc 2020-01-14 stsp test_done "$testroot" "$ret"
578 562580bc 2020-01-14 stsp }
579 562580bc 2020-01-14 stsp
580 f6cae3ed 2020-09-13 naddy test_diff_lightweight_tag() {
581 562580bc 2020-01-14 stsp local testroot=`test_init diff_tag`
582 562580bc 2020-01-14 stsp local commit_id0=`git_show_head $testroot/repo`
583 562580bc 2020-01-14 stsp local tag1=1.0.0
584 562580bc 2020-01-14 stsp local tag2=2.0.0
585 562580bc 2020-01-14 stsp
586 562580bc 2020-01-14 stsp echo "modified alpha" > $testroot/repo/alpha
587 562580bc 2020-01-14 stsp git_commit $testroot/repo -m "changed alpha"
588 562580bc 2020-01-14 stsp local commit_id1=`git_show_head $testroot/repo`
589 562580bc 2020-01-14 stsp
590 562580bc 2020-01-14 stsp (cd $testroot/repo && git tag $tag1)
591 562580bc 2020-01-14 stsp
592 562580bc 2020-01-14 stsp echo "new file" > $testroot/repo/new
593 562580bc 2020-01-14 stsp (cd $testroot/repo && git add new)
594 562580bc 2020-01-14 stsp git_commit $testroot/repo -m "new file"
595 562580bc 2020-01-14 stsp local commit_id2=`git_show_head $testroot/repo`
596 562580bc 2020-01-14 stsp
597 562580bc 2020-01-14 stsp (cd $testroot/repo && git tag $tag2)
598 562580bc 2020-01-14 stsp
599 d24820bf 2019-08-11 stsp echo "diff $commit_id0 refs/tags/$tag1" > $testroot/stdout.expected
600 9b4458b4 2022-06-26 thomas echo "commit - $commit_id0" >> $testroot/stdout.expected
601 9b4458b4 2022-06-26 thomas echo "commit + $commit_id1" >> $testroot/stdout.expected
602 d24820bf 2019-08-11 stsp echo -n 'blob - ' >> $testroot/stdout.expected
603 d24820bf 2019-08-11 stsp got tree -r $testroot/repo -c $commit_id0 -i | grep 'alpha$' | \
604 d24820bf 2019-08-11 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
605 d24820bf 2019-08-11 stsp echo -n 'blob + ' >> $testroot/stdout.expected
606 d24820bf 2019-08-11 stsp got tree -r $testroot/repo -i | grep 'alpha$' | cut -d' ' -f 1 \
607 d24820bf 2019-08-11 stsp >> $testroot/stdout.expected
608 d24820bf 2019-08-11 stsp echo '--- alpha' >> $testroot/stdout.expected
609 d24820bf 2019-08-11 stsp echo '+++ alpha' >> $testroot/stdout.expected
610 d24820bf 2019-08-11 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
611 d24820bf 2019-08-11 stsp echo '-alpha' >> $testroot/stdout.expected
612 d24820bf 2019-08-11 stsp echo '+modified alpha' >> $testroot/stdout.expected
613 d24820bf 2019-08-11 stsp
614 d24820bf 2019-08-11 stsp got diff -r $testroot/repo $commit_id0 $tag1 > $testroot/stdout
615 d24820bf 2019-08-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
616 fc414659 2022-04-16 thomas ret=$?
617 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
618 d24820bf 2019-08-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
619 d24820bf 2019-08-11 stsp test_done "$testroot" "$ret"
620 d24820bf 2019-08-11 stsp return 1
621 d24820bf 2019-08-11 stsp fi
622 d24820bf 2019-08-11 stsp
623 d24820bf 2019-08-11 stsp echo "diff refs/tags/$tag1 refs/tags/$tag2" > $testroot/stdout.expected
624 9b4458b4 2022-06-26 thomas echo "commit - $commit_id1" >> $testroot/stdout.expected
625 9b4458b4 2022-06-26 thomas echo "commit + $commit_id2" >> $testroot/stdout.expected
626 d24820bf 2019-08-11 stsp echo "blob - /dev/null" >> $testroot/stdout.expected
627 d24820bf 2019-08-11 stsp echo -n 'blob + ' >> $testroot/stdout.expected
628 d24820bf 2019-08-11 stsp got tree -r $testroot/repo -i -c $commit_id2 | grep 'new$' | \
629 46f68b20 2019-10-19 stsp cut -d' ' -f 1 | tr -d '\n' >> $testroot/stdout.expected
630 46f68b20 2019-10-19 stsp echo " (mode 644)" >> $testroot/stdout.expected
631 d24820bf 2019-08-11 stsp echo '--- /dev/null' >> $testroot/stdout.expected
632 d24820bf 2019-08-11 stsp echo '+++ new' >> $testroot/stdout.expected
633 d24820bf 2019-08-11 stsp echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
634 d24820bf 2019-08-11 stsp echo '+new file' >> $testroot/stdout.expected
635 d24820bf 2019-08-11 stsp
636 d24820bf 2019-08-11 stsp got diff -r $testroot/repo $tag1 $tag2 > $testroot/stdout
637 d24820bf 2019-08-11 stsp cmp -s $testroot/stdout.expected $testroot/stdout
638 fc414659 2022-04-16 thomas ret=$?
639 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
640 d24820bf 2019-08-11 stsp diff -u $testroot/stdout.expected $testroot/stdout
641 d24820bf 2019-08-11 stsp fi
642 d24820bf 2019-08-11 stsp test_done "$testroot" "$ret"
643 d24820bf 2019-08-11 stsp }
644 d24820bf 2019-08-11 stsp
645 f6cae3ed 2020-09-13 naddy test_diff_ignore_whitespace() {
646 63035f9f 2019-10-06 stsp local testroot=`test_init diff_ignore_whitespace`
647 63035f9f 2019-10-06 stsp local commit_id0=`git_show_head $testroot/repo`
648 63035f9f 2019-10-06 stsp
649 63035f9f 2019-10-06 stsp got checkout $testroot/repo $testroot/wt > /dev/null
650 fc414659 2022-04-16 thomas ret=$?
651 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
652 63035f9f 2019-10-06 stsp test_done "$testroot" "$ret"
653 63035f9f 2019-10-06 stsp return 1
654 63035f9f 2019-10-06 stsp fi
655 63035f9f 2019-10-06 stsp
656 63035f9f 2019-10-06 stsp echo "alpha " > $testroot/wt/alpha
657 63035f9f 2019-10-06 stsp
658 63035f9f 2019-10-06 stsp (cd $testroot/wt && got diff -w > $testroot/stdout)
659 63035f9f 2019-10-06 stsp
660 9b4458b4 2022-06-26 thomas echo "diff $testroot/wt" > $testroot/stdout.expected
661 9b4458b4 2022-06-26 thomas echo "commit - $commit_id0" >> $testroot/stdout.expected
662 9b4458b4 2022-06-26 thomas echo "path + $testroot/wt" >> $testroot/stdout.expected
663 63035f9f 2019-10-06 stsp echo -n 'blob - ' >> $testroot/stdout.expected
664 63035f9f 2019-10-06 stsp got tree -r $testroot/repo -c $commit_id0 -i | grep 'alpha$' | \
665 63035f9f 2019-10-06 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
666 63035f9f 2019-10-06 stsp echo 'file + alpha' >> $testroot/stdout.expected
667 63035f9f 2019-10-06 stsp
668 63035f9f 2019-10-06 stsp cmp -s $testroot/stdout.expected $testroot/stdout
669 fc414659 2022-04-16 thomas ret=$?
670 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
671 63035f9f 2019-10-06 stsp diff -u $testroot/stdout.expected $testroot/stdout
672 e7303626 2020-05-14 stsp fi
673 e7303626 2020-05-14 stsp test_done "$testroot" "$ret"
674 e7303626 2020-05-14 stsp }
675 e7303626 2020-05-14 stsp
676 f6cae3ed 2020-09-13 naddy test_diff_submodule_of_same_repo() {
677 e7303626 2020-05-14 stsp local testroot=`test_init diff_submodule_of_same_repo`
678 e7303626 2020-05-14 stsp
679 e7303626 2020-05-14 stsp (cd $testroot && git clone -q repo repo2 >/dev/null)
680 e7303626 2020-05-14 stsp (cd $testroot/repo && git submodule -q add ../repo2)
681 e7303626 2020-05-14 stsp (cd $testroot/repo && git commit -q -m 'adding submodule')
682 e7303626 2020-05-14 stsp
683 e7303626 2020-05-14 stsp epsilon_id=$(got tree -r $testroot/repo -i | grep 'epsilon/$' | \
684 e7303626 2020-05-14 stsp cut -d ' ' -f 1)
685 e7303626 2020-05-14 stsp submodule_id=$(got tree -r $testroot/repo -i | grep 'repo2\$$' | \
686 e7303626 2020-05-14 stsp cut -d ' ' -f 1)
687 e7303626 2020-05-14 stsp
688 e7303626 2020-05-14 stsp # Attempt a (nonsensical) diff between a tree object and a submodule.
689 e7303626 2020-05-14 stsp # Currently fails with "wrong type of object" error
690 e7303626 2020-05-14 stsp got diff -r $testroot/repo $epsilon_id $submodule_id \
691 e7303626 2020-05-14 stsp > $testroot/stdout 2> $testroot/stderr
692 fc414659 2022-04-16 thomas ret=$?
693 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
694 e7303626 2020-05-14 stsp echo "diff command succeeded unexpectedly" >&2
695 e7303626 2020-05-14 stsp test_done "$testroot" "1"
696 e7303626 2020-05-14 stsp return 1
697 63035f9f 2019-10-06 stsp fi
698 e7303626 2020-05-14 stsp echo "got: wrong type of object" > $testroot/stderr.expected
699 e7303626 2020-05-14 stsp
700 e7303626 2020-05-14 stsp cmp -s $testroot/stderr.expected $testroot/stderr
701 fc414659 2022-04-16 thomas ret=$?
702 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
703 e7303626 2020-05-14 stsp diff -u $testroot/stderr.expected $testroot/stderr
704 e7303626 2020-05-14 stsp return 1
705 e7303626 2020-05-14 stsp fi
706 63035f9f 2019-10-06 stsp test_done "$testroot" "$ret"
707 63035f9f 2019-10-06 stsp }
708 39449a05 2020-07-23 stsp
709 f6cae3ed 2020-09-13 naddy test_diff_symlinks_in_work_tree() {
710 39449a05 2020-07-23 stsp local testroot=`test_init diff_symlinks_in_work_tree`
711 39449a05 2020-07-23 stsp
712 39449a05 2020-07-23 stsp (cd $testroot/repo && ln -s alpha alpha.link)
713 39449a05 2020-07-23 stsp (cd $testroot/repo && ln -s epsilon epsilon.link)
714 39449a05 2020-07-23 stsp (cd $testroot/repo && ln -s /etc/passwd passwd.link)
715 39449a05 2020-07-23 stsp (cd $testroot/repo && ln -s ../beta epsilon/beta.link)
716 39449a05 2020-07-23 stsp (cd $testroot/repo && ln -s nonexistent nonexistent.link)
717 39449a05 2020-07-23 stsp (cd $testroot/repo && ln -s .got/foo dotgotfoo.link)
718 39449a05 2020-07-23 stsp (cd $testroot/repo && git add .)
719 39449a05 2020-07-23 stsp git_commit $testroot/repo -m "add symlinks"
720 39449a05 2020-07-23 stsp local commit_id1=`git_show_head $testroot/repo`
721 39449a05 2020-07-23 stsp
722 39449a05 2020-07-23 stsp got checkout $testroot/repo $testroot/wt > /dev/null
723 fc414659 2022-04-16 thomas ret=$?
724 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
725 39449a05 2020-07-23 stsp test_done "$testroot" "$ret"
726 39449a05 2020-07-23 stsp return 1
727 39449a05 2020-07-23 stsp fi
728 39449a05 2020-07-23 stsp
729 39449a05 2020-07-23 stsp (cd $testroot/wt && ln -sf beta alpha.link)
730 dd6165e4 2021-09-21 thomas.ad (cd $testroot/wt && ln -sfT gamma epsilon.link)
731 39449a05 2020-07-23 stsp (cd $testroot/wt && ln -sf ../gamma/delta epsilon/beta.link)
732 39449a05 2020-07-23 stsp echo -n '.got/bar' > $testroot/wt/dotgotfoo.link
733 39449a05 2020-07-23 stsp (cd $testroot/wt && got rm nonexistent.link > /dev/null)
734 39449a05 2020-07-23 stsp (cd $testroot/wt && ln -sf epsilon/zeta zeta.link)
735 39449a05 2020-07-23 stsp (cd $testroot/wt && got add zeta.link > /dev/null)
736 39449a05 2020-07-23 stsp (cd $testroot/wt && got diff > $testroot/stdout)
737 63035f9f 2019-10-06 stsp
738 9b4458b4 2022-06-26 thomas echo "diff $testroot/wt" > $testroot/stdout.expected
739 9b4458b4 2022-06-26 thomas echo "commit - $commit_id1" >> $testroot/stdout.expected
740 9b4458b4 2022-06-26 thomas echo "path + $testroot/wt" >> $testroot/stdout.expected
741 39449a05 2020-07-23 stsp echo -n 'blob - ' >> $testroot/stdout.expected
742 39449a05 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id1 -i | \
743 39449a05 2020-07-23 stsp grep 'alpha.link@ -> alpha$' | \
744 39449a05 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
745 39449a05 2020-07-23 stsp echo 'file + alpha.link' >> $testroot/stdout.expected
746 39449a05 2020-07-23 stsp echo '--- alpha.link' >> $testroot/stdout.expected
747 39449a05 2020-07-23 stsp echo '+++ alpha.link' >> $testroot/stdout.expected
748 39449a05 2020-07-23 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
749 39449a05 2020-07-23 stsp echo '-alpha' >> $testroot/stdout.expected
750 39449a05 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
751 39449a05 2020-07-23 stsp echo '+beta' >> $testroot/stdout.expected
752 39449a05 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
753 39449a05 2020-07-23 stsp echo -n 'blob - ' >> $testroot/stdout.expected
754 39449a05 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id1 -i | \
755 39449a05 2020-07-23 stsp grep 'dotgotfoo.link@ -> .got/foo$' | \
756 39449a05 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
757 39449a05 2020-07-23 stsp echo 'file + dotgotfoo.link' >> $testroot/stdout.expected
758 39449a05 2020-07-23 stsp echo '--- dotgotfoo.link' >> $testroot/stdout.expected
759 39449a05 2020-07-23 stsp echo '+++ dotgotfoo.link' >> $testroot/stdout.expected
760 39449a05 2020-07-23 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
761 39449a05 2020-07-23 stsp echo '-.got/foo' >> $testroot/stdout.expected
762 39449a05 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
763 39449a05 2020-07-23 stsp echo '+.got/bar' >> $testroot/stdout.expected
764 39449a05 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
765 39449a05 2020-07-23 stsp echo -n 'blob - ' >> $testroot/stdout.expected
766 39449a05 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id1 -i epsilon | \
767 39449a05 2020-07-23 stsp grep 'beta.link@ -> ../beta$' | \
768 39449a05 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
769 39449a05 2020-07-23 stsp echo 'file + epsilon/beta.link' >> $testroot/stdout.expected
770 39449a05 2020-07-23 stsp echo '--- epsilon/beta.link' >> $testroot/stdout.expected
771 39449a05 2020-07-23 stsp echo '+++ epsilon/beta.link' >> $testroot/stdout.expected
772 39449a05 2020-07-23 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
773 39449a05 2020-07-23 stsp echo '-../beta' >> $testroot/stdout.expected
774 39449a05 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
775 39449a05 2020-07-23 stsp echo '+../gamma/delta' >> $testroot/stdout.expected
776 4135d7d0 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
777 4135d7d0 2020-07-23 stsp echo -n 'blob - ' >> $testroot/stdout.expected
778 4135d7d0 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id1 -i | \
779 4135d7d0 2020-07-23 stsp grep 'epsilon.link@ -> epsilon$' | \
780 4135d7d0 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
781 4135d7d0 2020-07-23 stsp echo 'file + epsilon.link' >> $testroot/stdout.expected
782 4135d7d0 2020-07-23 stsp echo '--- epsilon.link' >> $testroot/stdout.expected
783 4135d7d0 2020-07-23 stsp echo '+++ epsilon.link' >> $testroot/stdout.expected
784 4135d7d0 2020-07-23 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
785 4135d7d0 2020-07-23 stsp echo '-epsilon' >> $testroot/stdout.expected
786 39449a05 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
787 4135d7d0 2020-07-23 stsp echo '+gamma' >> $testroot/stdout.expected
788 4135d7d0 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
789 39449a05 2020-07-23 stsp echo -n 'blob - ' >> $testroot/stdout.expected
790 39449a05 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id1 -i | \
791 39449a05 2020-07-23 stsp grep 'nonexistent.link@ -> nonexistent$' | \
792 39449a05 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
793 39449a05 2020-07-23 stsp echo 'file + /dev/null' >> $testroot/stdout.expected
794 39449a05 2020-07-23 stsp echo '--- nonexistent.link' >> $testroot/stdout.expected
795 1cb46f00 2020-11-21 stsp echo '+++ /dev/null' >> $testroot/stdout.expected
796 39449a05 2020-07-23 stsp echo '@@ -1 +0,0 @@' >> $testroot/stdout.expected
797 39449a05 2020-07-23 stsp echo '-nonexistent' >> $testroot/stdout.expected
798 39449a05 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
799 39449a05 2020-07-23 stsp echo 'blob - /dev/null' >> $testroot/stdout.expected
800 39449a05 2020-07-23 stsp echo 'file + zeta.link' >> $testroot/stdout.expected
801 1cb46f00 2020-11-21 stsp echo '--- /dev/null' >> $testroot/stdout.expected
802 40dde666 2020-07-23 stsp echo '+++ zeta.link' >> $testroot/stdout.expected
803 40dde666 2020-07-23 stsp echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
804 40dde666 2020-07-23 stsp echo '+epsilon/zeta' >> $testroot/stdout.expected
805 40dde666 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
806 40dde666 2020-07-23 stsp
807 40dde666 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
808 fc414659 2022-04-16 thomas ret=$?
809 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
810 40dde666 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
811 40dde666 2020-07-23 stsp fi
812 40dde666 2020-07-23 stsp test_done "$testroot" "$ret"
813 40dde666 2020-07-23 stsp }
814 40dde666 2020-07-23 stsp
815 f6cae3ed 2020-09-13 naddy test_diff_symlinks_in_repo() {
816 40dde666 2020-07-23 stsp local testroot=`test_init diff_symlinks_in_repo`
817 40dde666 2020-07-23 stsp
818 40dde666 2020-07-23 stsp (cd $testroot/repo && ln -s alpha alpha.link)
819 40dde666 2020-07-23 stsp (cd $testroot/repo && ln -s epsilon epsilon.link)
820 40dde666 2020-07-23 stsp (cd $testroot/repo && ln -s /etc/passwd passwd.link)
821 40dde666 2020-07-23 stsp (cd $testroot/repo && ln -s ../beta epsilon/beta.link)
822 40dde666 2020-07-23 stsp (cd $testroot/repo && ln -s nonexistent nonexistent.link)
823 40dde666 2020-07-23 stsp (cd $testroot/repo && ln -s .got/foo dotgotfoo.link)
824 40dde666 2020-07-23 stsp (cd $testroot/repo && git add .)
825 40dde666 2020-07-23 stsp git_commit $testroot/repo -m "add symlinks"
826 40dde666 2020-07-23 stsp local commit_id1=`git_show_head $testroot/repo`
827 40dde666 2020-07-23 stsp
828 40dde666 2020-07-23 stsp (cd $testroot/repo && ln -sf beta alpha.link)
829 dd6165e4 2021-09-21 thomas.ad (cd $testroot/repo && ln -sfT gamma epsilon.link)
830 40dde666 2020-07-23 stsp (cd $testroot/repo && ln -sf ../gamma/delta epsilon/beta.link)
831 40dde666 2020-07-23 stsp (cd $testroot/repo && ln -sf .got/bar $testroot/repo/dotgotfoo.link)
832 40dde666 2020-07-23 stsp (cd $testroot/repo && git rm -q nonexistent.link)
833 40dde666 2020-07-23 stsp (cd $testroot/repo && ln -sf epsilon/zeta zeta.link)
834 40dde666 2020-07-23 stsp (cd $testroot/repo && git add .)
835 40dde666 2020-07-23 stsp git_commit $testroot/repo -m "change symlinks"
836 40dde666 2020-07-23 stsp local commit_id2=`git_show_head $testroot/repo`
837 40dde666 2020-07-23 stsp
838 40dde666 2020-07-23 stsp got diff -r $testroot/repo $commit_id1 $commit_id2 > $testroot/stdout
839 40dde666 2020-07-23 stsp
840 40dde666 2020-07-23 stsp echo "diff $commit_id1 $commit_id2" > $testroot/stdout.expected
841 9b4458b4 2022-06-26 thomas echo "commit - $commit_id1" >> $testroot/stdout.expected
842 9b4458b4 2022-06-26 thomas echo "commit + $commit_id2" >> $testroot/stdout.expected
843 40dde666 2020-07-23 stsp echo -n 'blob - ' >> $testroot/stdout.expected
844 40dde666 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id1 -i | \
845 40dde666 2020-07-23 stsp grep 'alpha.link@ -> alpha$' | \
846 40dde666 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
847 40dde666 2020-07-23 stsp echo -n 'blob + ' >> $testroot/stdout.expected
848 40dde666 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id2 -i | \
849 40dde666 2020-07-23 stsp grep 'alpha.link@ -> beta$' | \
850 40dde666 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
851 40dde666 2020-07-23 stsp echo '--- alpha.link' >> $testroot/stdout.expected
852 40dde666 2020-07-23 stsp echo '+++ alpha.link' >> $testroot/stdout.expected
853 40dde666 2020-07-23 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
854 40dde666 2020-07-23 stsp echo '-alpha' >> $testroot/stdout.expected
855 40dde666 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
856 40dde666 2020-07-23 stsp echo '+beta' >> $testroot/stdout.expected
857 40dde666 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
858 40dde666 2020-07-23 stsp echo -n 'blob - ' >> $testroot/stdout.expected
859 40dde666 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id1 -i | \
860 40dde666 2020-07-23 stsp grep 'dotgotfoo.link@ -> .got/foo$' | \
861 40dde666 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
862 40dde666 2020-07-23 stsp echo -n 'blob + ' >> $testroot/stdout.expected
863 40dde666 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id2 -i | \
864 40dde666 2020-07-23 stsp grep 'dotgotfoo.link@ -> .got/bar$' | \
865 40dde666 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
866 40dde666 2020-07-23 stsp echo '--- dotgotfoo.link' >> $testroot/stdout.expected
867 40dde666 2020-07-23 stsp echo '+++ dotgotfoo.link' >> $testroot/stdout.expected
868 40dde666 2020-07-23 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
869 40dde666 2020-07-23 stsp echo '-.got/foo' >> $testroot/stdout.expected
870 40dde666 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
871 40dde666 2020-07-23 stsp echo '+.got/bar' >> $testroot/stdout.expected
872 40dde666 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
873 40dde666 2020-07-23 stsp echo -n 'blob - ' >> $testroot/stdout.expected
874 40dde666 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id1 -i epsilon | \
875 40dde666 2020-07-23 stsp grep 'beta.link@ -> ../beta$' | \
876 40dde666 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
877 40dde666 2020-07-23 stsp echo -n 'blob + ' >> $testroot/stdout.expected
878 40dde666 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id2 -i epsilon | \
879 40dde666 2020-07-23 stsp grep 'beta.link@ -> ../gamma/delta$' | \
880 40dde666 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
881 40dde666 2020-07-23 stsp echo '--- epsilon/beta.link' >> $testroot/stdout.expected
882 40dde666 2020-07-23 stsp echo '+++ epsilon/beta.link' >> $testroot/stdout.expected
883 40dde666 2020-07-23 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
884 40dde666 2020-07-23 stsp echo '-../beta' >> $testroot/stdout.expected
885 40dde666 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
886 40dde666 2020-07-23 stsp echo '+../gamma/delta' >> $testroot/stdout.expected
887 40dde666 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
888 40dde666 2020-07-23 stsp echo -n 'blob - ' >> $testroot/stdout.expected
889 40dde666 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id1 -i | \
890 40dde666 2020-07-23 stsp grep 'epsilon.link@ -> epsilon$' | \
891 40dde666 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
892 40dde666 2020-07-23 stsp echo -n 'blob + ' >> $testroot/stdout.expected
893 40dde666 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id2 -i | \
894 40dde666 2020-07-23 stsp grep 'epsilon.link@ -> gamma$' | \
895 40dde666 2020-07-23 stsp cut -d' ' -f 1 >> $testroot/stdout.expected
896 40dde666 2020-07-23 stsp echo '--- epsilon.link' >> $testroot/stdout.expected
897 40dde666 2020-07-23 stsp echo '+++ epsilon.link' >> $testroot/stdout.expected
898 40dde666 2020-07-23 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
899 40dde666 2020-07-23 stsp echo '-epsilon' >> $testroot/stdout.expected
900 40dde666 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
901 40dde666 2020-07-23 stsp echo '+gamma' >> $testroot/stdout.expected
902 40dde666 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
903 40dde666 2020-07-23 stsp echo -n 'blob - ' >> $testroot/stdout.expected
904 40dde666 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id1 -i | \
905 40dde666 2020-07-23 stsp grep 'nonexistent.link@ -> nonexistent$' | \
906 40dde666 2020-07-23 stsp cut -d' ' -f 1 | sed -e 's/$/ (mode 120000)/' \
907 40dde666 2020-07-23 stsp >> $testroot/stdout.expected
908 40dde666 2020-07-23 stsp echo 'blob + /dev/null' >> $testroot/stdout.expected
909 40dde666 2020-07-23 stsp echo '--- nonexistent.link' >> $testroot/stdout.expected
910 40dde666 2020-07-23 stsp echo '+++ /dev/null' >> $testroot/stdout.expected
911 40dde666 2020-07-23 stsp echo '@@ -1 +0,0 @@' >> $testroot/stdout.expected
912 40dde666 2020-07-23 stsp echo '-nonexistent' >> $testroot/stdout.expected
913 40dde666 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
914 40dde666 2020-07-23 stsp echo 'blob - /dev/null' >> $testroot/stdout.expected
915 40dde666 2020-07-23 stsp echo -n 'blob + ' >> $testroot/stdout.expected
916 40dde666 2020-07-23 stsp got tree -r $testroot/repo -c $commit_id2 -i | \
917 40dde666 2020-07-23 stsp grep 'zeta.link@ -> epsilon/zeta$' | \
918 40dde666 2020-07-23 stsp cut -d' ' -f 1 | sed -e 's/$/ (mode 120000)/' \
919 40dde666 2020-07-23 stsp >> $testroot/stdout.expected
920 40dde666 2020-07-23 stsp echo '--- /dev/null' >> $testroot/stdout.expected
921 39449a05 2020-07-23 stsp echo '+++ zeta.link' >> $testroot/stdout.expected
922 39449a05 2020-07-23 stsp echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
923 39449a05 2020-07-23 stsp echo '+epsilon/zeta' >> $testroot/stdout.expected
924 39449a05 2020-07-23 stsp echo '\ No newline at end of file' >> $testroot/stdout.expected
925 39449a05 2020-07-23 stsp
926 39449a05 2020-07-23 stsp cmp -s $testroot/stdout.expected $testroot/stdout
927 fc414659 2022-04-16 thomas ret=$?
928 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
929 39449a05 2020-07-23 stsp diff -u $testroot/stdout.expected $testroot/stdout
930 dffd0deb 2020-11-20 stsp fi
931 dffd0deb 2020-11-20 stsp test_done "$testroot" "$ret"
932 dffd0deb 2020-11-20 stsp }
933 dffd0deb 2020-11-20 stsp
934 dffd0deb 2020-11-20 stsp test_diff_binary_files() {
935 dffd0deb 2020-11-20 stsp local testroot=`test_init diff_binary_files`
936 dffd0deb 2020-11-20 stsp local head_rev=`git_show_head $testroot/repo`
937 dffd0deb 2020-11-20 stsp
938 dffd0deb 2020-11-20 stsp got checkout $testroot/repo $testroot/wt > /dev/null
939 fc414659 2022-04-16 thomas ret=$?
940 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
941 dffd0deb 2020-11-20 stsp test_done "$testroot" "$ret"
942 dffd0deb 2020-11-20 stsp return 1
943 dffd0deb 2020-11-20 stsp fi
944 dffd0deb 2020-11-20 stsp
945 dffd0deb 2020-11-20 stsp printf '\377\377\0\0\377\377\0\0' > $testroot/wt/foo
946 dffd0deb 2020-11-20 stsp (cd $testroot/wt && got add foo >/dev/null)
947 64453f7e 2020-11-21 stsp
948 9b4458b4 2022-06-26 thomas echo "diff $testroot/wt" > $testroot/stdout.expected
949 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
950 9b4458b4 2022-06-26 thomas echo "path + $testroot/wt" >> $testroot/stdout.expected
951 64453f7e 2020-11-21 stsp echo 'blob - /dev/null' >> $testroot/stdout.expected
952 64453f7e 2020-11-21 stsp echo 'file + foo' >> $testroot/stdout.expected
953 1cb46f00 2020-11-21 stsp echo "Binary files /dev/null and foo differ" \
954 1cb46f00 2020-11-21 stsp >> $testroot/stdout.expected
955 64453f7e 2020-11-21 stsp
956 64453f7e 2020-11-21 stsp (cd $testroot/wt && got diff > $testroot/stdout)
957 64453f7e 2020-11-21 stsp cmp -s $testroot/stdout.expected $testroot/stdout
958 fc414659 2022-04-16 thomas ret=$?
959 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
960 64453f7e 2020-11-21 stsp diff -a -u $testroot/stdout.expected $testroot/stdout
961 64453f7e 2020-11-21 stsp test_done "$testroot" "$ret"
962 64453f7e 2020-11-21 stsp return 1
963 64453f7e 2020-11-21 stsp fi
964 dffd0deb 2020-11-20 stsp
965 9b4458b4 2022-06-26 thomas echo "diff $testroot/wt" > $testroot/stdout.expected
966 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
967 9b4458b4 2022-06-26 thomas echo "path + $testroot/wt" >> $testroot/stdout.expected
968 dffd0deb 2020-11-20 stsp echo 'blob - /dev/null' >> $testroot/stdout.expected
969 dffd0deb 2020-11-20 stsp echo 'file + foo' >> $testroot/stdout.expected
970 1cb46f00 2020-11-21 stsp echo '--- /dev/null' >> $testroot/stdout.expected
971 dffd0deb 2020-11-20 stsp echo '+++ foo' >> $testroot/stdout.expected
972 dffd0deb 2020-11-20 stsp echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
973 dffd0deb 2020-11-20 stsp printf '+\377\377\0\0\377\377\0\0\n' >> $testroot/stdout.expected
974 578133c9 2020-11-28 naddy printf '\\ No newline at end of file\n' >> $testroot/stdout.expected
975 dffd0deb 2020-11-20 stsp
976 64453f7e 2020-11-21 stsp (cd $testroot/wt && got diff -a > $testroot/stdout)
977 dffd0deb 2020-11-20 stsp cmp -s $testroot/stdout.expected $testroot/stdout
978 fc414659 2022-04-16 thomas ret=$?
979 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
980 dffd0deb 2020-11-20 stsp diff -a -u $testroot/stdout.expected $testroot/stdout
981 dffd0deb 2020-11-20 stsp test_done "$testroot" "$ret"
982 dffd0deb 2020-11-20 stsp return 1
983 39449a05 2020-07-23 stsp fi
984 dffd0deb 2020-11-20 stsp
985 dffd0deb 2020-11-20 stsp (cd $testroot/wt && got commit -m 'add binary file' > /dev/null)
986 dffd0deb 2020-11-20 stsp local head_rev=`git_show_head $testroot/repo`
987 dffd0deb 2020-11-20 stsp
988 dffd0deb 2020-11-20 stsp printf '\377\200\0\0\377\200\0\0' > $testroot/wt/foo
989 dffd0deb 2020-11-20 stsp
990 9b4458b4 2022-06-26 thomas echo "diff $testroot/wt" > $testroot/stdout.expected
991 9b4458b4 2022-06-26 thomas echo "commit - $head_rev" >> $testroot/stdout.expected
992 9b4458b4 2022-06-26 thomas echo "path + $testroot/wt" >> $testroot/stdout.expected
993 dffd0deb 2020-11-20 stsp echo -n 'blob - ' >> $testroot/stdout.expected
994 dffd0deb 2020-11-20 stsp got tree -r $testroot/repo -i | grep 'foo$' | cut -d' ' -f 1 \
995 dffd0deb 2020-11-20 stsp >> $testroot/stdout.expected
996 dffd0deb 2020-11-20 stsp echo 'file + foo' >> $testroot/stdout.expected
997 dffd0deb 2020-11-20 stsp echo '--- foo' >> $testroot/stdout.expected
998 dffd0deb 2020-11-20 stsp echo '+++ foo' >> $testroot/stdout.expected
999 dffd0deb 2020-11-20 stsp echo '@@ -1 +1 @@' >> $testroot/stdout.expected
1000 578133c9 2020-11-28 naddy printf -- '-\377\377\0\0\377\377\0\0\n' >> $testroot/stdout.expected
1001 578133c9 2020-11-28 naddy printf '\\ No newline at end of file\n' >> $testroot/stdout.expected
1002 dffd0deb 2020-11-20 stsp printf '+\377\200\0\0\377\200\0\0\n' >> $testroot/stdout.expected
1003 578133c9 2020-11-28 naddy printf '\\ No newline at end of file\n' >> $testroot/stdout.expected
1004 dffd0deb 2020-11-20 stsp
1005 64453f7e 2020-11-21 stsp (cd $testroot/wt && got diff -a > $testroot/stdout)
1006 dffd0deb 2020-11-20 stsp cmp -s $testroot/stdout.expected $testroot/stdout
1007 fc414659 2022-04-16 thomas ret=$?
1008 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1009 dffd0deb 2020-11-20 stsp diff -a -u $testroot/stdout.expected $testroot/stdout
1010 cc8021af 2021-10-12 thomas fi
1011 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1012 cc8021af 2021-10-12 thomas }
1013 cc8021af 2021-10-12 thomas
1014 cc8021af 2021-10-12 thomas test_diff_commits() {
1015 cc8021af 2021-10-12 thomas local testroot=`test_init diff_commits`
1016 cc8021af 2021-10-12 thomas local commit_id0=`git_show_head $testroot/repo`
1017 cc8021af 2021-10-12 thomas alpha_id0=`get_blob_id $testroot/repo "" alpha`
1018 cc8021af 2021-10-12 thomas beta_id0=`get_blob_id $testroot/repo "" beta`
1019 cc8021af 2021-10-12 thomas
1020 cc8021af 2021-10-12 thomas got checkout $testroot/repo $testroot/wt > /dev/null
1021 fc414659 2022-04-16 thomas ret=$?
1022 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1023 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1024 cc8021af 2021-10-12 thomas return 1
1025 cc8021af 2021-10-12 thomas fi
1026 cc8021af 2021-10-12 thomas
1027 cc8021af 2021-10-12 thomas echo "modified alpha" > $testroot/wt/alpha
1028 cc8021af 2021-10-12 thomas (cd $testroot/wt && got rm beta >/dev/null)
1029 cc8021af 2021-10-12 thomas echo "new file" > $testroot/wt/new
1030 cc8021af 2021-10-12 thomas (cd $testroot/wt && got add new >/dev/null)
1031 cc8021af 2021-10-12 thomas (cd $testroot/wt && got commit -m 'committing changes' >/dev/null)
1032 cc8021af 2021-10-12 thomas local commit_id1=`git_show_head $testroot/repo`
1033 cc8021af 2021-10-12 thomas
1034 cc8021af 2021-10-12 thomas alpha_id1=`get_blob_id $testroot/repo "" alpha`
1035 cc8021af 2021-10-12 thomas new_id1=`get_blob_id $testroot/repo "" new`
1036 cc8021af 2021-10-12 thomas
1037 cc8021af 2021-10-12 thomas echo "diff $commit_id0 refs/heads/master" > $testroot/stdout.expected
1038 9b4458b4 2022-06-26 thomas echo "commit - $commit_id0" >> $testroot/stdout.expected
1039 9b4458b4 2022-06-26 thomas echo "commit + $commit_id1" >> $testroot/stdout.expected
1040 cc8021af 2021-10-12 thomas echo "blob - $alpha_id0" >> $testroot/stdout.expected
1041 cc8021af 2021-10-12 thomas echo "blob + $alpha_id1" >> $testroot/stdout.expected
1042 cc8021af 2021-10-12 thomas echo '--- alpha' >> $testroot/stdout.expected
1043 cc8021af 2021-10-12 thomas echo '+++ alpha' >> $testroot/stdout.expected
1044 cc8021af 2021-10-12 thomas echo '@@ -1 +1 @@' >> $testroot/stdout.expected
1045 cc8021af 2021-10-12 thomas echo '-alpha' >> $testroot/stdout.expected
1046 cc8021af 2021-10-12 thomas echo '+modified alpha' >> $testroot/stdout.expected
1047 cc8021af 2021-10-12 thomas echo "blob - $beta_id0 (mode 644)" >> $testroot/stdout.expected
1048 cc8021af 2021-10-12 thomas echo 'blob + /dev/null' >> $testroot/stdout.expected
1049 cc8021af 2021-10-12 thomas echo '--- beta' >> $testroot/stdout.expected
1050 cc8021af 2021-10-12 thomas echo '+++ /dev/null' >> $testroot/stdout.expected
1051 cc8021af 2021-10-12 thomas echo '@@ -1 +0,0 @@' >> $testroot/stdout.expected
1052 cc8021af 2021-10-12 thomas echo '-beta' >> $testroot/stdout.expected
1053 cc8021af 2021-10-12 thomas echo 'blob - /dev/null' >> $testroot/stdout.expected
1054 cc8021af 2021-10-12 thomas echo "blob + $new_id1 (mode 644)" >> $testroot/stdout.expected
1055 cc8021af 2021-10-12 thomas echo '--- /dev/null' >> $testroot/stdout.expected
1056 cc8021af 2021-10-12 thomas echo '+++ new' >> $testroot/stdout.expected
1057 cc8021af 2021-10-12 thomas echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
1058 cc8021af 2021-10-12 thomas echo '+new file' >> $testroot/stdout.expected
1059 cc8021af 2021-10-12 thomas
1060 cc8021af 2021-10-12 thomas (cd $testroot/wt && got diff -c master > $testroot/stdout)
1061 cc8021af 2021-10-12 thomas cmp -s $testroot/stdout.expected $testroot/stdout
1062 fc414659 2022-04-16 thomas ret=$?
1063 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1064 cc8021af 2021-10-12 thomas diff -u $testroot/stdout.expected $testroot/stdout
1065 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1066 cc8021af 2021-10-12 thomas return 1
1067 cc8021af 2021-10-12 thomas fi
1068 cc8021af 2021-10-12 thomas
1069 cc8021af 2021-10-12 thomas # same diff with explicit parent commit ID
1070 cc8021af 2021-10-12 thomas (cd $testroot/wt && got diff -c $commit_id0 -c master \
1071 cc8021af 2021-10-12 thomas > $testroot/stdout)
1072 cc8021af 2021-10-12 thomas cmp -s $testroot/stdout.expected $testroot/stdout
1073 fc414659 2022-04-16 thomas ret=$?
1074 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1075 cc8021af 2021-10-12 thomas diff -u $testroot/stdout.expected $testroot/stdout
1076 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1077 cc8021af 2021-10-12 thomas return 1
1078 cc8021af 2021-10-12 thomas fi
1079 cc8021af 2021-10-12 thomas
1080 cc8021af 2021-10-12 thomas # same diff with commit object IDs
1081 cc8021af 2021-10-12 thomas echo "diff $commit_id0 $commit_id1" > $testroot/stdout.expected
1082 9b4458b4 2022-06-26 thomas echo "commit - $commit_id0" >> $testroot/stdout.expected
1083 9b4458b4 2022-06-26 thomas echo "commit + $commit_id1" >> $testroot/stdout.expected
1084 cc8021af 2021-10-12 thomas echo "blob - $alpha_id0" >> $testroot/stdout.expected
1085 cc8021af 2021-10-12 thomas echo "blob + $alpha_id1" >> $testroot/stdout.expected
1086 cc8021af 2021-10-12 thomas echo '--- alpha' >> $testroot/stdout.expected
1087 cc8021af 2021-10-12 thomas echo '+++ alpha' >> $testroot/stdout.expected
1088 cc8021af 2021-10-12 thomas echo '@@ -1 +1 @@' >> $testroot/stdout.expected
1089 cc8021af 2021-10-12 thomas echo '-alpha' >> $testroot/stdout.expected
1090 cc8021af 2021-10-12 thomas echo '+modified alpha' >> $testroot/stdout.expected
1091 cc8021af 2021-10-12 thomas echo "blob - $beta_id0 (mode 644)" >> $testroot/stdout.expected
1092 cc8021af 2021-10-12 thomas echo 'blob + /dev/null' >> $testroot/stdout.expected
1093 cc8021af 2021-10-12 thomas echo '--- beta' >> $testroot/stdout.expected
1094 cc8021af 2021-10-12 thomas echo '+++ /dev/null' >> $testroot/stdout.expected
1095 cc8021af 2021-10-12 thomas echo '@@ -1 +0,0 @@' >> $testroot/stdout.expected
1096 cc8021af 2021-10-12 thomas echo '-beta' >> $testroot/stdout.expected
1097 cc8021af 2021-10-12 thomas echo 'blob - /dev/null' >> $testroot/stdout.expected
1098 cc8021af 2021-10-12 thomas echo "blob + $new_id1 (mode 644)" >> $testroot/stdout.expected
1099 cc8021af 2021-10-12 thomas echo '--- /dev/null' >> $testroot/stdout.expected
1100 cc8021af 2021-10-12 thomas echo '+++ new' >> $testroot/stdout.expected
1101 cc8021af 2021-10-12 thomas echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
1102 cc8021af 2021-10-12 thomas echo '+new file' >> $testroot/stdout.expected
1103 cc8021af 2021-10-12 thomas (cd $testroot/wt && got diff -c $commit_id0 -c $commit_id1 \
1104 cc8021af 2021-10-12 thomas > $testroot/stdout)
1105 cc8021af 2021-10-12 thomas cmp -s $testroot/stdout.expected $testroot/stdout
1106 fc414659 2022-04-16 thomas ret=$?
1107 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1108 cc8021af 2021-10-12 thomas diff -u $testroot/stdout.expected $testroot/stdout
1109 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1110 cc8021af 2021-10-12 thomas return 1
1111 cc8021af 2021-10-12 thomas fi
1112 cc8021af 2021-10-12 thomas
1113 cc8021af 2021-10-12 thomas # same diff, filtered by paths
1114 cc8021af 2021-10-12 thomas echo "diff $commit_id0 $commit_id1" > $testroot/stdout.expected
1115 9b4458b4 2022-06-26 thomas echo "commit - $commit_id0" >> $testroot/stdout.expected
1116 9b4458b4 2022-06-26 thomas echo "commit + $commit_id1" >> $testroot/stdout.expected
1117 cc8021af 2021-10-12 thomas echo "blob - $alpha_id0" >> $testroot/stdout.expected
1118 cc8021af 2021-10-12 thomas echo "blob + $alpha_id1" >> $testroot/stdout.expected
1119 cc8021af 2021-10-12 thomas echo '--- alpha' >> $testroot/stdout.expected
1120 cc8021af 2021-10-12 thomas echo '+++ alpha' >> $testroot/stdout.expected
1121 cc8021af 2021-10-12 thomas echo '@@ -1 +1 @@' >> $testroot/stdout.expected
1122 cc8021af 2021-10-12 thomas echo '-alpha' >> $testroot/stdout.expected
1123 cc8021af 2021-10-12 thomas echo '+modified alpha' >> $testroot/stdout.expected
1124 cc8021af 2021-10-12 thomas (cd $testroot/repo && got diff -c $commit_id0 -c $commit_id1 alpha \
1125 cc8021af 2021-10-12 thomas > $testroot/stdout)
1126 cc8021af 2021-10-12 thomas cmp -s $testroot/stdout.expected $testroot/stdout
1127 fc414659 2022-04-16 thomas ret=$?
1128 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1129 cc8021af 2021-10-12 thomas diff -u $testroot/stdout.expected $testroot/stdout
1130 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1131 cc8021af 2021-10-12 thomas return 1
1132 cc8021af 2021-10-12 thomas fi
1133 cc8021af 2021-10-12 thomas # same in a work tree
1134 cc8021af 2021-10-12 thomas (cd $testroot/wt && got diff -c $commit_id0 -c $commit_id1 alpha \
1135 cc8021af 2021-10-12 thomas > $testroot/stdout)
1136 cc8021af 2021-10-12 thomas cmp -s $testroot/stdout.expected $testroot/stdout
1137 fc414659 2022-04-16 thomas ret=$?
1138 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1139 cc8021af 2021-10-12 thomas diff -u $testroot/stdout.expected $testroot/stdout
1140 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1141 cc8021af 2021-10-12 thomas return 1
1142 dffd0deb 2020-11-20 stsp fi
1143 cc8021af 2021-10-12 thomas
1144 cc8021af 2021-10-12 thomas echo "diff $commit_id0 $commit_id1" > $testroot/stdout.expected
1145 9b4458b4 2022-06-26 thomas echo "commit - $commit_id0" >> $testroot/stdout.expected
1146 9b4458b4 2022-06-26 thomas echo "commit + $commit_id1" >> $testroot/stdout.expected
1147 cc8021af 2021-10-12 thomas echo "blob - $beta_id0 (mode 644)" >> $testroot/stdout.expected
1148 cc8021af 2021-10-12 thomas echo 'blob + /dev/null' >> $testroot/stdout.expected
1149 cc8021af 2021-10-12 thomas echo '--- beta' >> $testroot/stdout.expected
1150 cc8021af 2021-10-12 thomas echo '+++ /dev/null' >> $testroot/stdout.expected
1151 cc8021af 2021-10-12 thomas echo '@@ -1 +0,0 @@' >> $testroot/stdout.expected
1152 cc8021af 2021-10-12 thomas echo '-beta' >> $testroot/stdout.expected
1153 cc8021af 2021-10-12 thomas echo 'blob - /dev/null' >> $testroot/stdout.expected
1154 cc8021af 2021-10-12 thomas echo "blob + $new_id1 (mode 644)" >> $testroot/stdout.expected
1155 cc8021af 2021-10-12 thomas echo '--- /dev/null' >> $testroot/stdout.expected
1156 cc8021af 2021-10-12 thomas echo '+++ new' >> $testroot/stdout.expected
1157 cc8021af 2021-10-12 thomas echo '@@ -0,0 +1 @@' >> $testroot/stdout.expected
1158 cc8021af 2021-10-12 thomas echo '+new file' >> $testroot/stdout.expected
1159 cc8021af 2021-10-12 thomas (cd $testroot/repo && got diff -c $commit_id0 -c $commit_id1 \
1160 cc8021af 2021-10-12 thomas beta new > $testroot/stdout)
1161 cc8021af 2021-10-12 thomas cmp -s $testroot/stdout.expected $testroot/stdout
1162 fc414659 2022-04-16 thomas ret=$?
1163 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1164 cc8021af 2021-10-12 thomas diff -u $testroot/stdout.expected $testroot/stdout
1165 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1166 cc8021af 2021-10-12 thomas return 1
1167 cc8021af 2021-10-12 thomas fi
1168 cc8021af 2021-10-12 thomas
1169 cc8021af 2021-10-12 thomas # more than two -c options are not allowed
1170 cc8021af 2021-10-12 thomas (cd $testroot/repo && got diff -c $commit_id0 -c $commit_id1 -c foo \
1171 cc8021af 2021-10-12 thomas 2> $testroot/stderr)
1172 fc414659 2022-04-16 thomas ret=$?
1173 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
1174 cc8021af 2021-10-12 thomas echo "diff succeeded unexpectedly" >&2
1175 cc8021af 2021-10-12 thomas test_done "$testroot" "1"
1176 cc8021af 2021-10-12 thomas return 1
1177 cc8021af 2021-10-12 thomas fi
1178 cc8021af 2021-10-12 thomas echo "got: too many -c options used" > $testroot/stderr.expected
1179 cc8021af 2021-10-12 thomas cmp -s $testroot/stderr.expected $testroot/stderr
1180 fc414659 2022-04-16 thomas ret=$?
1181 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1182 cc8021af 2021-10-12 thomas diff -u $testroot/stderr.expected $testroot/stderr
1183 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1184 cc8021af 2021-10-12 thomas return 1
1185 cc8021af 2021-10-12 thomas fi
1186 cc8021af 2021-10-12 thomas
1187 cc8021af 2021-10-12 thomas # use of -c options implies a repository diff; use with -P is an error
1188 cc8021af 2021-10-12 thomas (cd $testroot/wt && got diff -c $commit_id0 -c $commit_id1 -P foo \
1189 cc8021af 2021-10-12 thomas 2> $testroot/stderr)
1190 fc414659 2022-04-16 thomas ret=$?
1191 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
1192 cc8021af 2021-10-12 thomas echo "diff succeeded unexpectedly" >&2
1193 cc8021af 2021-10-12 thomas test_done "$testroot" "1"
1194 cc8021af 2021-10-12 thomas return 1
1195 cc8021af 2021-10-12 thomas fi
1196 cc8021af 2021-10-12 thomas echo "got: -P option can only be used when diffing a work tree" \
1197 cc8021af 2021-10-12 thomas > $testroot/stderr.expected
1198 cc8021af 2021-10-12 thomas cmp -s $testroot/stderr.expected $testroot/stderr
1199 fc414659 2022-04-16 thomas ret=$?
1200 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1201 cc8021af 2021-10-12 thomas diff -u $testroot/stderr.expected $testroot/stderr
1202 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1203 cc8021af 2021-10-12 thomas return 1
1204 cc8021af 2021-10-12 thomas fi
1205 cc8021af 2021-10-12 thomas
1206 cc8021af 2021-10-12 thomas # use of -c options implies a repository diff; use with -s is an error
1207 cc8021af 2021-10-12 thomas (cd $testroot/wt && got diff -c $commit_id0 -c $commit_id1 -s foo \
1208 cc8021af 2021-10-12 thomas 2> $testroot/stderr)
1209 fc414659 2022-04-16 thomas ret=$?
1210 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
1211 cc8021af 2021-10-12 thomas echo "diff succeeded unexpectedly" >&2
1212 cc8021af 2021-10-12 thomas test_done "$testroot" "1"
1213 cc8021af 2021-10-12 thomas return 1
1214 cc8021af 2021-10-12 thomas fi
1215 cc8021af 2021-10-12 thomas echo "got: -s option can only be used when diffing a work tree" \
1216 cc8021af 2021-10-12 thomas > $testroot/stderr.expected
1217 cc8021af 2021-10-12 thomas cmp -s $testroot/stderr.expected $testroot/stderr
1218 fc414659 2022-04-16 thomas ret=$?
1219 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1220 cc8021af 2021-10-12 thomas diff -u $testroot/stderr.expected $testroot/stderr
1221 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1222 cc8021af 2021-10-12 thomas return 1
1223 cc8021af 2021-10-12 thomas fi
1224 cc8021af 2021-10-12 thomas
1225 cc8021af 2021-10-12 thomas # three arguments imply use of path filtering (repository case)
1226 cc8021af 2021-10-12 thomas (cd $testroot/repo && got diff $commit_id0 $commit_id1 foo \
1227 cc8021af 2021-10-12 thomas 2> $testroot/stderr)
1228 fc414659 2022-04-16 thomas ret=$?
1229 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
1230 cc8021af 2021-10-12 thomas echo "diff succeeded unexpectedly" >&2
1231 cc8021af 2021-10-12 thomas test_done "$testroot" "1"
1232 cc8021af 2021-10-12 thomas return 1
1233 cc8021af 2021-10-12 thomas fi
1234 cc8021af 2021-10-12 thomas echo "got: specified paths cannot be resolved: no got work tree found" \
1235 cc8021af 2021-10-12 thomas > $testroot/stderr.expected
1236 cc8021af 2021-10-12 thomas cmp -s $testroot/stderr.expected $testroot/stderr
1237 fc414659 2022-04-16 thomas ret=$?
1238 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1239 cc8021af 2021-10-12 thomas diff -u $testroot/stderr.expected $testroot/stderr
1240 cc8021af 2021-10-12 thomas test_done "$testroot" "$ret"
1241 cc8021af 2021-10-12 thomas return 1
1242 cc8021af 2021-10-12 thomas fi
1243 cc8021af 2021-10-12 thomas
1244 cc8021af 2021-10-12 thomas # three arguments imply use of path filtering (work tree case)
1245 f1417e9f 2021-10-12 thomas (cd $testroot/wt && got diff $commit_id0 master foo \
1246 cc8021af 2021-10-12 thomas 2> $testroot/stderr)
1247 fc414659 2022-04-16 thomas ret=$?
1248 fc414659 2022-04-16 thomas if [ $ret -eq 0 ]; then
1249 cc8021af 2021-10-12 thomas echo "diff succeeded unexpectedly" >&2
1250 cc8021af 2021-10-12 thomas test_done "$testroot" "1"
1251 cc8021af 2021-10-12 thomas return 1
1252 cc8021af 2021-10-12 thomas fi
1253 cc8021af 2021-10-12 thomas echo "got: $commit_id0: No such file or directory" \
1254 cc8021af 2021-10-12 thomas > $testroot/stderr.expected
1255 cc8021af 2021-10-12 thomas cmp -s $testroot/stderr.expected $testroot/stderr
1256 fc414659 2022-04-16 thomas ret=$?
1257 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1258 cc8021af 2021-10-12 thomas diff -u $testroot/stderr.expected $testroot/stderr
1259 cc8021af 2021-10-12 thomas fi
1260 39449a05 2020-07-23 stsp test_done "$testroot" "$ret"
1261 39449a05 2020-07-23 stsp }
1262 39449a05 2020-07-23 stsp
1263 47d17b68 2022-02-12 thomas test_diff_ignored_file() {
1264 47d17b68 2022-02-12 thomas local testroot=`test_init diff_ignored_file`
1265 47d17b68 2022-02-12 thomas
1266 47d17b68 2022-02-12 thomas got checkout $testroot/repo $testroot/wt > /dev/null
1267 47d17b68 2022-02-12 thomas ret=$?
1268 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1269 47d17b68 2022-02-12 thomas test_done "$testroot" "$ret"
1270 47d17b68 2022-02-12 thomas return 1
1271 47d17b68 2022-02-12 thomas fi
1272 47d17b68 2022-02-12 thomas
1273 47d17b68 2022-02-12 thomas echo 1 > $testroot/wt/number
1274 47d17b68 2022-02-12 thomas (cd $testroot/wt && got add number >/dev/null)
1275 47d17b68 2022-02-12 thomas (cd $testroot/wt && got commit -m 'add number' >/dev/null)
1276 47d17b68 2022-02-12 thomas
1277 47d17b68 2022-02-12 thomas echo "**/number" > $testroot/wt/.gitignore
1278 47d17b68 2022-02-12 thomas
1279 47d17b68 2022-02-12 thomas echo 2 > $testroot/wt/number
1280 47d17b68 2022-02-12 thomas (cd $testroot/wt && got diff number | sed '1,/^@@/d' > $testroot/stdout)
1281 47d17b68 2022-02-12 thomas
1282 47d17b68 2022-02-12 thomas echo "-1" > $testroot/stdout.expected
1283 47d17b68 2022-02-12 thomas echo "+2" >> $testroot/stdout.expected
1284 47d17b68 2022-02-12 thomas
1285 47d17b68 2022-02-12 thomas cmp -s $testroot/stdout.expected $testroot/stdout
1286 47d17b68 2022-02-12 thomas ret=$?
1287 fc414659 2022-04-16 thomas if [ $ret -ne 0 ]; then
1288 47d17b68 2022-02-12 thomas diff -u $testroot/stdout.expected $testroot/stdout
1289 47d17b68 2022-02-12 thomas fi
1290 47d17b68 2022-02-12 thomas test_done "$testroot" "$ret"
1291 47d17b68 2022-02-12 thomas }
1292 831297da 2022-07-26 thomas
1293 831297da 2022-07-26 thomas test_diff_crlf() {
1294 831297da 2022-07-26 thomas local testroot=`test_init diff_crlf`
1295 831297da 2022-07-26 thomas
1296 831297da 2022-07-26 thomas got checkout $testroot/repo $testroot/wt > /dev/null
1297 831297da 2022-07-26 thomas ret=$?
1298 831297da 2022-07-26 thomas if [ $ret -ne 0 ]; then
1299 831297da 2022-07-26 thomas test_done "$testroot" $ret
1300 831297da 2022-07-26 thomas return 1
1301 831297da 2022-07-26 thomas fi
1302 47d17b68 2022-02-12 thomas
1303 831297da 2022-07-26 thomas printf 'test\r\n' > $testroot/wt/crlf
1304 831297da 2022-07-26 thomas (cd $testroot/wt && got add crlf && got commit -m +crlf) >/dev/null
1305 831297da 2022-07-26 thomas ret=$?
1306 831297da 2022-07-26 thomas if [ $ret -ne 0 ]; then
1307 831297da 2022-07-26 thomas test_done "$testroot" $ret
1308 831297da 2022-07-26 thomas return 1
1309 831297da 2022-07-26 thomas fi
1310 831297da 2022-07-26 thomas
1311 831297da 2022-07-26 thomas printf 'test 2\r\n' > $testroot/wt/crlf
1312 831297da 2022-07-26 thomas (cd $testroot/wt && got diff | sed -n '/^---/,$p' > $testroot/stdout)
1313 831297da 2022-07-26 thomas cat <<EOF > $testroot/stdout.expected
1314 831297da 2022-07-26 thomas --- crlf
1315 831297da 2022-07-26 thomas +++ crlf
1316 831297da 2022-07-26 thomas @@ -1 +1 @@
1317 831297da 2022-07-26 thomas -test
1318 831297da 2022-07-26 thomas +test 2
1319 831297da 2022-07-26 thomas EOF
1320 831297da 2022-07-26 thomas
1321 831297da 2022-07-26 thomas cmp -s $testroot/stdout.expected $testroot/stdout
1322 831297da 2022-07-26 thomas ret=$?
1323 831297da 2022-07-26 thomas if [ $ret -ne 0 ]; then
1324 831297da 2022-07-26 thomas diff -u $testroot/stdout.expected $testroot/stdout
1325 831297da 2022-07-26 thomas fi
1326 831297da 2022-07-26 thomas test_done "$testroot" $ret
1327 831297da 2022-07-26 thomas }
1328 831297da 2022-07-26 thomas
1329 7fb414ae 2020-08-08 stsp test_parseargs "$@"
1330 95adcdca 2019-03-27 stsp run_test test_diff_basic
1331 95adcdca 2019-03-27 stsp run_test test_diff_shows_conflict
1332 d24820bf 2019-08-11 stsp run_test test_diff_tag
1333 562580bc 2020-01-14 stsp run_test test_diff_lightweight_tag
1334 63035f9f 2019-10-06 stsp run_test test_diff_ignore_whitespace
1335 e7303626 2020-05-14 stsp run_test test_diff_submodule_of_same_repo
1336 39449a05 2020-07-23 stsp run_test test_diff_symlinks_in_work_tree
1337 40dde666 2020-07-23 stsp run_test test_diff_symlinks_in_repo
1338 dffd0deb 2020-11-20 stsp run_test test_diff_binary_files
1339 cc8021af 2021-10-12 thomas run_test test_diff_commits
1340 47d17b68 2022-02-12 thomas run_test test_diff_ignored_file
1341 831297da 2022-07-26 thomas run_test test_diff_crlf