Blame


1 e9ce266e 2022-03-07 op #!/bin/sh
2 e9ce266e 2022-03-07 op #
3 e9ce266e 2022-03-07 op # Copyright (c) 2022 Omar Polo <op@openbsd.org>
4 e9ce266e 2022-03-07 op #
5 e9ce266e 2022-03-07 op # Permission to use, copy, modify, and distribute this software for any
6 e9ce266e 2022-03-07 op # purpose with or without fee is hereby granted, provided that the above
7 e9ce266e 2022-03-07 op # copyright notice and this permission notice appear in all copies.
8 e9ce266e 2022-03-07 op #
9 e9ce266e 2022-03-07 op # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 e9ce266e 2022-03-07 op # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 e9ce266e 2022-03-07 op # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 e9ce266e 2022-03-07 op # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 e9ce266e 2022-03-07 op # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 e9ce266e 2022-03-07 op # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 e9ce266e 2022-03-07 op # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 e9ce266e 2022-03-07 op
17 e9ce266e 2022-03-07 op . ./common.sh
18 e9ce266e 2022-03-07 op
19 e9ce266e 2022-03-07 op test_patch_simple_add_file() {
20 e9ce266e 2022-03-07 op local testroot=`test_init patch_simple_add_file`
21 e9ce266e 2022-03-07 op
22 e9ce266e 2022-03-07 op got checkout $testroot/repo $testroot/wt > /dev/null
23 e9ce266e 2022-03-07 op ret=$?
24 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
25 e9ce266e 2022-03-07 op test_done $testroot $ret
26 e9ce266e 2022-03-07 op return 1
27 e9ce266e 2022-03-07 op fi
28 e9ce266e 2022-03-07 op
29 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
30 e9ce266e 2022-03-07 op --- /dev/null
31 e9ce266e 2022-03-07 op +++ eta
32 e9ce266e 2022-03-07 op @@ -0,0 +1 @@
33 e9ce266e 2022-03-07 op +eta
34 e9ce266e 2022-03-07 op EOF
35 e9ce266e 2022-03-07 op
36 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) > $testroot/stdout
37 e9ce266e 2022-03-07 op ret=$?
38 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
39 e9ce266e 2022-03-07 op test_done $testroot $ret
40 e9ce266e 2022-03-07 op return 1
41 e9ce266e 2022-03-07 op fi
42 e9ce266e 2022-03-07 op
43 e9ce266e 2022-03-07 op echo "A eta" > $testroot/stdout.expected
44 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
45 e9ce266e 2022-03-07 op ret=$?
46 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
47 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
48 e9ce266e 2022-03-07 op test_done $testroot $ret
49 e9ce266e 2022-03-07 op return 1
50 e9ce266e 2022-03-07 op fi
51 e9ce266e 2022-03-07 op
52 e9ce266e 2022-03-07 op echo eta > $testroot/wt/eta.expected
53 e9ce266e 2022-03-07 op cmp -s $testroot/wt/eta.expected $testroot/wt/eta
54 e9ce266e 2022-03-07 op ret=$?
55 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
56 e9ce266e 2022-03-07 op diff -u $testroot/wt/eta.expected $testroot/wt/eta
57 e9ce266e 2022-03-07 op fi
58 e9ce266e 2022-03-07 op test_done $testroot $ret
59 e9ce266e 2022-03-07 op }
60 e9ce266e 2022-03-07 op
61 e9ce266e 2022-03-07 op test_patch_simple_rm_file() {
62 e9ce266e 2022-03-07 op local testroot=`test_init patch_simple_rm_file`
63 e9ce266e 2022-03-07 op
64 e9ce266e 2022-03-07 op got checkout $testroot/repo $testroot/wt > /dev/null
65 e9ce266e 2022-03-07 op ret=$?
66 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
67 e9ce266e 2022-03-07 op test_done $testroot $ret
68 e9ce266e 2022-03-07 op return 1
69 e9ce266e 2022-03-07 op fi
70 e9ce266e 2022-03-07 op
71 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
72 e9ce266e 2022-03-07 op --- alpha
73 e9ce266e 2022-03-07 op +++ /dev/null
74 e9ce266e 2022-03-07 op @@ -1 +0,0 @@
75 e9ce266e 2022-03-07 op -alpha
76 e9ce266e 2022-03-07 op EOF
77 e9ce266e 2022-03-07 op
78 e9ce266e 2022-03-07 op echo "D alpha" > $testroot/stdout.expected
79 e9ce266e 2022-03-07 op
80 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) > $testroot/stdout
81 e9ce266e 2022-03-07 op ret=$?
82 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
83 e9ce266e 2022-03-07 op test_done $testroot $ret
84 e9ce266e 2022-03-07 op return 1
85 e9ce266e 2022-03-07 op fi
86 e9ce266e 2022-03-07 op
87 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
88 e9ce266e 2022-03-07 op ret=$?
89 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
90 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
91 e9ce266e 2022-03-07 op test_done $testroot $ret
92 e9ce266e 2022-03-07 op return 1
93 e9ce266e 2022-03-07 op fi
94 e9ce266e 2022-03-07 op
95 e9ce266e 2022-03-07 op if [ -f $testroot/wt/alpha ]; then
96 e9ce266e 2022-03-07 op ret=1
97 e9ce266e 2022-03-07 op echo "alpha still exists!"
98 e9ce266e 2022-03-07 op fi
99 e9ce266e 2022-03-07 op test_done $testroot $ret
100 e9ce266e 2022-03-07 op }
101 e9ce266e 2022-03-07 op
102 e9ce266e 2022-03-07 op test_patch_simple_edit_file() {
103 e9ce266e 2022-03-07 op local testroot=`test_init patch_simple_edit_file`
104 e9ce266e 2022-03-07 op
105 e9ce266e 2022-03-07 op got checkout $testroot/repo $testroot/wt > /dev/null
106 e9ce266e 2022-03-07 op ret=$?
107 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
108 e9ce266e 2022-03-07 op test_done $testroot $ret
109 e9ce266e 2022-03-07 op return 1
110 e9ce266e 2022-03-07 op fi
111 e9ce266e 2022-03-07 op
112 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
113 e9ce266e 2022-03-07 op --- alpha
114 e9ce266e 2022-03-07 op +++ alpha
115 e9ce266e 2022-03-07 op @@ -1 +1 @@
116 e9ce266e 2022-03-07 op -alpha
117 e9ce266e 2022-03-07 op +alpha is my favourite character
118 e9ce266e 2022-03-07 op EOF
119 e9ce266e 2022-03-07 op
120 e9ce266e 2022-03-07 op echo "M alpha" > $testroot/stdout.expected
121 e9ce266e 2022-03-07 op
122 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) > $testroot/stdout
123 e9ce266e 2022-03-07 op ret=$?
124 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
125 e9ce266e 2022-03-07 op test_done $testroot $ret
126 e9ce266e 2022-03-07 op return 1
127 e9ce266e 2022-03-07 op fi
128 e9ce266e 2022-03-07 op
129 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
130 e9ce266e 2022-03-07 op ret=$?
131 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
132 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
133 e9ce266e 2022-03-07 op test_done $testroot $ret
134 e9ce266e 2022-03-07 op return 1
135 e9ce266e 2022-03-07 op fi
136 e9ce266e 2022-03-07 op
137 e9ce266e 2022-03-07 op echo 'alpha is my favourite character' > $testroot/wt/alpha.expected
138 e9ce266e 2022-03-07 op cmp -s $testroot/wt/alpha.expected $testroot/wt/alpha
139 e9ce266e 2022-03-07 op ret=$?
140 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
141 e9ce266e 2022-03-07 op diff -u $testroot/wt/alpha.expected $testroot/wt/alpha
142 e9ce266e 2022-03-07 op fi
143 e9ce266e 2022-03-07 op test_done $testroot $ret
144 e9ce266e 2022-03-07 op }
145 e9ce266e 2022-03-07 op
146 e9ce266e 2022-03-07 op test_patch_prepend_line() {
147 e9ce266e 2022-03-07 op local testroot=`test_init patch_prepend_line`
148 e9ce266e 2022-03-07 op
149 e9ce266e 2022-03-07 op got checkout $testroot/repo $testroot/wt > /dev/null
150 e9ce266e 2022-03-07 op ret=$?
151 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
152 e9ce266e 2022-03-07 op test_done $testroot $ret
153 e9ce266e 2022-03-07 op return 1
154 e9ce266e 2022-03-07 op fi
155 e9ce266e 2022-03-07 op
156 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
157 e9ce266e 2022-03-07 op --- alpha
158 e9ce266e 2022-03-07 op +++ alpha
159 e9ce266e 2022-03-07 op @@ -1 +1,2 @@
160 e9ce266e 2022-03-07 op +hatsuseno
161 e9ce266e 2022-03-07 op alpha
162 e9ce266e 2022-03-07 op EOF
163 e9ce266e 2022-03-07 op
164 e9ce266e 2022-03-07 op echo "M alpha" > $testroot/stdout.expected
165 e9ce266e 2022-03-07 op
166 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) > $testroot/stdout
167 e9ce266e 2022-03-07 op ret=$?
168 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
169 e9ce266e 2022-03-07 op test_done $testroot $ret
170 e9ce266e 2022-03-07 op return 1
171 e9ce266e 2022-03-07 op fi
172 e9ce266e 2022-03-07 op
173 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
174 e9ce266e 2022-03-07 op ret=$?
175 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
176 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
177 e9ce266e 2022-03-07 op test_done $testroot $ret
178 e9ce266e 2022-03-07 op return 1
179 e9ce266e 2022-03-07 op fi
180 e9ce266e 2022-03-07 op
181 e9ce266e 2022-03-07 op echo hatsuseno > $testroot/wt/alpha.expected
182 e9ce266e 2022-03-07 op echo alpha >> $testroot/wt/alpha.expected
183 e9ce266e 2022-03-07 op cmp -s $testroot/wt/alpha.expected $testroot/wt/alpha
184 e9ce266e 2022-03-07 op ret=$?
185 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
186 e9ce266e 2022-03-07 op diff -u $testroot/wt/alpha.expected $testroot/wt/alpha
187 e9ce266e 2022-03-07 op fi
188 e9ce266e 2022-03-07 op test_done $testroot $ret
189 e9ce266e 2022-03-07 op }
190 e9ce266e 2022-03-07 op
191 e9ce266e 2022-03-07 op test_patch_replace_line() {
192 e9ce266e 2022-03-07 op local testroot=`test_init patch_replace_line`
193 e9ce266e 2022-03-07 op
194 e9ce266e 2022-03-07 op got checkout $testroot/repo $testroot/wt > /dev/null
195 e9ce266e 2022-03-07 op ret=$?
196 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
197 e9ce266e 2022-03-07 op test_done $testroot $ret
198 e9ce266e 2022-03-07 op return 1
199 e9ce266e 2022-03-07 op fi
200 e9ce266e 2022-03-07 op
201 e9ce266e 2022-03-07 op jot 10 > $testroot/wt/numbers
202 e9ce266e 2022-03-07 op (cd $testroot/wt/ && got add numbers && got ci -m 'add numbers') \
203 e9ce266e 2022-03-07 op >/dev/null
204 e9ce266e 2022-03-07 op ret=$?
205 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
206 e9ce266e 2022-03-07 op test_done $testroot $ret
207 e9ce266e 2022-03-07 op return 1
208 e9ce266e 2022-03-07 op fi
209 e9ce266e 2022-03-07 op
210 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
211 e9ce266e 2022-03-07 op --- numbers
212 e9ce266e 2022-03-07 op +++ numbers
213 e9ce266e 2022-03-07 op @@ -3,7 +3,7 @@
214 e9ce266e 2022-03-07 op 3
215 e9ce266e 2022-03-07 op 4
216 e9ce266e 2022-03-07 op 5
217 e9ce266e 2022-03-07 op -6
218 e9ce266e 2022-03-07 op +foo
219 e9ce266e 2022-03-07 op 7
220 e9ce266e 2022-03-07 op 8
221 e9ce266e 2022-03-07 op 9
222 e9ce266e 2022-03-07 op EOF
223 e9ce266e 2022-03-07 op
224 e9ce266e 2022-03-07 op echo "M numbers" > $testroot/stdout.expected
225 e9ce266e 2022-03-07 op
226 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) > $testroot/stdout
227 e9ce266e 2022-03-07 op ret=$?
228 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
229 e9ce266e 2022-03-07 op test_done $testroot $ret
230 e9ce266e 2022-03-07 op return 1
231 e9ce266e 2022-03-07 op fi
232 e9ce266e 2022-03-07 op
233 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
234 e9ce266e 2022-03-07 op ret=$?
235 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
236 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
237 e9ce266e 2022-03-07 op test_done $testroot $ret
238 e9ce266e 2022-03-07 op return 1
239 e9ce266e 2022-03-07 op fi
240 e9ce266e 2022-03-07 op
241 e9ce266e 2022-03-07 op jot 10 | sed 's/6/foo/' > $testroot/wt/numbers.expected
242 e9ce266e 2022-03-07 op cmp -s $testroot/wt/numbers.expected $testroot/wt/numbers
243 e9ce266e 2022-03-07 op ret=$?
244 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
245 e9ce266e 2022-03-07 op diff -u $testroot/wt/numbers.expected $testroot/wt/numbers
246 e9ce266e 2022-03-07 op fi
247 e9ce266e 2022-03-07 op test_done $testroot $ret
248 e9ce266e 2022-03-07 op }
249 e9ce266e 2022-03-07 op
250 e9ce266e 2022-03-07 op test_patch_multiple_hunks() {
251 fd79e2e0 2022-03-08 op local testroot=`test_init patch_replace_multiple_hunks`
252 e9ce266e 2022-03-07 op
253 e9ce266e 2022-03-07 op got checkout $testroot/repo $testroot/wt > /dev/null
254 e9ce266e 2022-03-07 op ret=$?
255 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
256 e9ce266e 2022-03-07 op test_done $testroot $ret
257 e9ce266e 2022-03-07 op return 1
258 e9ce266e 2022-03-07 op fi
259 e9ce266e 2022-03-07 op
260 e9ce266e 2022-03-07 op jot 100 > $testroot/wt/numbers
261 e9ce266e 2022-03-07 op (cd $testroot/wt/ && got add numbers && got ci -m 'add numbers') \
262 e9ce266e 2022-03-07 op >/dev/null
263 e9ce266e 2022-03-07 op ret=$?
264 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
265 e9ce266e 2022-03-07 op test_done $testroot $ret
266 e9ce266e 2022-03-07 op return 1
267 e9ce266e 2022-03-07 op fi
268 e9ce266e 2022-03-07 op
269 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
270 e9ce266e 2022-03-07 op --- numbers
271 e9ce266e 2022-03-07 op +++ numbers
272 e9ce266e 2022-03-07 op @@ -3,7 +3,7 @@
273 e9ce266e 2022-03-07 op 3
274 e9ce266e 2022-03-07 op 4
275 e9ce266e 2022-03-07 op 5
276 e9ce266e 2022-03-07 op -6
277 e9ce266e 2022-03-07 op +foo
278 e9ce266e 2022-03-07 op 7
279 e9ce266e 2022-03-07 op 8
280 e9ce266e 2022-03-07 op 9
281 e9ce266e 2022-03-07 op @@ -57,7 +57,7 @@
282 e9ce266e 2022-03-07 op 57
283 e9ce266e 2022-03-07 op 58
284 e9ce266e 2022-03-07 op 59
285 e9ce266e 2022-03-07 op -60
286 e9ce266e 2022-03-07 op +foo foo
287 e9ce266e 2022-03-07 op 61
288 e9ce266e 2022-03-07 op 62
289 e9ce266e 2022-03-07 op 63
290 e9ce266e 2022-03-07 op @@ -98,3 +98,6 @@
291 e9ce266e 2022-03-07 op 98
292 e9ce266e 2022-03-07 op 99
293 e9ce266e 2022-03-07 op 100
294 e9ce266e 2022-03-07 op +101
295 e9ce266e 2022-03-07 op +102
296 e9ce266e 2022-03-07 op +...
297 e9ce266e 2022-03-07 op EOF
298 e9ce266e 2022-03-07 op
299 e9ce266e 2022-03-07 op echo "M numbers" > $testroot/stdout.expected
300 e9ce266e 2022-03-07 op
301 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) > $testroot/stdout
302 e9ce266e 2022-03-07 op ret=$?
303 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
304 e9ce266e 2022-03-07 op test_done $testroot $ret
305 e9ce266e 2022-03-07 op return 1
306 e9ce266e 2022-03-07 op fi
307 e9ce266e 2022-03-07 op
308 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
309 e9ce266e 2022-03-07 op ret=$?
310 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
311 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
312 e9ce266e 2022-03-07 op test_done $testroot $ret
313 e9ce266e 2022-03-07 op return 1
314 e9ce266e 2022-03-07 op fi
315 e9ce266e 2022-03-07 op
316 e9ce266e 2022-03-07 op jot 100 | sed -e 's/^6$/foo/' -e 's/^60$/foo foo/' \
317 e9ce266e 2022-03-07 op > $testroot/wt/numbers.expected
318 e9ce266e 2022-03-07 op echo "101" >> $testroot/wt/numbers.expected
319 e9ce266e 2022-03-07 op echo "102" >> $testroot/wt/numbers.expected
320 e9ce266e 2022-03-07 op echo "..." >> $testroot/wt/numbers.expected
321 e9ce266e 2022-03-07 op
322 e9ce266e 2022-03-07 op cmp -s $testroot/wt/numbers.expected $testroot/wt/numbers
323 e9ce266e 2022-03-07 op ret=$?
324 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
325 e9ce266e 2022-03-07 op diff -u $testroot/wt/numbers.expected $testroot/wt/numbers
326 e9ce266e 2022-03-07 op fi
327 e9ce266e 2022-03-07 op test_done $testroot $ret
328 e9ce266e 2022-03-07 op }
329 e9ce266e 2022-03-07 op
330 e9ce266e 2022-03-07 op test_patch_multiple_files() {
331 e9ce266e 2022-03-07 op local testroot=`test_init patch_multiple_files`
332 e9ce266e 2022-03-07 op
333 e9ce266e 2022-03-07 op got checkout $testroot/repo $testroot/wt > /dev/null
334 e9ce266e 2022-03-07 op ret=$?
335 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
336 e9ce266e 2022-03-07 op test_done $testroot $ret
337 e9ce266e 2022-03-07 op return 1
338 e9ce266e 2022-03-07 op fi
339 e9ce266e 2022-03-07 op
340 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
341 e9ce266e 2022-03-07 op --- alpha Mon Mar 7 19:02:07 2022
342 e9ce266e 2022-03-07 op +++ alpha Mon Mar 7 19:01:53 2022
343 e9ce266e 2022-03-07 op @@ -1 +1,3 @@
344 e9ce266e 2022-03-07 op +new
345 e9ce266e 2022-03-07 op alpha
346 e9ce266e 2022-03-07 op +available
347 e9ce266e 2022-03-07 op --- beta Mon Mar 7 19:02:11 2022
348 e9ce266e 2022-03-07 op +++ beta Mon Mar 7 19:01:46 2022
349 e9ce266e 2022-03-07 op @@ -1 +1,3 @@
350 e9ce266e 2022-03-07 op beta
351 e9ce266e 2022-03-07 op +was
352 e9ce266e 2022-03-07 op +improved
353 e9ce266e 2022-03-07 op --- gamma/delta Mon Mar 7 19:02:17 2022
354 e9ce266e 2022-03-07 op +++ gamma/delta Mon Mar 7 19:01:37 2022
355 e9ce266e 2022-03-07 op @@ -1 +1 @@
356 e9ce266e 2022-03-07 op -delta
357 e9ce266e 2022-03-07 op +delta new
358 e9ce266e 2022-03-07 op EOF
359 e9ce266e 2022-03-07 op
360 e9ce266e 2022-03-07 op echo "M alpha" > $testroot/stdout.expected
361 e9ce266e 2022-03-07 op echo "M beta" >> $testroot/stdout.expected
362 e9ce266e 2022-03-07 op echo "M gamma/delta" >> $testroot/stdout.expected
363 e9ce266e 2022-03-07 op
364 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) > $testroot/stdout
365 e9ce266e 2022-03-07 op ret=$?
366 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
367 fd79e2e0 2022-03-08 op test_done $testroot $ret
368 e9ce266e 2022-03-07 op return 1
369 e9ce266e 2022-03-07 op fi
370 e9ce266e 2022-03-07 op
371 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
372 e9ce266e 2022-03-07 op ret=$?
373 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
374 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
375 e9ce266e 2022-03-07 op test_done $testroot $ret
376 e9ce266e 2022-03-07 op return 1
377 e9ce266e 2022-03-07 op fi
378 e9ce266e 2022-03-07 op
379 e9ce266e 2022-03-07 op printf 'new\nalpha\navailable\n' > $testroot/wt/alpha.expected
380 e9ce266e 2022-03-07 op printf 'beta\nwas\nimproved\n' > $testroot/wt/beta.expected
381 e9ce266e 2022-03-07 op printf 'delta new\n' > $testroot/wt/gamma/delta.expected
382 e9ce266e 2022-03-07 op
383 e9ce266e 2022-03-07 op for f in alpha beta gamma/delta; do
384 e9ce266e 2022-03-07 op cmp -s $testroot/wt/$f.expected $testroot/wt/$f
385 e9ce266e 2022-03-07 op ret=$?
386 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
387 e9ce266e 2022-03-07 op diff -u $testroot/wt/$f.expected $testroot/wt/$f
388 e9ce266e 2022-03-07 op test_done $testroot $ret
389 e9ce266e 2022-03-07 op return 1
390 e9ce266e 2022-03-07 op fi
391 e9ce266e 2022-03-07 op done
392 e9ce266e 2022-03-07 op
393 e9ce266e 2022-03-07 op test_done $testroot 0
394 e9ce266e 2022-03-07 op }
395 e9ce266e 2022-03-07 op
396 e9ce266e 2022-03-07 op test_patch_dont_apply() {
397 e9ce266e 2022-03-07 op local testroot=`test_init patch_dont_apply`
398 e9ce266e 2022-03-07 op
399 e9ce266e 2022-03-07 op got checkout $testroot/repo $testroot/wt > /dev/null
400 e9ce266e 2022-03-07 op ret=$?
401 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
402 e9ce266e 2022-03-07 op test_done $testroot $ret
403 e9ce266e 2022-03-07 op return 1
404 e9ce266e 2022-03-07 op fi
405 e9ce266e 2022-03-07 op
406 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
407 e9ce266e 2022-03-07 op --- alpha
408 e9ce266e 2022-03-07 op +++ alpha
409 e9ce266e 2022-03-07 op @@ -1 +1,2 @@
410 e9ce266e 2022-03-07 op +hatsuseno
411 e9ce266e 2022-03-07 op alpha something
412 e9ce266e 2022-03-07 op EOF
413 e9ce266e 2022-03-07 op
414 e9ce266e 2022-03-07 op echo -n > $testroot/stdout.expected
415 e9ce266e 2022-03-07 op echo "got: patch doesn't apply" > $testroot/stderr.expected
416 e9ce266e 2022-03-07 op
417 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) \
418 e9ce266e 2022-03-07 op > $testroot/stdout \
419 e9ce266e 2022-03-07 op 2> $testroot/stderr
420 e9ce266e 2022-03-07 op ret=$?
421 bfbccd0a 2022-03-08 op if [ $ret -eq 0 ]; then # should fail
422 e9ce266e 2022-03-07 op test_done $testroot 1
423 e9ce266e 2022-03-07 op return 1
424 e9ce266e 2022-03-07 op fi
425 e9ce266e 2022-03-07 op
426 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
427 e9ce266e 2022-03-07 op ret=$?
428 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
429 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
430 e9ce266e 2022-03-07 op test_done $testroot $ret
431 e9ce266e 2022-03-07 op return 1
432 e9ce266e 2022-03-07 op fi
433 e9ce266e 2022-03-07 op
434 e9ce266e 2022-03-07 op cmp -s $testroot/stderr.expected $testroot/stderr
435 e9ce266e 2022-03-07 op ret=$?
436 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
437 e9ce266e 2022-03-07 op diff -u $testroot/stderr.expected $testroot/stderr
438 e9ce266e 2022-03-07 op test_done $testroot $ret
439 5b67f96e 2022-03-13 op return 1
440 5b67f96e 2022-03-13 op fi
441 5b67f96e 2022-03-13 op
442 5b67f96e 2022-03-13 op # try to delete a file with a patch that doesn't match
443 5b67f96e 2022-03-13 op jot 100 > $testroot/wt/numbers
444 5b67f96e 2022-03-13 op (cd $testroot/wt && got add numbers && got commit -m 'add numbers') \
445 5b67f96e 2022-03-13 op >/dev/null
446 5b67f96e 2022-03-13 op ret=$?
447 5b67f96e 2022-03-13 op if [ $ret -ne 0 ]; then
448 5b67f96e 2022-03-13 op test_done $testroot $ret
449 5b67f96e 2022-03-13 op return 1
450 5b67f96e 2022-03-13 op fi
451 5b67f96e 2022-03-13 op
452 5b67f96e 2022-03-13 op cat <<EOF > $testroot/wt/patch
453 5b67f96e 2022-03-13 op --- numbers
454 5b67f96e 2022-03-13 op +++ /dev/null
455 5b67f96e 2022-03-13 op @@ -1,9 +0,0 @@
456 5b67f96e 2022-03-13 op -1
457 5b67f96e 2022-03-13 op -2
458 5b67f96e 2022-03-13 op -3
459 5b67f96e 2022-03-13 op -4
460 5b67f96e 2022-03-13 op -5
461 5b67f96e 2022-03-13 op -6
462 5b67f96e 2022-03-13 op -7
463 5b67f96e 2022-03-13 op -8
464 5b67f96e 2022-03-13 op -9
465 5b67f96e 2022-03-13 op EOF
466 5b67f96e 2022-03-13 op
467 5b67f96e 2022-03-13 op (cd $testroot/wt && got patch patch) > /dev/null 2> $testroot/stderr
468 5b67f96e 2022-03-13 op ret=$?
469 5b67f96e 2022-03-13 op if [ $ret -eq 0 ]; then # should fail
470 5b67f96e 2022-03-13 op test_done $testroot 1
471 e9ce266e 2022-03-07 op return 1
472 e9ce266e 2022-03-07 op fi
473 e9ce266e 2022-03-07 op
474 5b67f96e 2022-03-13 op echo "got: patch doesn't apply" > $testroot/stderr.expected
475 5b67f96e 2022-03-13 op cmp -s $testroot/stderr.expected $testroot/stderr
476 5b67f96e 2022-03-13 op ret=$?
477 5b67f96e 2022-03-13 op if [ $ret -ne 0 ]; then
478 5b67f96e 2022-03-13 op diff -u $testroot/stderr.expected $testroot/stderr
479 5b67f96e 2022-03-13 op fi
480 e9ce266e 2022-03-07 op test_done $testroot $ret
481 e9ce266e 2022-03-07 op }
482 e9ce266e 2022-03-07 op
483 e9ce266e 2022-03-07 op test_patch_malformed() {
484 e9ce266e 2022-03-07 op local testroot=`test_init patch_malformed`
485 e9ce266e 2022-03-07 op
486 e9ce266e 2022-03-07 op got checkout $testroot/repo $testroot/wt > /dev/null
487 e9ce266e 2022-03-07 op ret=$?
488 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
489 e9ce266e 2022-03-07 op test_done $testroot $ret
490 e9ce266e 2022-03-07 op return 1
491 e9ce266e 2022-03-07 op fi
492 e9ce266e 2022-03-07 op
493 e9ce266e 2022-03-07 op # missing "@@"
494 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
495 e9ce266e 2022-03-07 op --- alpha
496 e9ce266e 2022-03-07 op +++ alpha
497 e9ce266e 2022-03-07 op @@ -1 +1,2
498 e9ce266e 2022-03-07 op +hatsuseno
499 e9ce266e 2022-03-07 op alpha
500 e9ce266e 2022-03-07 op EOF
501 e9ce266e 2022-03-07 op
502 e9ce266e 2022-03-07 op echo -n > $testroot/stdout.expected
503 e9ce266e 2022-03-07 op echo "got: malformed patch" > $testroot/stderr.expected
504 e9ce266e 2022-03-07 op
505 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) \
506 e9ce266e 2022-03-07 op > $testroot/stdout \
507 e9ce266e 2022-03-07 op 2> $testroot/stderr
508 e9ce266e 2022-03-07 op ret=$?
509 bfbccd0a 2022-03-08 op if [ $ret -eq 0 ]; then
510 e9ce266e 2022-03-07 op echo "got managed to apply an invalid patch"
511 e9ce266e 2022-03-07 op test_done $testroot 1
512 e9ce266e 2022-03-07 op return 1
513 e9ce266e 2022-03-07 op fi
514 e9ce266e 2022-03-07 op
515 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
516 e9ce266e 2022-03-07 op ret=$?
517 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
518 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
519 e9ce266e 2022-03-07 op test_done $testroot $ret
520 e9ce266e 2022-03-07 op return 1
521 e9ce266e 2022-03-07 op fi
522 e9ce266e 2022-03-07 op
523 e9ce266e 2022-03-07 op cmp -s $testroot/stderr.expected $testroot/stderr
524 e9ce266e 2022-03-07 op ret=$?
525 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
526 e9ce266e 2022-03-07 op diff -u $testroot/stderr.expected $testroot/stderr
527 e9ce266e 2022-03-07 op test_done $testroot $ret
528 e9ce266e 2022-03-07 op return 1
529 e9ce266e 2022-03-07 op fi
530 e9ce266e 2022-03-07 op
531 e9ce266e 2022-03-07 op # wrong first character
532 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
533 e9ce266e 2022-03-07 op --- alpha
534 e9ce266e 2022-03-07 op +++ alpha
535 e9ce266e 2022-03-07 op @@ -1 +1,2 @@
536 e9ce266e 2022-03-07 op +hatsuseno
537 e9ce266e 2022-03-07 op alpha
538 e9ce266e 2022-03-07 op EOF
539 e9ce266e 2022-03-07 op
540 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) \
541 e9ce266e 2022-03-07 op > $testroot/stdout \
542 e9ce266e 2022-03-07 op 2> $testroot/stderr
543 e9ce266e 2022-03-07 op ret=$?
544 bfbccd0a 2022-03-08 op if [ $ret -eq 0 ]; then
545 e9ce266e 2022-03-07 op echo "got managed to apply an invalid patch"
546 e9ce266e 2022-03-07 op test_done $testroot 1
547 e9ce266e 2022-03-07 op return 1
548 e9ce266e 2022-03-07 op fi
549 e9ce266e 2022-03-07 op
550 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
551 e9ce266e 2022-03-07 op ret=$?
552 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
553 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
554 e9ce266e 2022-03-07 op test_done $testroot $ret
555 e9ce266e 2022-03-07 op return 1
556 e9ce266e 2022-03-07 op fi
557 e9ce266e 2022-03-07 op
558 e9ce266e 2022-03-07 op cmp -s $testroot/stderr.expected $testroot/stderr
559 e9ce266e 2022-03-07 op ret=$?
560 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
561 e9ce266e 2022-03-07 op diff -u $testroot/stderr.expected $testroot/stderr
562 e9ce266e 2022-03-07 op test_done $testroot $ret
563 e9ce266e 2022-03-07 op return 1
564 e9ce266e 2022-03-07 op fi
565 e9ce266e 2022-03-07 op
566 e9ce266e 2022-03-07 op test_done $testroot $ret
567 e9ce266e 2022-03-07 op }
568 e9ce266e 2022-03-07 op
569 e9ce266e 2022-03-07 op test_patch_no_patch() {
570 e9ce266e 2022-03-07 op local testroot=`test_init patch_no_patch`
571 e9ce266e 2022-03-07 op
572 e9ce266e 2022-03-07 op got checkout $testroot/repo $testroot/wt > /dev/null
573 e9ce266e 2022-03-07 op ret=$?
574 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
575 e9ce266e 2022-03-07 op test_done $testroot $ret
576 e9ce266e 2022-03-07 op return 1
577 e9ce266e 2022-03-07 op fi
578 e9ce266e 2022-03-07 op
579 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
580 e9ce266e 2022-03-07 op hello world!
581 e9ce266e 2022-03-07 op ...
582 e9ce266e 2022-03-07 op
583 e9ce266e 2022-03-07 op some other nonsense
584 e9ce266e 2022-03-07 op ...
585 e9ce266e 2022-03-07 op
586 e9ce266e 2022-03-07 op there's no patch in here!
587 e9ce266e 2022-03-07 op EOF
588 e9ce266e 2022-03-07 op
589 e9ce266e 2022-03-07 op echo -n > $testroot/stdout.expected
590 e9ce266e 2022-03-07 op echo "got: no patch found" > $testroot/stderr.expected
591 e9ce266e 2022-03-07 op
592 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) \
593 e9ce266e 2022-03-07 op > $testroot/stdout \
594 e9ce266e 2022-03-07 op 2> $testroot/stderr
595 e9ce266e 2022-03-07 op ret=$?
596 bfbccd0a 2022-03-08 op if [ $ret -eq 0 ]; then # should fail
597 e9ce266e 2022-03-07 op test_done $testroot 1
598 e9ce266e 2022-03-07 op return 1
599 e9ce266e 2022-03-07 op fi
600 e9ce266e 2022-03-07 op
601 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
602 e9ce266e 2022-03-07 op ret=$?
603 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
604 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
605 e9ce266e 2022-03-07 op test_done $testroot $ret
606 e9ce266e 2022-03-07 op return 1
607 e9ce266e 2022-03-07 op fi
608 e9ce266e 2022-03-07 op
609 e9ce266e 2022-03-07 op cmp -s $testroot/stderr.expected $testroot/stderr
610 e9ce266e 2022-03-07 op ret=$?
611 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
612 e9ce266e 2022-03-07 op diff -u $testroot/stderr.expected $testroot/stderr
613 e9ce266e 2022-03-07 op test_done $testroot $ret
614 e9ce266e 2022-03-07 op return 1
615 e9ce266e 2022-03-07 op fi
616 e9ce266e 2022-03-07 op
617 e9ce266e 2022-03-07 op test_done $testroot $ret
618 e9ce266e 2022-03-07 op }
619 e9ce266e 2022-03-07 op
620 e9ce266e 2022-03-07 op test_patch_equals_for_context() {
621 e9ce266e 2022-03-07 op local testroot=`test_init patch_prepend_line`
622 e9ce266e 2022-03-07 op
623 e9ce266e 2022-03-07 op got checkout $testroot/repo $testroot/wt > /dev/null
624 e9ce266e 2022-03-07 op ret=$?
625 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
626 e9ce266e 2022-03-07 op test_done $testroot $ret
627 e9ce266e 2022-03-07 op return 1
628 e9ce266e 2022-03-07 op fi
629 e9ce266e 2022-03-07 op
630 e9ce266e 2022-03-07 op cat <<EOF > $testroot/wt/patch
631 e9ce266e 2022-03-07 op --- alpha
632 e9ce266e 2022-03-07 op +++ alpha
633 e9ce266e 2022-03-07 op @@ -1 +1,2 @@
634 e9ce266e 2022-03-07 op +hatsuseno
635 e9ce266e 2022-03-07 op =alpha
636 e9ce266e 2022-03-07 op EOF
637 e9ce266e 2022-03-07 op
638 e9ce266e 2022-03-07 op echo "M alpha" > $testroot/stdout.expected
639 e9ce266e 2022-03-07 op
640 e9ce266e 2022-03-07 op (cd $testroot/wt && got patch patch) > $testroot/stdout
641 e9ce266e 2022-03-07 op ret=$?
642 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
643 e9ce266e 2022-03-07 op test_done $testroot $ret
644 e9ce266e 2022-03-07 op return 1
645 e9ce266e 2022-03-07 op fi
646 e9ce266e 2022-03-07 op
647 e9ce266e 2022-03-07 op cmp -s $testroot/stdout.expected $testroot/stdout
648 e9ce266e 2022-03-07 op ret=$?
649 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
650 e9ce266e 2022-03-07 op diff -u $testroot/stdout.expected $testroot/stdout
651 e9ce266e 2022-03-07 op test_done $testroot $ret
652 e9ce266e 2022-03-07 op return 1
653 e9ce266e 2022-03-07 op fi
654 e9ce266e 2022-03-07 op
655 e9ce266e 2022-03-07 op echo hatsuseno > $testroot/wt/alpha.expected
656 e9ce266e 2022-03-07 op echo alpha >> $testroot/wt/alpha.expected
657 e9ce266e 2022-03-07 op cmp -s $testroot/wt/alpha.expected $testroot/wt/alpha
658 e9ce266e 2022-03-07 op ret=$?
659 bfbccd0a 2022-03-08 op if [ $ret -ne 0 ]; then
660 e9ce266e 2022-03-07 op diff -u $testroot/wt/alpha.expected $testroot/wt/alpha
661 e9ce266e 2022-03-07 op fi
662 e9ce266e 2022-03-07 op test_done $testroot $ret
663 e9ce266e 2022-03-07 op }
664 6e96b326 2022-03-12 op
665 6e96b326 2022-03-12 op test_patch_rename() {
666 6e96b326 2022-03-12 op local testroot=`test_init patch_rename`
667 6e96b326 2022-03-12 op
668 6e96b326 2022-03-12 op got checkout $testroot/repo $testroot/wt > /dev/null
669 6e96b326 2022-03-12 op ret=$?
670 6e96b326 2022-03-12 op if [ $ret -ne 0 ]; then
671 6e96b326 2022-03-12 op test_done $testroot $ret
672 6e96b326 2022-03-12 op return 1
673 6e96b326 2022-03-12 op fi
674 6e96b326 2022-03-12 op
675 6e96b326 2022-03-12 op cat <<EOF > $testroot/wt/patch
676 6e96b326 2022-03-12 op --- alpha
677 6e96b326 2022-03-12 op +++ eta
678 6e96b326 2022-03-12 op @@ -0,0 +0,0 @@
679 6e96b326 2022-03-12 op EOF
680 e9ce266e 2022-03-07 op
681 6e96b326 2022-03-12 op echo 'D alpha' > $testroot/stdout.expected
682 6e96b326 2022-03-12 op echo 'A eta' >> $testroot/stdout.expected
683 6e96b326 2022-03-12 op
684 6e96b326 2022-03-12 op (cd $testroot/wt && got patch patch) > $testroot/stdout
685 6e96b326 2022-03-12 op ret=$?
686 6e96b326 2022-03-12 op if [ $ret -ne 0 ]; then
687 6e96b326 2022-03-12 op test_done $testroot $ret
688 6e96b326 2022-03-12 op return 1
689 6e96b326 2022-03-12 op fi
690 6e96b326 2022-03-12 op
691 6e96b326 2022-03-12 op cmp -s $testroot/stdout.expected $testroot/stdout
692 6e96b326 2022-03-12 op ret=$?
693 6e96b326 2022-03-12 op if [ $ret -ne 0 ]; then
694 6e96b326 2022-03-12 op diff -u $testroot/stdout.expected $testroot/stdout
695 6e96b326 2022-03-12 op test_done $testroot $ret
696 6e96b326 2022-03-12 op return 1
697 6e96b326 2022-03-12 op fi
698 6e96b326 2022-03-12 op
699 6e96b326 2022-03-12 op if [ -f $testroot/wt/alpha ]; then
700 6e96b326 2022-03-12 op echo "alpha was not removed" >&2
701 6e96b326 2022-03-12 op test_done $testroot 1
702 6e96b326 2022-03-12 op return 1
703 6e96b326 2022-03-12 op fi
704 6e96b326 2022-03-12 op if [ ! -f $testroot/wt/eta ]; then
705 6e96b326 2022-03-12 op echo "eta was not created" >&2
706 6e96b326 2022-03-12 op test_done $testroot 1
707 6e96b326 2022-03-12 op return 1
708 6e96b326 2022-03-12 op fi
709 6e96b326 2022-03-12 op
710 6e96b326 2022-03-12 op echo alpha > $testroot/wt/eta.expected
711 6e96b326 2022-03-12 op cmp -s $testroot/wt/eta.expected $testroot/wt/eta
712 6e96b326 2022-03-12 op ret=$?
713 6e96b326 2022-03-12 op if [ $ret -ne 0 ]; then
714 6e96b326 2022-03-12 op diff -u $testroot/wt/eta.expected $testroot/wt/eta
715 6e96b326 2022-03-12 op test_done $testroot $ret
716 6e96b326 2022-03-12 op return 1
717 6e96b326 2022-03-12 op fi
718 6e96b326 2022-03-12 op
719 6e96b326 2022-03-12 op # revert the changes and try again with a rename + edit
720 6e96b326 2022-03-12 op (cd $testroot/wt && got revert alpha eta) > /dev/null
721 6e96b326 2022-03-12 op ret=$?
722 6e96b326 2022-03-12 op if [ $ret -ne 0 ]; then
723 6e96b326 2022-03-12 op test_done $testroot $ret
724 6e96b326 2022-03-12 op return 1
725 6e96b326 2022-03-12 op fi
726 dbda770b 2022-03-13 op rm $testroot/wt/eta
727 6e96b326 2022-03-12 op
728 6e96b326 2022-03-12 op cat <<EOF > $testroot/wt/patch
729 6e96b326 2022-03-12 op --- alpha
730 6e96b326 2022-03-12 op +++ eta
731 6e96b326 2022-03-12 op @@ -1 +1,2 @@
732 6e96b326 2022-03-12 op alpha
733 6e96b326 2022-03-12 op +but now is eta
734 6e96b326 2022-03-12 op EOF
735 6e96b326 2022-03-12 op
736 6e96b326 2022-03-12 op (cd $testroot/wt && got patch patch) > $testroot/stdout
737 6e96b326 2022-03-12 op ret=$?
738 6e96b326 2022-03-12 op if [ $ret -ne 0 ]; then
739 6e96b326 2022-03-12 op test_done $testroot $ret
740 6e96b326 2022-03-12 op return 1
741 6e96b326 2022-03-12 op fi
742 6e96b326 2022-03-12 op
743 6e96b326 2022-03-12 op cmp -s $testroot/stdout.expected $testroot/stdout
744 6e96b326 2022-03-12 op ret=$?
745 6e96b326 2022-03-12 op if [ $ret -ne 0 ]; then
746 6e96b326 2022-03-12 op diff -u $testroot/stdout.expected $testroot/stdout
747 6e96b326 2022-03-12 op test_done $testroot $ret
748 6e96b326 2022-03-12 op return 1
749 6e96b326 2022-03-12 op fi
750 6e96b326 2022-03-12 op
751 6e96b326 2022-03-12 op if [ -f $testroot/wt/alpha ]; then
752 6e96b326 2022-03-12 op echo "alpha was not removed" >&2
753 6e96b326 2022-03-12 op test_done $testroot 1
754 6e96b326 2022-03-12 op return 1
755 6e96b326 2022-03-12 op fi
756 6e96b326 2022-03-12 op if [ ! -f $testroot/wt/eta ]; then
757 6e96b326 2022-03-12 op echo "eta was not created" >&2
758 6e96b326 2022-03-12 op test_done $testroot 1
759 6e96b326 2022-03-12 op return 1
760 6e96b326 2022-03-12 op fi
761 6e96b326 2022-03-12 op
762 6e96b326 2022-03-12 op echo alpha > $testroot/wt/eta.expected
763 6e96b326 2022-03-12 op echo 'but now is eta' >> $testroot/wt/eta.expected
764 6e96b326 2022-03-12 op cmp -s $testroot/wt/eta.expected $testroot/wt/eta
765 6e96b326 2022-03-12 op ret=$?
766 6e96b326 2022-03-12 op if [ $ret -ne 0 ]; then
767 6e96b326 2022-03-12 op diff -u $testroot/wt/eta.expected $testroot/wt/eta
768 6e96b326 2022-03-12 op fi
769 6e96b326 2022-03-12 op test_done $testroot $ret
770 6e96b326 2022-03-12 op }
771 dbda770b 2022-03-13 op
772 dbda770b 2022-03-13 op test_patch_illegal_status() {
773 dbda770b 2022-03-13 op local testroot=`test_init patch_illegal_status`
774 dbda770b 2022-03-13 op
775 dbda770b 2022-03-13 op got checkout $testroot/repo $testroot/wt > /dev/null
776 dbda770b 2022-03-13 op ret=$?
777 dbda770b 2022-03-13 op if [ $ret -ne 0 ]; then
778 dbda770b 2022-03-13 op test_done $testroot $ret
779 dbda770b 2022-03-13 op return 1
780 dbda770b 2022-03-13 op fi
781 dbda770b 2022-03-13 op
782 dbda770b 2022-03-13 op # edit an non-existent and unknown file
783 dbda770b 2022-03-13 op cat <<EOF > $testroot/wt/patch
784 dbda770b 2022-03-13 op --- iota
785 dbda770b 2022-03-13 op +++ iota
786 dbda770b 2022-03-13 op @@ -1 +1 @@
787 dbda770b 2022-03-13 op - iota
788 dbda770b 2022-03-13 op + IOTA
789 dbda770b 2022-03-13 op EOF
790 6e96b326 2022-03-12 op
791 dbda770b 2022-03-13 op (cd $testroot/wt && got patch patch) > /dev/null \
792 dbda770b 2022-03-13 op 2> $testroot/stderr
793 dbda770b 2022-03-13 op ret=$?
794 dbda770b 2022-03-13 op if [ $ret -eq 0 ]; then
795 dbda770b 2022-03-13 op echo "edited a missing file" >&2
796 dbda770b 2022-03-13 op test_done $testroot $ret
797 dbda770b 2022-03-13 op return 1
798 dbda770b 2022-03-13 op fi
799 dbda770b 2022-03-13 op
800 dbda770b 2022-03-13 op echo "got: iota: No such file or directory" \
801 dbda770b 2022-03-13 op > $testroot/stderr.expected
802 dbda770b 2022-03-13 op cmp -s $testroot/stderr.expected $testroot/stderr
803 dbda770b 2022-03-13 op ret=$?
804 dbda770b 2022-03-13 op if [ $ret -ne 0 ]; then
805 dbda770b 2022-03-13 op diff -u $testroot/stderr.expected $testroot/stderr
806 dbda770b 2022-03-13 op test_done $testroot $ret
807 dbda770b 2022-03-13 op return 1
808 dbda770b 2022-03-13 op fi
809 dbda770b 2022-03-13 op
810 dbda770b 2022-03-13 op # create iota and re-try
811 dbda770b 2022-03-13 op echo iota > $testroot/wt/iota
812 dbda770b 2022-03-13 op
813 dbda770b 2022-03-13 op (cd $testroot/wt && got patch patch) > /dev/null \
814 dbda770b 2022-03-13 op 2> $testroot/stderr
815 dbda770b 2022-03-13 op ret=$?
816 dbda770b 2022-03-13 op if [ $ret -eq 0 ]; then
817 dbda770b 2022-03-13 op echo "patched an unknown file" >&2
818 dbda770b 2022-03-13 op test_done $testroot $ret
819 dbda770b 2022-03-13 op return 1
820 dbda770b 2022-03-13 op fi
821 dbda770b 2022-03-13 op
822 dbda770b 2022-03-13 op echo "got: iota: file has unexpected status" \
823 dbda770b 2022-03-13 op > $testroot/stderr.expected
824 dbda770b 2022-03-13 op cmp -s $testroot/stderr.expected $testroot/stderr
825 dbda770b 2022-03-13 op ret=$?
826 dbda770b 2022-03-13 op if [ $ret -ne 0 ]; then
827 dbda770b 2022-03-13 op diff -u $testroot/stderr.expected $testroot/stderr
828 dbda770b 2022-03-13 op test_done $testroot $ret
829 dbda770b 2022-03-13 op return 1
830 dbda770b 2022-03-13 op fi
831 dbda770b 2022-03-13 op
832 dbda770b 2022-03-13 op rm $testroot/wt/iota
833 dbda770b 2022-03-13 op ret=$?
834 dbda770b 2022-03-13 op if [ $ret -ne 0 ]; then
835 dbda770b 2022-03-13 op test_done $testroot $ret
836 dbda770b 2022-03-13 op return 1
837 dbda770b 2022-03-13 op fi
838 dbda770b 2022-03-13 op
839 dbda770b 2022-03-13 op # edit obstructed file
840 dbda770b 2022-03-13 op rm $testroot/wt/alpha
841 dbda770b 2022-03-13 op mkdir $testroot/wt/alpha
842 dbda770b 2022-03-13 op cat <<EOF > $testroot/wt/patch
843 dbda770b 2022-03-13 op --- alpha
844 dbda770b 2022-03-13 op +++ alpha
845 dbda770b 2022-03-13 op @@ -1 +1,2 @@
846 dbda770b 2022-03-13 op alpha
847 dbda770b 2022-03-13 op +was edited
848 dbda770b 2022-03-13 op EOF
849 dbda770b 2022-03-13 op
850 dbda770b 2022-03-13 op (cd $testroot/wt && got patch patch) > /dev/null \
851 dbda770b 2022-03-13 op 2> $testroot/stderr
852 dbda770b 2022-03-13 op ret=$?
853 dbda770b 2022-03-13 op if [ $ret -eq 0 ]; then
854 dbda770b 2022-03-13 op echo "edited a missing file" >&2
855 dbda770b 2022-03-13 op test_done $testroot $ret
856 dbda770b 2022-03-13 op return 1
857 dbda770b 2022-03-13 op fi
858 dbda770b 2022-03-13 op
859 dbda770b 2022-03-13 op echo "got: alpha: file has unexpected status" \
860 dbda770b 2022-03-13 op > $testroot/stderr.expected
861 dbda770b 2022-03-13 op cmp -s $testroot/stderr.expected $testroot/stderr
862 dbda770b 2022-03-13 op ret=$?
863 dbda770b 2022-03-13 op if [ $ret -ne 0 ]; then
864 dbda770b 2022-03-13 op diff -u $testroot/stderr.expected $testroot/stderr
865 dbda770b 2022-03-13 op test_done $testroot $ret
866 dbda770b 2022-03-13 op return 1
867 dbda770b 2022-03-13 op fi
868 dbda770b 2022-03-13 op
869 dbda770b 2022-03-13 op # delete an unknown file
870 dbda770b 2022-03-13 op cat <<EOF > $testroot/wt/patch
871 dbda770b 2022-03-13 op --- iota
872 dbda770b 2022-03-13 op +++ /dev/null
873 dbda770b 2022-03-13 op @@ -1 +0,0 @@
874 dbda770b 2022-03-13 op -iota
875 dbda770b 2022-03-13 op EOF
876 dbda770b 2022-03-13 op
877 dbda770b 2022-03-13 op (cd $testroot/wt && got patch patch) > /dev/null \
878 dbda770b 2022-03-13 op 2> $testroot/stderr
879 dbda770b 2022-03-13 op ret=$?
880 dbda770b 2022-03-13 op if [ $ret -eq 0 ]; then
881 dbda770b 2022-03-13 op echo "deleted a missing file?" >&2
882 dbda770b 2022-03-13 op test_done $testroot $ret
883 dbda770b 2022-03-13 op return 1
884 dbda770b 2022-03-13 op fi
885 dbda770b 2022-03-13 op
886 dbda770b 2022-03-13 op echo "got: iota: No such file or directory" \
887 dbda770b 2022-03-13 op > $testroot/stderr.expected
888 dbda770b 2022-03-13 op cmp -s $testroot/stderr.expected $testroot/stderr
889 dbda770b 2022-03-13 op ret=$?
890 dbda770b 2022-03-13 op if [ $ret -eq 0 ]; then
891 dbda770b 2022-03-13 op diff -u $testroot/stderr.expected $testroot/stderr
892 dbda770b 2022-03-13 op test_done $testroot $ret
893 dbda770b 2022-03-13 op return 1
894 dbda770b 2022-03-13 op fi
895 dbda770b 2022-03-13 op
896 dbda770b 2022-03-13 op # try again with iota in place but still not registered
897 dbda770b 2022-03-13 op echo iota > $testroot/wt/iota
898 dbda770b 2022-03-13 op (cd $testroot/wt && got patch patch) > /dev/null \
899 dbda770b 2022-03-13 op 2> $testroot/stderr
900 dbda770b 2022-03-13 op ret=$?
901 dbda770b 2022-03-13 op if [ $ret -eq 0 ]; then
902 dbda770b 2022-03-13 op echo "deleted an unversioned file?" >&2
903 dbda770b 2022-03-13 op test_done $testroot $ret
904 dbda770b 2022-03-13 op return 1
905 dbda770b 2022-03-13 op fi
906 dbda770b 2022-03-13 op
907 dbda770b 2022-03-13 op echo "got: iota: file has unexpected status" \
908 dbda770b 2022-03-13 op > $testroot/stderr.expected
909 dbda770b 2022-03-13 op cmp -s $testroot/stderr.expected $testroot/stderr
910 dbda770b 2022-03-13 op ret=$?
911 dbda770b 2022-03-13 op if [ $ret -eq 0 ]; then
912 dbda770b 2022-03-13 op diff -u $testroot/stderr.expected $testroot/stderr
913 899fcfdf 2022-03-13 op fi
914 899fcfdf 2022-03-13 op test_done $testroot $ret
915 899fcfdf 2022-03-13 op }
916 899fcfdf 2022-03-13 op
917 899fcfdf 2022-03-13 op test_patch_nop() {
918 899fcfdf 2022-03-13 op local testroot=`test_init patch_nop`
919 899fcfdf 2022-03-13 op
920 899fcfdf 2022-03-13 op got checkout $testroot/repo $testroot/wt > /dev/null
921 899fcfdf 2022-03-13 op ret=$?
922 899fcfdf 2022-03-13 op if [ $ret -ne 0 ]; then
923 899fcfdf 2022-03-13 op test_done $testroot $ret
924 899fcfdf 2022-03-13 op return 1
925 899fcfdf 2022-03-13 op fi
926 899fcfdf 2022-03-13 op
927 899fcfdf 2022-03-13 op cat <<EOF > $testroot/wt/patch
928 899fcfdf 2022-03-13 op --- alpha
929 899fcfdf 2022-03-13 op +++ alpha
930 899fcfdf 2022-03-13 op @@ -1 +1 @@
931 899fcfdf 2022-03-13 op -alpha
932 899fcfdf 2022-03-13 op +cafe alpha
933 899fcfdf 2022-03-13 op --- beta
934 899fcfdf 2022-03-13 op +++ /dev/null
935 899fcfdf 2022-03-13 op @@ -1 +0,0 @@
936 899fcfdf 2022-03-13 op -beta
937 899fcfdf 2022-03-13 op --- gamma/delta
938 899fcfdf 2022-03-13 op +++ gamma/delta.new
939 899fcfdf 2022-03-13 op @@ -1 +1 @@
940 899fcfdf 2022-03-13 op -delta
941 899fcfdf 2022-03-13 op +delta updated and renamed!
942 899fcfdf 2022-03-13 op EOF
943 899fcfdf 2022-03-13 op
944 899fcfdf 2022-03-13 op (cd $testroot/wt && got patch -n patch)
945 899fcfdf 2022-03-13 op ret=$?
946 899fcfdf 2022-03-13 op if [ $ret -ne 0 ]; then
947 899fcfdf 2022-03-13 op test_done $testroot $ret
948 899fcfdf 2022-03-13 op return 1
949 dbda770b 2022-03-13 op fi
950 899fcfdf 2022-03-13 op
951 899fcfdf 2022-03-13 op # remove the patch to avoid the ? entry
952 899fcfdf 2022-03-13 op rm $testroot/wt/patch
953 899fcfdf 2022-03-13 op
954 899fcfdf 2022-03-13 op (cd $testroot/wt && got status) > $testroot/stdout
955 899fcfdf 2022-03-13 op ret=$?
956 899fcfdf 2022-03-13 op if [ $ret -ne 0 ]; then
957 899fcfdf 2022-03-13 op test_done $testroot $ret
958 899fcfdf 2022-03-13 op return 1
959 899fcfdf 2022-03-13 op fi
960 899fcfdf 2022-03-13 op
961 899fcfdf 2022-03-13 op echo -n > $testroot/stdout.expected
962 899fcfdf 2022-03-13 op cmp -s $testroot/stdout.expected $testroot/stdout
963 899fcfdf 2022-03-13 op ret=$?
964 899fcfdf 2022-03-13 op if [ $ret -ne 0 ]; then
965 899fcfdf 2022-03-13 op diff -u $testroot/stdout.expected $testroot/stdout
966 899fcfdf 2022-03-13 op fi
967 dbda770b 2022-03-13 op test_done $testroot $ret
968 dbda770b 2022-03-13 op }
969 dbda770b 2022-03-13 op
970 e9ce266e 2022-03-07 op test_parseargs "$@"
971 e9ce266e 2022-03-07 op run_test test_patch_simple_add_file
972 e9ce266e 2022-03-07 op run_test test_patch_simple_rm_file
973 e9ce266e 2022-03-07 op run_test test_patch_simple_edit_file
974 e9ce266e 2022-03-07 op run_test test_patch_prepend_line
975 e9ce266e 2022-03-07 op run_test test_patch_replace_line
976 e9ce266e 2022-03-07 op run_test test_patch_multiple_hunks
977 e9ce266e 2022-03-07 op run_test test_patch_multiple_files
978 e9ce266e 2022-03-07 op run_test test_patch_dont_apply
979 e9ce266e 2022-03-07 op run_test test_patch_malformed
980 e9ce266e 2022-03-07 op run_test test_patch_no_patch
981 e9ce266e 2022-03-07 op run_test test_patch_equals_for_context
982 6e96b326 2022-03-12 op run_test test_patch_rename
983 dbda770b 2022-03-13 op run_test test_patch_illegal_status
984 899fcfdf 2022-03-13 op run_test test_patch_nop