blob: 39205242c3d492a5ef6527e4426837ac8328a147
1 | #!/bin/sh |
2 | # Copyright 2008 by Denys Vlasenko |
3 | # Licensed under GPLv2, see file LICENSE in this source tree. |
4 | |
5 | . ./testing.sh |
6 | |
7 | # testing "test name" "command(s)" "expected result" "file input" "stdin" |
8 | |
9 | testing "patch with old_file == new_file" \ |
10 | 'patch 2>&1; echo $?; cat input' \ |
11 | "\ |
12 | patching file input |
13 | 0 |
14 | qwe |
15 | asd |
16 | zxc |
17 | " \ |
18 | "\ |
19 | qwe |
20 | zxc |
21 | " \ |
22 | "\ |
23 | --- input Jan 01 01:01:01 2000 |
24 | +++ input Jan 01 01:01:01 2000 |
25 | @@ -1,2 +1,3 @@ |
26 | qwe |
27 | +asd |
28 | zxc |
29 | " \ |
30 | |
31 | testing "patch with nonexistent old_file" \ |
32 | 'patch 2>&1; echo $?; cat input' \ |
33 | "\ |
34 | patching file input |
35 | 0 |
36 | qwe |
37 | asd |
38 | zxc |
39 | " \ |
40 | "\ |
41 | qwe |
42 | zxc |
43 | " \ |
44 | "\ |
45 | --- input.doesnt_exist Jan 01 01:01:01 2000 |
46 | +++ input Jan 01 01:01:01 2000 |
47 | @@ -1,2 +1,3 @@ |
48 | qwe |
49 | +asd |
50 | zxc |
51 | " \ |
52 | |
53 | testing "patch -R with nonexistent old_file" \ |
54 | 'patch -R 2>&1; echo $?; cat input' \ |
55 | "\ |
56 | patching file input |
57 | 0 |
58 | qwe |
59 | zxc |
60 | " \ |
61 | "\ |
62 | qwe |
63 | asd |
64 | zxc |
65 | " \ |
66 | "\ |
67 | --- input.doesnt_exist Jan 01 01:01:01 2000 |
68 | +++ input Jan 01 01:01:01 2000 |
69 | @@ -1,2 +1,3 @@ |
70 | qwe |
71 | +asd |
72 | zxc |
73 | " \ |
74 | |
75 | testing "patch detects already applied hunk" \ |
76 | 'patch 2>&1; echo $?; cat input' \ |
77 | "\ |
78 | Possibly reversed hunk 1 at 4 |
79 | Hunk 1 FAILED 1/1. |
80 | abc |
81 | +def |
82 | 123 |
83 | patching file input |
84 | 1 |
85 | abc |
86 | def |
87 | 123 |
88 | " \ |
89 | "\ |
90 | abc |
91 | def |
92 | 123 |
93 | " \ |
94 | "\ |
95 | --- input.old Jan 01 01:01:01 2000 |
96 | +++ input Jan 01 01:01:01 2000 |
97 | @@ -1,2 +1,3 @@ |
98 | abc |
99 | +def |
100 | 123 |
101 | " \ |
102 | |
103 | testing "patch detects already applied hunk at the EOF" \ |
104 | 'patch 2>&1; echo $?; cat input' \ |
105 | "\ |
106 | Possibly reversed hunk 1 at 4 |
107 | Hunk 1 FAILED 1/1. |
108 | abc |
109 | 123 |
110 | +456 |
111 | patching file input |
112 | 1 |
113 | abc |
114 | 123 |
115 | 456 |
116 | " \ |
117 | "\ |
118 | abc |
119 | 123 |
120 | 456 |
121 | " \ |
122 | "\ |
123 | --- input.old Jan 01 01:01:01 2000 |
124 | +++ input Jan 01 01:01:01 2000 |
125 | @@ -1,2 +1,3 @@ |
126 | abc |
127 | 123 |
128 | +456 |
129 | " \ |
130 | |
131 | # testing "test name" "command(s)" "expected result" "file input" "stdin" |
132 | testing "patch -N ignores already applied hunk" \ |
133 | 'patch -N 2>&1; echo $?; cat input' \ |
134 | "\ |
135 | patching file input |
136 | 0 |
137 | abc |
138 | def |
139 | 123 |
140 | " \ |
141 | "\ |
142 | abc |
143 | def |
144 | 123 |
145 | " \ |
146 | "\ |
147 | --- input |
148 | +++ input |
149 | @@ -1,2 +1,3 @@ |
150 | abc |
151 | +def |
152 | 123 |
153 | " \ |
154 | |
155 | # testing "test name" "command(s)" "expected result" "file input" "stdin" |
156 | testing "patch FILE PATCH" \ |
157 | 'cat >a.patch; patch input a.patch 2>&1; echo $?; cat input; rm a.patch' \ |
158 | "\ |
159 | patching file input |
160 | 0 |
161 | abc |
162 | def |
163 | 123 |
164 | " \ |
165 | "\ |
166 | abc |
167 | 123 |
168 | " \ |
169 | "\ |
170 | --- foo.old |
171 | +++ foo |
172 | @@ -1,2 +1,3 @@ |
173 | abc |
174 | +def |
175 | 123 |
176 | " \ |
177 | |
178 | # testing "test name" "command(s)" "expected result" "file input" "stdin" |
179 | testing "patch at the beginning" \ |
180 | 'patch 2>&1; cat input' \ |
181 | "\ |
182 | patching file input |
183 | 111changed |
184 | 444 |
185 | 555 |
186 | 666 |
187 | 777 |
188 | 888 |
189 | 999 |
190 | " \ |
191 | "\ |
192 | 111 |
193 | 222 |
194 | 333 |
195 | 444 |
196 | 555 |
197 | 666 |
198 | 777 |
199 | 888 |
200 | 999 |
201 | " \ |
202 | "\ |
203 | --- input |
204 | +++ input |
205 | @@ -1,6 +1,4 @@ |
206 | -111 |
207 | -222 |
208 | -333 |
209 | +111changed |
210 | 444 |
211 | 555 |
212 | 666 |
213 | " \ |
214 | |
215 | # testing "test name" "command(s)" "expected result" "file input" "stdin" |
216 | testing "patch creates new file" \ |
217 | 'patch 2>&1; echo $?; cat testfile; rm testfile' \ |
218 | "\ |
219 | creating testfile |
220 | 0 |
221 | qwerty |
222 | " "" "\ |
223 | --- /dev/null |
224 | +++ testfile |
225 | @@ -0,0 +1 @@ |
226 | +qwerty |
227 | " |
228 | |
229 | # testing "test name" "command(s)" "expected result" "file input" "stdin" |
230 | testing "patch understands ...dir///dir..." \ |
231 | 'patch -p1 2>&1; echo $?' \ |
232 | "\ |
233 | patching file dir2///file |
234 | patch: can't open 'dir2///file': No such file or directory |
235 | 1 |
236 | " "" "\ |
237 | --- bogus_dir///dir2///file |
238 | +++ bogus_dir///dir2///file |
239 | @@ -1,2 +1,3 @@ |
240 | qwe |
241 | +asd |
242 | zxc |
243 | " |
244 | |
245 | testing "patch internal buffering bug?" \ |
246 | 'patch -p1 2>&1; echo $?; cat input' \ |
247 | "\ |
248 | patching file input |
249 | 0 |
250 | foo |
251 | |
252 | |
253 | |
254 | |
255 | |
256 | |
257 | 1 |
258 | 2 |
259 | 3 |
260 | |
261 | bar |
262 | " \ |
263 | "\ |
264 | foo |
265 | |
266 | |
267 | |
268 | |
269 | |
270 | |
271 | |
272 | bar |
273 | " \ |
274 | "\ |
275 | --- a/input.orig |
276 | +++ b/input |
277 | @@ -5,5 +5,8 @@ foo |
278 | |
279 | |
280 | |
281 | +1 |
282 | +2 |
283 | +3 |
284 | |
285 | bar |
286 | -- |
287 | 2.9.2 |
288 | " \ |
289 | |
290 | rm input.orig 2>/dev/null |
291 | |
292 | exit $FAILCOUNT |
293 |