|
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
|
|