@@ -13,9 +13,8 @@ function testcase() {
13
13
14
14
function fail() {
15
15
echo " FAIL: " " $@ "
16
- sleep 2
17
- pkill git-sync || true
18
- ps auxw | grep git-sync
16
+ sleep 3
17
+ remove_sync_container || true
19
18
exit 1
20
19
}
21
20
@@ -47,6 +46,16 @@ function assert_file_eq() {
47
46
fail " file $1 does not contain '$2 ': $( cat $1 ) "
48
47
}
49
48
49
+ function finish() {
50
+ if [ $? -ne 0 ]; then
51
+ echo " The directory $DIR was not removed as it contains" \
52
+ " log files useful for debugging"
53
+ remove_sync_container
54
+ fi
55
+ }
56
+
57
+ trap finish INT EXIT
58
+
50
59
# ########################
51
60
# main
52
61
# ########################
@@ -65,16 +74,24 @@ if [[ -z "$DIR" ]]; then
65
74
fi
66
75
echo " test root is $DIR "
67
76
77
+ CONTAINER_NAME=git-sync-$RANDOM
68
78
function GIT_SYNC() {
69
79
# ./bin/amd64/git-sync "$@"
70
80
docker run \
81
+ --name $CONTAINER_NAME \
71
82
-i \
72
83
-u $( id -u) :$( id -g) \
73
84
-v " $DIR " :" $DIR " \
85
+ --rm \
74
86
e2e/git-sync-amd64:$( make -s version) \
75
87
" $@ "
76
88
}
77
89
90
+ function remove_sync_container() {
91
+ # Verify the container is running using 'docker top' before removing
92
+ docker top $CONTAINER_NAME > /dev/null 2>&1 && docker rm -f $CONTAINER_NAME
93
+ }
94
+
78
95
REPO=" $DIR /repo"
79
96
mkdir " $REPO "
80
97
@@ -124,25 +141,25 @@ GIT_SYNC \
124
141
--repo=" $REPO " \
125
142
--root=" $ROOT " \
126
143
--dest=" link" > " $DIR " /log." $TESTCASE " 2>&1 &
127
- sleep 2
144
+ sleep 3
128
145
assert_link_exists " $ROOT " /link
129
146
assert_file_exists " $ROOT " /link/file
130
147
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
131
148
# Move forward
132
149
echo " $TESTCASE 2" > " $REPO " /file
133
150
git -C " $REPO " commit -qam " $TESTCASE 2"
134
- sleep 2
151
+ sleep 3
135
152
assert_link_exists " $ROOT " /link
136
153
assert_file_exists " $ROOT " /link/file
137
154
assert_file_eq " $ROOT " /link/file " $TESTCASE 2"
138
155
# Move backward
139
156
git -C " $REPO " reset -q --hard HEAD^
140
- sleep 2
157
+ sleep 3
141
158
assert_link_exists " $ROOT " /link
142
159
assert_file_exists " $ROOT " /link/file
143
160
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
144
161
# Wrap up
145
- pkill git-sync
162
+ remove_sync_container
146
163
wait
147
164
pass
148
165
@@ -160,25 +177,25 @@ GIT_SYNC \
160
177
--rev=HEAD \
161
178
--root=" $ROOT " \
162
179
--dest=" link" > " $DIR " /log." $TESTCASE " 2>&1 &
163
- sleep 2
180
+ sleep 3
164
181
assert_link_exists " $ROOT " /link
165
182
assert_file_exists " $ROOT " /link/file
166
183
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
167
184
# Move HEAD forward
168
185
echo " $TESTCASE 2" > " $REPO " /file
169
186
git -C " $REPO " commit -qam " $TESTCASE 2"
170
- sleep 2
187
+ sleep 3
171
188
assert_link_exists " $ROOT " /link
172
189
assert_file_exists " $ROOT " /link/file
173
190
assert_file_eq " $ROOT " /link/file " $TESTCASE 2"
174
191
# Move HEAD backward
175
192
git -C " $REPO " reset -q --hard HEAD^
176
- sleep 2
193
+ sleep 3
177
194
assert_link_exists " $ROOT " /link
178
195
assert_file_exists " $ROOT " /link/file
179
196
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
180
197
# Wrap up
181
- pkill git-sync
198
+ remove_sync_container
182
199
wait
183
200
pass
184
201
@@ -198,7 +215,7 @@ GIT_SYNC \
198
215
--branch=" $BRANCH " \
199
216
--root=" $ROOT " \
200
217
--dest=" link" > " $DIR " /log." $TESTCASE " 2>&1 &
201
- sleep 2
218
+ sleep 3
202
219
assert_link_exists " $ROOT " /link
203
220
assert_file_exists " $ROOT " /link/file
204
221
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
@@ -207,20 +224,20 @@ git -C "$REPO" checkout -q "$BRANCH"
207
224
echo " $TESTCASE 2" > " $REPO " /file
208
225
git -C " $REPO " commit -qam " $TESTCASE 2"
209
226
git -C " $REPO " checkout -q master
210
- sleep 2
227
+ sleep 3
211
228
assert_link_exists " $ROOT " /link
212
229
assert_file_exists " $ROOT " /link/file
213
230
assert_file_eq " $ROOT " /link/file " $TESTCASE 2"
214
231
# Move the branch backward
215
232
git -C " $REPO " checkout -q " $BRANCH "
216
233
git -C " $REPO " reset -q --hard HEAD^
217
234
git -C " $REPO " checkout -q master
218
- sleep 2
235
+ sleep 3
219
236
assert_link_exists " $ROOT " /link
220
237
assert_file_exists " $ROOT " /link/file
221
238
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
222
239
# Wrap up
223
- pkill git-sync
240
+ remove_sync_container
224
241
wait
225
242
pass
226
243
@@ -239,34 +256,34 @@ GIT_SYNC \
239
256
--rev=" $TAG " \
240
257
--root=" $ROOT " \
241
258
--dest=" link" > " $DIR " /log." $TESTCASE " 2>&1 &
242
- sleep 2
259
+ sleep 3
243
260
assert_link_exists " $ROOT " /link
244
261
assert_file_exists " $ROOT " /link/file
245
262
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
246
263
# Add something and move the tag forward
247
264
echo " $TESTCASE 2" > " $REPO " /file
248
265
git -C " $REPO " commit -qam " $TESTCASE 2"
249
266
git -C " $REPO " tag -af " $TAG " -m " $TESTCASE 2" > /dev/null
250
- sleep 2
267
+ sleep 3
251
268
assert_link_exists " $ROOT " /link
252
269
assert_file_exists " $ROOT " /link/file
253
270
assert_file_eq " $ROOT " /link/file " $TESTCASE 2"
254
271
# Move the tag backward
255
272
git -C " $REPO " reset -q --hard HEAD^
256
273
git -C " $REPO " tag -af " $TAG " -m " $TESTCASE 3" > /dev/null
257
- sleep 2
274
+ sleep 3
258
275
assert_link_exists " $ROOT " /link
259
276
assert_file_exists " $ROOT " /link/file
260
277
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
261
278
# Add something after the tag
262
279
echo " $TESTCASE 3" > " $REPO " /file
263
280
git -C " $REPO " commit -qam " $TESTCASE 3"
264
- sleep 2
281
+ sleep 3
265
282
assert_link_exists " $ROOT " /link
266
283
assert_file_exists " $ROOT " /link/file
267
284
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
268
285
# Wrap up
269
- pkill git-sync
286
+ remove_sync_container
270
287
wait
271
288
pass
272
289
@@ -288,7 +305,7 @@ GIT_SYNC \
288
305
--rev=" $TAG " \
289
306
--root=" $ROOT " \
290
307
--dest=" link" > " $DIR " /log." $TESTCASE " 2>&1 &
291
- sleep 2
308
+ sleep 3
292
309
assert_link_exists " $ROOT " /link
293
310
assert_file_exists " $ROOT " /link/file
294
311
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
@@ -298,7 +315,7 @@ echo "$TESTCASE 2" > "$REPO"/file
298
315
git -C " $REPO " commit -qam " $TESTCASE 2"
299
316
git -C " $REPO " tag -af " $TAG " -m " $TESTCASE 1" > /dev/null
300
317
git -C " $REPO " checkout -q master
301
- sleep 2
318
+ sleep 3
302
319
assert_link_exists " $ROOT " /link
303
320
assert_file_exists " $ROOT " /link/file
304
321
assert_file_eq " $ROOT " /link/file " $TESTCASE 2"
@@ -307,7 +324,7 @@ git -C "$REPO" checkout -q "$BRANCH"
307
324
git -C " $REPO " reset -q --hard HEAD^
308
325
git -C " $REPO " tag -af " $TAG " -m " $TESTCASE 1" > /dev/null
309
326
git -C " $REPO " checkout -q master
310
- sleep 2
327
+ sleep 3
311
328
assert_link_exists " $ROOT " /link
312
329
assert_file_exists " $ROOT " /link/file
313
330
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
@@ -316,20 +333,20 @@ git -C "$REPO" checkout -q "$BRANCH"
316
333
echo " $TESTCASE 3" > " $REPO " /file
317
334
git -C " $REPO " commit -qam " $TESTCASE 3"
318
335
git -C " $REPO " checkout -q master
319
- sleep 2
336
+ sleep 3
320
337
assert_link_exists " $ROOT " /link
321
338
assert_file_exists " $ROOT " /link/file
322
339
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
323
340
# Move the tag forward again
324
341
git -C " $REPO " checkout -q " $BRANCH "
325
342
git -C " $REPO " tag -af " $TAG " -m " $TESTCASE 3" > /dev/null
326
343
git -C " $REPO " checkout -q master
327
- sleep 2
344
+ sleep 3
328
345
assert_link_exists " $ROOT " /link
329
346
assert_file_exists " $ROOT " /link/file
330
347
assert_file_eq " $ROOT " /link/file " $TESTCASE 3"
331
348
# Wrap up
332
- pkill git-sync
349
+ remove_sync_container
333
350
wait
334
351
pass
335
352
@@ -347,25 +364,25 @@ GIT_SYNC \
347
364
--rev=" $REV " \
348
365
--root=" $ROOT " \
349
366
--dest=" link" > " $DIR " /log." $TESTCASE " 2>&1 &
350
- sleep 2
367
+ sleep 3
351
368
assert_link_exists " $ROOT " /link
352
369
assert_file_exists " $ROOT " /link/file
353
370
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
354
371
# Commit something new
355
372
echo " $TESTCASE 2" > " $REPO " /file
356
373
git -C " $REPO " commit -qam " $TESTCASE 2"
357
- sleep 2
374
+ sleep 3
358
375
assert_link_exists " $ROOT " /link
359
376
assert_file_exists " $ROOT " /link/file
360
377
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
361
378
# Revert the last change
362
379
git -C " $REPO " reset -q --hard HEAD^
363
- sleep 2
380
+ sleep 3
364
381
assert_link_exists " $ROOT " /link
365
382
assert_file_exists " $ROOT " /link/file
366
383
assert_file_eq " $ROOT " /link/file " $TESTCASE 1"
367
384
# Wrap up
368
- pkill git-sync
385
+ remove_sync_container
369
386
wait
370
387
pass
371
388
@@ -384,7 +401,7 @@ GIT_SYNC \
384
401
--root=" $ROOT " \
385
402
--dest=" link" \
386
403
--one-time > " $DIR " /log." $TESTCASE " 2>&1
387
- sleep 2
404
+ sleep 3
388
405
assert_link_exists " $ROOT " /link
389
406
assert_file_exists " $ROOT " /link/file
390
407
assert_file_eq " $ROOT " /link/file " $TESTCASE "
0 commit comments