Fossil SCM

fossil-scm / test / unversioned.test
Blame History Raw 479 lines
1
#
2
# Copyright (c) 2016 D. Richard Hipp
3
#
4
# This program is free software; you can redistribute it and/or
5
# modify it under the terms of the Simplified BSD License (also
6
# known as the "2-Clause License" or "FreeBSD License".)
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but without any warranty; without even the implied warranty of
10
# merchantability or fitness for a particular purpose.
11
#
12
# Author contact information:
13
# [email protected]
14
# http://www.hwaci.com/drh/
15
#
16
############################################################################
17
#
18
# The "unversioned" command.
19
#
20
21
set path [file dirname [info script]]
22
23
if {[catch {package require sha1}] != 0} {
24
puts "The \"sha1\" package is not available."
25
test_cleanup_then_return
26
}
27
28
require_no_open_checkout
29
30
test_setup; set rootDir [file normalize [pwd]]
31
32
# Avoid delays from the backoffice.
33
fossil set backoffice-disable 1
34
35
fossil test-th-eval --open-config {repository}
36
set repository [normalize_result]
37
38
if {[string length $repository] == 0} {
39
puts "Detection of the open repository file failed."
40
test_cleanup_then_return
41
}
42
43
write_file unversioned1.txt "This is unversioned file #1."
44
write_file unversioned2.txt " This is unversioned file #2. "
45
write_file "unversioned space.txt" "\nThis is unversioned file #3.\n"
46
write_file unversioned4.txt "This is unversioned file #4."
47
write_file unversioned5.txt "This is unversioned file #5."
48
49
set env(VISUAL) [appendArgs \
50
[info nameofexecutable] " " [file join $path fake-editor.tcl]]
51
52
###############################################################################
53
54
# Under cygwin, the printed name with Usage: strips the extension
55
if { $::is_cygwin && [file extension $fossilexe] eq ".exe" } {
56
set fossilexeref [string range $fossilexe 0 end-4]
57
} else {
58
set fossilexeref $fossilexe
59
}
60
61
fossil unversioned -expectError
62
test unversioned-1 {[normalize_result] eq \
63
[string map [list %fossil% [file nativename $fossilexeref]] {Usage: %fossil%\
64
unversioned add|cat|edit|export|list|revert|remove|sync|touch}]}
65
66
###############################################################################
67
68
fossil unversioned list
69
test unversioned-2 {[normalize_result] eq {}}
70
71
###############################################################################
72
73
fossil unversioned cat not-found.txt
74
test unversioned-3 {[normalize_result] eq {}}
75
76
###############################################################################
77
78
fossil unversioned cat unversioned1.txt
79
test unversioned-4 {[normalize_result] eq {}}
80
81
###############################################################################
82
83
fossil unversioned add unversioned1.txt
84
test unversioned-5 {[normalize_result] eq {}}
85
86
###############################################################################
87
88
fossil unversioned cat unversioned1.txt
89
test unversioned-6 {[normalize_result] eq {This is unversioned file #1.}}
90
91
###############################################################################
92
93
fossil unversioned list
94
test unversioned-7 {[regexp \
95
{^[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 28 28\
96
unversioned1\.txt$} [normalize_result]]}
97
98
###############################################################################
99
100
fossil unversioned ls
101
test unversioned-8 {[normalize_result] eq {unversioned1.txt}}
102
103
###############################################################################
104
105
fossil unversioned remove unversioned1.txt
106
test unversioned-9 {[normalize_result] eq {}}
107
108
###############################################################################
109
110
fossil unversioned list
111
test unversioned-10 {[normalize_result] eq {}}
112
113
###############################################################################
114
115
fossil unversioned ls
116
test unversioned-11 {[normalize_result] eq {}}
117
118
###############################################################################
119
120
fossil unversioned list --all
121
test unversioned-12 {[regexp \
122
{^\(deleted\) \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0 0\
123
unversioned1\.txt$} [normalize_result]]}
124
125
###############################################################################
126
127
fossil unversioned ls --all
128
test unversioned-13 {[normalize_result] eq {unversioned1.txt}}
129
130
###############################################################################
131
132
fossil unversioned add "unversioned space.txt" -expectError
133
test unversioned-14 {[normalize_result] eq \
134
{unversioned filenames may not contain whitespace: 'unversioned space.txt'}}
135
136
###############################################################################
137
138
fossil unversioned add "unversioned space.txt" --as unversioned3.txt
139
test unversioned-15 {[normalize_result] eq {}}
140
141
###############################################################################
142
143
fossil unversioned list
144
test unversioned-16 {[regexp \
145
{^[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 30 30\
146
unversioned3\.txt$} [normalize_result]]}
147
148
###############################################################################
149
150
fossil unversioned ls --l
151
test unversioned-17 {[regexp \
152
{^[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 30 30\
153
unversioned3\.txt$} [normalize_result]]}
154
155
###############################################################################
156
157
fossil unversioned ls
158
test unversioned-18 {[normalize_result] eq {unversioned3.txt}}
159
160
###############################################################################
161
162
fossil unversioned add unversioned2.txt --mtime 2016-10-01
163
test unversioned-19 {[normalize_result] eq {}}
164
165
###############################################################################
166
167
fossil unversioned list
168
test unversioned-20 {[regexp \
169
{^[0-9a-f]{12} 2016-10-01 00:00:00 30 30\
170
unversioned2\.txt
171
[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 30 30\
172
unversioned3\.txt$} [normalize_result]]}
173
174
###############################################################################
175
176
fossil unversioned ls
177
test unversioned-21 {[normalize_result] eq {unversioned2.txt
178
unversioned3.txt}}
179
180
###############################################################################
181
182
fossil unversioned cat unversioned1.txt
183
test unversioned-22 {[normalize_result] eq {}}
184
185
###############################################################################
186
187
fossil unversioned cat unversioned2.txt
188
test unversioned-23 {[::sha1::sha1 $RESULT] eq \
189
{962f96ebd613e4fdd9aa2d20bd9fe21a64e925f2}}
190
191
###############################################################################
192
193
fossil unversioned cat unversioned3.txt -keepNewline
194
test unversioned-24 {[::sha1::sha1 $RESULT] eq \
195
{c6b95509120d9703cc4fbe5cdfcb435b5912b3e4}}
196
197
###############################################################################
198
199
fossil unversioned rm unversioned3.txt
200
test unversioned-25 {[normalize_result] eq {}}
201
202
###############################################################################
203
204
fossil unversioned add unversioned4.txt
205
test unversioned-26 {[normalize_result] eq {}}
206
207
###############################################################################
208
209
fossil unversioned cat unversioned4.txt
210
set hash(before) [::sha1::sha1 $RESULT]
211
test unversioned-27 {$hash(before) eq \
212
{b48ba8e2d0b498321dfd13de84867effda399af5}}
213
214
###############################################################################
215
216
fossil unversioned edit unversioned4.txt
217
test unversioned-28 {[normalize_result] eq {}}
218
219
###############################################################################
220
221
fossil unversioned cat unversioned4.txt
222
set hash(after) [::sha1::sha1 $RESULT]
223
test unversioned-29 {$hash(after) ne $hash(before)}
224
test unversioned-30 {[regexp { \d+ (?:-)?\d+$} $RESULT]}
225
226
###############################################################################
227
228
fossil unversioned edit unversioned4.txt --mtime 2016-10-01
229
test unversioned-31 {[normalize_result] eq {}}
230
231
###############################################################################
232
233
fossil unversioned cat unversioned4.txt
234
test unversioned-32 {[regexp { \d+ (?:-)?\d+ \d+ (?:-)?\d+$} $RESULT]}
235
236
###############################################################################
237
238
fossil unversioned list
239
test unversioned-33 {[regexp \
240
{^[0-9a-f]{12} 2016-10-01 00:00:00 30 30\
241
unversioned2\.txt
242
[0-9a-f]{12} 2016-10-01 00:00:00 \d+ \d+\
243
unversioned4\.txt$} [normalize_result]]}
244
245
###############################################################################
246
247
fossil unversioned export unversioned2.txt unversioned2-ex.txt
248
test unversioned-34 {[normalize_result] eq {}}
249
test unversioned-35 {[::sha1::sha1 -hex -filename unversioned2-ex.txt] eq \
250
{962f96ebd613e4fdd9aa2d20bd9fe21a64e925f2}}
251
252
###############################################################################
253
254
fossil unversioned hash
255
test unversioned-36 {[regexp {^[0-9a-f]{40,64}$} [normalize_result]]}
256
257
###############################################################################
258
259
fossil unversioned hash --debug
260
test unversioned-37 {[regexp \
261
{^unversioned2\.txt 2016-10-01 00:00:00 [0-9a-f]{40,64}
262
unversioned4\.txt 2016-10-01 00:00:00 [0-9a-f]{40,64}
263
[0-9a-f]{40,64}$} [normalize_result]]}
264
265
###############################################################################
266
267
fossil unversioned remove unversioned4.txt --mtime "2016-10-02 13:47:29"
268
test unversioned-38 {[normalize_result] eq {}}
269
270
###############################################################################
271
272
fossil unversioned list --all
273
test unversioned-39 {[regexp \
274
{^\(deleted\) \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0 0\
275
unversioned1\.txt
276
[0-9a-f]{12} 2016-10-01 00:00:00 30 30 unversioned2\.txt
277
\(deleted\) \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0 0\
278
unversioned3\.txt
279
\(deleted\) 2016-10-02 13:47:29 0 0 unversioned4\.txt$} \
280
[normalize_result]]}
281
282
###############################################################################
283
284
fossil unversioned touch unversioned1.txt --mtime "2016-10-03 23:01:44"
285
test unversioned-40 {[normalize_result] eq {}}
286
287
###############################################################################
288
289
fossil unversioned list --all
290
test unversioned-41 {[regexp \
291
{^\(deleted\) 2016-10-03 23:01:44 0 0\
292
unversioned1\.txt
293
[0-9a-f]{12} 2016-10-01 00:00:00 30 30 unversioned2\.txt
294
\(deleted\) \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0 0\
295
unversioned3\.txt
296
\(deleted\) 2016-10-02 13:47:29 0 0 unversioned4\.txt$} \
297
[normalize_result]]}
298
299
###############################################################################
300
301
fossil unversioned add unversioned5.txt
302
test unversioned-42 {[normalize_result] eq {}}
303
304
###############################################################################
305
306
fossil unversioned touch unversioned5.txt
307
test unversioned-43 {[normalize_result] eq {}}
308
309
###############################################################################
310
311
fossil unversioned list
312
test unversioned-44 {[regexp \
313
{^[0-9a-f]{12} 2016-10-01 00:00:00 30 30 unversioned2\.txt
314
[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 28 28\
315
unversioned5\.txt$} [normalize_result]]}
316
317
###############################################################################
318
319
set password [string trim [clock seconds] -]
320
321
fossil user new uvtester "Unversioned Test User" $password
322
fossil user capabilities uvtester oy
323
324
###############################################################################
325
326
foreach {pid port outTmpFile} [test_start_server $repository stopArg] {}
327
if {! $::QUIET} {
328
puts [appendArgs "Started Fossil server, pid \"" $pid \" ", port \"" $port \".]
329
}
330
set remote [appendArgs http://uvtester: $password @localhost: $port /]
331
332
###############################################################################
333
334
set clientDir [file join $tempPath [appendArgs \
335
uvtest_ [string trim [clock seconds] -] _ [getSeqNo]]]
336
337
set savedPwd [pwd]
338
file mkdir $clientDir; cd $clientDir
339
if {! $::QUIET} {
340
puts [appendArgs "Now in client directory \"" [pwd] \".]
341
}
342
write_file unversioned-client1.txt "This is unversioned client file #1."
343
344
###############################################################################
345
346
fossil clone --save-http-password $remote uvrepo.fossil
347
fossil open -f uvrepo.fossil
348
349
###############################################################################
350
351
fossil unversioned list
352
test unversioned-45 {[normalize_result] eq {}}
353
354
###############################################################################
355
356
fossil_maybe_answer y unversioned sync $remote
357
test unversioned-46 {[regexp \
358
{Round-trips: 1 Artifacts sent: 0 received: 0
359
Round-trips: 1 Artifacts sent: 0 received: 0
360
Round-trips: 2 Artifacts sent: 0 received: 0
361
Round-trips: 2 Artifacts sent: 0 received: 2
362
\n? done, wire bytes sent: \d+ received: \d+ remote: (?:127\.0\.0\.1|::1)} \
363
[normalize_result]]}
364
365
###############################################################################
366
367
fossil unversioned ls
368
test unversioned-47 {[normalize_result] eq {unversioned2.txt
369
unversioned5.txt}}
370
371
###############################################################################
372
373
set env(FAKE_EDITOR_SCRIPT) "append data this_is_a_test"; # deterministic
374
375
fossil unversioned edit unversioned2.txt
376
test unversioned-48 {[normalize_result] eq {}}
377
378
unset env(FAKE_EDITOR_SCRIPT)
379
380
###############################################################################
381
382
fossil unversioned cat unversioned2.txt
383
test unversioned-49 {[::sha1::sha1 $RESULT] eq \
384
{e15d4b576fc04e3bb5e44a33d44d104dd5b19428}}
385
386
###############################################################################
387
388
fossil unversioned remove unversioned5.txt
389
test unversioned-50 {[normalize_result] eq {}}
390
391
###############################################################################
392
393
fossil unversioned list --all
394
test unversioned-51 {[regexp \
395
{^[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 44 44\
396
unversioned2\.txt
397
\(deleted\) \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 0 0\
398
unversioned5\.txt$} [normalize_result]]}
399
400
###############################################################################
401
402
fossil_maybe_answer y unversioned revert $remote
403
test unversioned-52 {[regexp \
404
{Round-trips: 1 Artifacts sent: 0 received: 0
405
Round-trips: 1 Artifacts sent: 0 received: 0
406
Round-trips: 2 Artifacts sent: 0 received: 0
407
Round-trips: 2 Artifacts sent: 0 received: 2
408
\n? done, wire bytes sent: \d+ received: \d+ remote: (?:127\.0\.0\.1|::1)} \
409
[normalize_result]]}
410
411
###############################################################################
412
413
fossil unversioned list
414
test unversioned-53 {[regexp \
415
{^[0-9a-f]{12} 2016-10-01 00:00:00 30 30\
416
unversioned2\.txt
417
[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 28 28\
418
unversioned5\.txt$} [normalize_result]]}
419
420
###############################################################################
421
422
fossil unversioned add unversioned-client1.txt
423
test unversioned-54 {[normalize_result] eq {}}
424
425
###############################################################################
426
427
fossil_maybe_answer y unversioned sync $remote
428
test unversioned-55 {[regexp \
429
{Round-trips: 1 Artifacts sent: 0 received: 0
430
Round-trips: 1 Artifacts sent: 0 received: 0
431
Round-trips: 2 Artifacts sent: 1 received: 0
432
Round-trips: 2 Artifacts sent: 1 received: 0
433
\n? done, wire bytes sent: \d+ received: \d+ remote: (?:127\.0\.0\.1|::1)} \
434
[normalize_result]]}
435
436
###############################################################################
437
438
fossil close
439
test unversioned-56 {[normalize_result] eq {}}
440
441
###############################################################################
442
443
cd $savedPwd; unset savedPwd
444
file delete -force $clientDir
445
if {! $::QUIET} {
446
puts [appendArgs "Now in server directory \"" [pwd] \".]
447
}
448
449
###############################################################################
450
451
set stopped [test_stop_server $stopArg $pid $outTmpFile]
452
453
if {! $::QUIET} {
454
puts [appendArgs \
455
[expr {$stopped ? "Stopped" : "Could not stop"}] \
456
" Fossil server, pid \"" $pid "\", using argument \"" \
457
$stopArg \".]
458
}
459
460
###############################################################################
461
462
fossil unversioned list
463
test unversioned-57 {[regexp \
464
{^[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 35 35\
465
unversioned-client1\.txt
466
[0-9a-f]{12} 2016-10-01 00:00:00 30 30 unversioned2\.txt
467
[0-9a-f]{12} \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} 28 28\
468
unversioned5\.txt$} [normalize_result]]}
469
470
###############################################################################
471
472
fossil unversioned cat unversioned-client1.txt
473
test unversioned-58 {[::sha1::sha1 $RESULT] eq \
474
{a34606f714afe309bb531fba6051eaf25201e8a2}}
475
476
###############################################################################
477
478
test_cleanup
479

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button