aboutsummaryrefslogtreecommitdiff
path: root/testsuite/patch.tests
blob: 1d48e90be4e74546c55f90b0a79a41962cc94391 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
#!/bin/sh
# Copyright 2008 by Denys Vlasenko
# Licensed under GPLv2, see file LICENSE in this source tree.

. ./testing.sh

# testing "test name" "command(s)" "expected result" "file input" "stdin"

testing "patch with old_file == new_file" \
	'patch 2>&1; echo $?; cat input' \
"\
patching file input
0
qwe
asd
zxc
" \
"\
qwe
zxc
" \
"\
--- input	Jan 01 01:01:01 2000
+++ input	Jan 01 01:01:01 2000
@@ -1,2 +1,3 @@
 qwe
+asd
 zxc
" \

testing "patch with nonexistent old_file" \
	'patch 2>&1; echo $?; cat input' \
"\
patching file input
0
qwe
asd
zxc
" \
"\
qwe
zxc
" \
"\
--- input.doesnt_exist	Jan 01 01:01:01 2000
+++ input	Jan 01 01:01:01 2000
@@ -1,2 +1,3 @@
 qwe
+asd
 zxc
" \

testing "patch -R with nonexistent old_file" \
	'patch -R 2>&1; echo $?; cat input' \
"\
patching file input
0
qwe
zxc
" \
"\
qwe
asd
zxc
" \
"\
--- input.doesnt_exist	Jan 01 01:01:01 2000
+++ input	Jan 01 01:01:01 2000
@@ -1,2 +1,3 @@
 qwe
+asd
 zxc
" \

testing "patch detects already applied hunk" \
	'patch 2>&1; echo $?; cat input' \
"\
patching file input
Possibly reversed hunk 1 at 4
Hunk 1 FAILED 1/1.
 abc
+def
 123
1
abc
def
123
" \
"\
abc
def
123
" \
"\
--- input.old	Jan 01 01:01:01 2000
+++ input	Jan 01 01:01:01 2000
@@ -1,2 +1,3 @@
 abc
+def
 123
" \

testing "patch detects already applied hunk at the EOF" \
	'patch 2>&1; echo $?; cat input' \
"\
patching file input
Possibly reversed hunk 1 at 4
Hunk 1 FAILED 1/1.
 abc
 123
+456
1
abc
123
456
" \
"\
abc
123
456
" \
"\
--- input.old	Jan 01 01:01:01 2000
+++ input	Jan 01 01:01:01 2000
@@ -1,2 +1,3 @@
 abc
 123
+456
" \

# testing "test name" "command(s)" "expected result" "file input" "stdin"
testing "patch -N ignores already applied hunk" \
	'patch -N 2>&1; echo $?; cat input' \
"\
patching file input
0
abc
def
123
" \
"\
abc
def
123
" \
"\
--- input
+++ input
@@ -1,2 +1,3 @@
 abc
+def
 123
" \

# testing "test name" "command(s)" "expected result" "file input" "stdin"
testing "patch FILE PATCH" \
	'cat >a.patch; patch input a.patch 2>&1; echo $?; cat input; rm a.patch' \
"\
patching file input
0
abc
def
123
" \
"\
abc
123
" \
"\
--- foo.old
+++ foo
@@ -1,2 +1,3 @@
 abc
+def
 123
" \

# testing "test name" "command(s)" "expected result" "file input" "stdin"
testing "patch at the beginning" \
	'patch 2>&1; cat input' \
"\
patching file input
111changed
444
555
666
777
888
999
" \
"\
111
222
333
444
555
666
777
888
999
" \
"\
--- input
+++ input
@@ -1,6 +1,4 @@
-111
-222
-333
+111changed
 444
 555
 666
" \

# testing "test name" "command(s)" "expected result" "file input" "stdin"
testing "patch creates new file" \
	'patch 2>&1; echo $?; cat testfile; rm testfile' \
"\
creating testfile
0
qwerty
" "" "\
--- /dev/null
+++ testfile
@@ -0,0 +1 @@
+qwerty
"

# testing "test name" "command(s)" "expected result" "file input" "stdin"
testing "patch understands ...dir///dir..." \
	'patch -p1 2>&1; echo $?' \
"\
patching file dir2///file
patch: can't open 'dir2///file': No such file or directory
1
" "" "\
--- bogus_dir///dir2///file
+++ bogus_dir///dir2///file
@@ -1,2 +1,3 @@
 qwe
+asd
 zxc
"

testing "patch internal buffering bug?" \
	'patch -p1 2>&1; echo $?; cat input' \
"\
patching file input
0
foo






1
2
3

bar
" \
"\
foo







bar
" \
"\
--- a/input.orig
+++ b/input
@@ -5,5 +5,8 @@ foo
 
 
 
+1
+2
+3
 
 bar
-- 
2.9.2
" \

rm input.orig 2>/dev/null

exit $FAILCOUNT