##// END OF EJS Templates
tests: use regex instead of Python versions for archive hash changes...
Augie Fackler -
r40341:6519f5ae default
parent child Browse files
Show More
@@ -1,611 +1,609 b''
1 1 #require serve
2 2
3 3 $ hg init test
4 4 $ cd test
5 5 $ echo foo>foo
6 6 $ hg commit -Am 1 -d '1 0'
7 7 adding foo
8 8 $ echo bar>bar
9 9 $ hg commit -Am 2 -d '2 0'
10 10 adding bar
11 11 $ mkdir baz
12 12 $ echo bletch>baz/bletch
13 13 $ hg commit -Am 3 -d '1000000000 0'
14 14 adding baz/bletch
15 15 $ hg init subrepo
16 16 $ touch subrepo/sub
17 17 $ hg -q -R subrepo ci -Am "init subrepo"
18 18 $ echo "subrepo = subrepo" > .hgsub
19 19 $ hg add .hgsub
20 20 $ hg ci -m "add subrepo"
21 21
22 22 $ cat >> $HGRCPATH <<EOF
23 23 > [extensions]
24 24 > share =
25 25 > EOF
26 26
27 27 hg subrepos are shared when the parent repo is shared
28 28
29 29 $ cd ..
30 30 $ hg share test shared1
31 31 updating working directory
32 32 sharing subrepo subrepo from $TESTTMP/test/subrepo
33 33 5 files updated, 0 files merged, 0 files removed, 0 files unresolved
34 34 $ cat shared1/subrepo/.hg/sharedpath
35 35 $TESTTMP/test/subrepo/.hg (no-eol)
36 36
37 37 hg subrepos are shared into existence on demand if the parent was shared
38 38
39 39 $ hg clone -qr 1 test clone1
40 40 $ hg share clone1 share2
41 41 updating working directory
42 42 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
43 43 $ hg -R clone1 -q pull
44 44 $ hg -R share2 update tip
45 45 sharing subrepo subrepo from $TESTTMP/test/subrepo
46 46 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
47 47 $ cat share2/subrepo/.hg/sharedpath
48 48 $TESTTMP/test/subrepo/.hg (no-eol)
49 49 $ echo 'mod' > share2/subrepo/sub
50 50 $ hg -R share2 ci -Sqm 'subrepo mod'
51 51 $ hg -R clone1 update -C tip
52 52 cloning subrepo subrepo from $TESTTMP/test/subrepo
53 53 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
54 54 $ find share2 | egrep 'sharedpath|00.+\.i' | sort
55 55 share2/.hg/sharedpath
56 56 share2/subrepo/.hg/sharedpath
57 57 $ hg -R share2 unshare
58 58 unsharing subrepo 'subrepo'
59 59 $ find share2 | egrep 'sharedpath|00.+\.i' | sort
60 60 share2/.hg/00changelog.i
61 61 share2/.hg/sharedpath.old
62 62 share2/.hg/store/00changelog.i
63 63 share2/.hg/store/00manifest.i
64 64 share2/subrepo/.hg/00changelog.i
65 65 share2/subrepo/.hg/sharedpath.old
66 66 share2/subrepo/.hg/store/00changelog.i
67 67 share2/subrepo/.hg/store/00manifest.i
68 68 $ hg -R share2/subrepo log -r tip -T compact
69 69 1[tip] 559dcc9bfa65 1970-01-01 00:00 +0000 test
70 70 subrepo mod
71 71
72 72 $ rm -rf clone1
73 73
74 74 $ hg clone -qr 1 test clone1
75 75 $ hg share clone1 shared3
76 76 updating working directory
77 77 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
78 78 $ hg -R clone1 -q pull
79 79 $ hg -R shared3 archive --config ui.archivemeta=False -r tip -S archive
80 80 sharing subrepo subrepo from $TESTTMP/test/subrepo
81 81 $ cat shared3/subrepo/.hg/sharedpath
82 82 $TESTTMP/test/subrepo/.hg (no-eol)
83 83 $ diff -r archive test
84 84 Only in test: .hg
85 85 Common subdirectories: archive/baz and test/baz (?)
86 86 Common subdirectories: archive/subrepo and test/subrepo (?)
87 87 Only in test/subrepo: .hg
88 88 [1]
89 89 $ rm -rf archive
90 90
91 91 $ cd test
92 92 $ echo "[web]" >> .hg/hgrc
93 93 $ echo "name = test-archive" >> .hg/hgrc
94 94 $ echo "archivesubrepos = True" >> .hg/hgrc
95 95 $ cp .hg/hgrc .hg/hgrc-base
96 96 > test_archtype() {
97 97 > echo "allow-archive = $1" >> .hg/hgrc
98 98 > test_archtype_run "$@"
99 99 > }
100 100 > test_archtype_deprecated() {
101 101 > echo "allow$1 = True" >> .hg/hgrc
102 102 > test_archtype_run "$@"
103 103 > }
104 104 > test_archtype_run() {
105 105 > hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log \
106 106 > --config extensions.blackbox= --config blackbox.track=develwarn
107 107 > cat hg.pid >> $DAEMON_PIDS
108 108 > echo % $1 allowed should give 200
109 109 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$2" -
110 110 > f --size --sha1 body
111 111 > echo % $3 and $4 disallowed should both give 403
112 112 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$3" -
113 113 > f --size --sha1 body
114 114 > get-with-headers.py --bodyfile body localhost:$HGPORT "archive/tip.$4" -
115 115 > f --size --sha1 body
116 116 > killdaemons.py
117 117 > cat errors.log
118 118 > hg blackbox --config extensions.blackbox= --config blackbox.track=
119 119 > cp .hg/hgrc-base .hg/hgrc
120 120 > }
121 121
122 122 check http return codes
123 123
124 124 $ test_archtype gz tar.gz tar.bz2 zip
125 125 % gz allowed should give 200
126 126 200 Script output follows
127 127 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.gz
128 128 content-type: application/x-gzip
129 129 date: $HTTP_DATE$
130 130 etag: W/"*" (glob)
131 131 server: testing stub value
132 132 transfer-encoding: chunked
133 133
134 134 body: size=408, sha1=8fa06531bddecc365a9f5edb0f88b65974bfe505
135 135 % tar.bz2 and zip disallowed should both give 403
136 136 403 Archive type not allowed: bz2
137 137 content-type: text/html; charset=ascii
138 138 date: $HTTP_DATE$
139 139 etag: W/"*" (glob)
140 140 server: testing stub value
141 141 transfer-encoding: chunked
142 142
143 143 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
144 144 403 Archive type not allowed: zip
145 145 content-type: text/html; charset=ascii
146 146 date: $HTTP_DATE$
147 147 etag: W/"*" (glob)
148 148 server: testing stub value
149 149 transfer-encoding: chunked
150 150
151 151 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
152 152 $ test_archtype bz2 tar.bz2 zip tar.gz
153 153 % bz2 allowed should give 200
154 154 200 Script output follows
155 155 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.bz2
156 156 content-type: application/x-bzip2
157 157 date: $HTTP_DATE$
158 158 etag: W/"*" (glob)
159 159 server: testing stub value
160 160 transfer-encoding: chunked
161 161
162 162 body: size=426, sha1=8d87f5aba6e14f1bfea6c232985982c278b2fb0b
163 163 % zip and tar.gz disallowed should both give 403
164 164 403 Archive type not allowed: zip
165 165 content-type: text/html; charset=ascii
166 166 date: $HTTP_DATE$
167 167 etag: W/"*" (glob)
168 168 server: testing stub value
169 169 transfer-encoding: chunked
170 170
171 171 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
172 172 403 Archive type not allowed: gz
173 173 content-type: text/html; charset=ascii
174 174 date: $HTTP_DATE$
175 175 etag: W/"*" (glob)
176 176 server: testing stub value
177 177 transfer-encoding: chunked
178 178
179 179 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
180 180 $ test_archtype zip zip tar.gz tar.bz2
181 181 % zip allowed should give 200
182 182 200 Script output follows
183 183 content-disposition: attachment; filename=test-archive-1701ef1f1510.zip
184 184 content-type: application/zip
185 185 date: $HTTP_DATE$
186 186 etag: W/"*" (glob)
187 187 server: testing stub value
188 188 transfer-encoding: chunked
189 189
190 body: size=1377, sha1=677b14d3d048778d5eb5552c14a67e6192068650 (no-py3 !)
191 body: size=1461, sha1=be6d3983aa13dfe930361b2569291cdedd02b537 (py3 !)
190 body: size=(1377|1461), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537) (re)
192 191 % tar.gz and tar.bz2 disallowed should both give 403
193 192 403 Archive type not allowed: gz
194 193 content-type: text/html; charset=ascii
195 194 date: $HTTP_DATE$
196 195 etag: W/"*" (glob)
197 196 server: testing stub value
198 197 transfer-encoding: chunked
199 198
200 199 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
201 200 403 Archive type not allowed: bz2
202 201 content-type: text/html; charset=ascii
203 202 date: $HTTP_DATE$
204 203 etag: W/"*" (glob)
205 204 server: testing stub value
206 205 transfer-encoding: chunked
207 206
208 207 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
209 208
210 209 check http return codes (with deprecated option)
211 210
212 211 $ test_archtype_deprecated gz tar.gz tar.bz2 zip
213 212 % gz allowed should give 200
214 213 200 Script output follows
215 214 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.gz
216 215 content-type: application/x-gzip
217 216 date: $HTTP_DATE$
218 217 etag: W/"*" (glob)
219 218 server: testing stub value
220 219 transfer-encoding: chunked
221 220
222 221 body: size=408, sha1=8fa06531bddecc365a9f5edb0f88b65974bfe505
223 222 % tar.bz2 and zip disallowed should both give 403
224 223 403 Archive type not allowed: bz2
225 224 content-type: text/html; charset=ascii
226 225 date: $HTTP_DATE$
227 226 etag: W/"*" (glob)
228 227 server: testing stub value
229 228 transfer-encoding: chunked
230 229
231 230 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
232 231 403 Archive type not allowed: zip
233 232 content-type: text/html; charset=ascii
234 233 date: $HTTP_DATE$
235 234 etag: W/"*" (glob)
236 235 server: testing stub value
237 236 transfer-encoding: chunked
238 237
239 238 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
240 239 $ test_archtype_deprecated bz2 tar.bz2 zip tar.gz
241 240 % bz2 allowed should give 200
242 241 200 Script output follows
243 242 content-disposition: attachment; filename=test-archive-1701ef1f1510.tar.bz2
244 243 content-type: application/x-bzip2
245 244 date: $HTTP_DATE$
246 245 etag: W/"*" (glob)
247 246 server: testing stub value
248 247 transfer-encoding: chunked
249 248
250 249 body: size=426, sha1=8d87f5aba6e14f1bfea6c232985982c278b2fb0b
251 250 % zip and tar.gz disallowed should both give 403
252 251 403 Archive type not allowed: zip
253 252 content-type: text/html; charset=ascii
254 253 date: $HTTP_DATE$
255 254 etag: W/"*" (glob)
256 255 server: testing stub value
257 256 transfer-encoding: chunked
258 257
259 258 body: size=1451, sha1=cbfa5574b337348bfd0564cc534474d002e7d6c7
260 259 403 Archive type not allowed: gz
261 260 content-type: text/html; charset=ascii
262 261 date: $HTTP_DATE$
263 262 etag: W/"*" (glob)
264 263 server: testing stub value
265 264 transfer-encoding: chunked
266 265
267 266 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
268 267 $ test_archtype_deprecated zip zip tar.gz tar.bz2
269 268 % zip allowed should give 200
270 269 200 Script output follows
271 270 content-disposition: attachment; filename=test-archive-1701ef1f1510.zip
272 271 content-type: application/zip
273 272 date: $HTTP_DATE$
274 273 etag: W/"*" (glob)
275 274 server: testing stub value
276 275 transfer-encoding: chunked
277 276
278 body: size=1377, sha1=677b14d3d048778d5eb5552c14a67e6192068650 (no-py3 !)
279 body: size=1461, sha1=be6d3983aa13dfe930361b2569291cdedd02b537 (py3 !)
277 body: size=(1377|1461), sha1=(677b14d3d048778d5eb5552c14a67e6192068650|be6d3983aa13dfe930361b2569291cdedd02b537) (re)
280 278 % tar.gz and tar.bz2 disallowed should both give 403
281 279 403 Archive type not allowed: gz
282 280 content-type: text/html; charset=ascii
283 281 date: $HTTP_DATE$
284 282 etag: W/"*" (glob)
285 283 server: testing stub value
286 284 transfer-encoding: chunked
287 285
288 286 body: size=1450, sha1=71f0b12d59f85fdcfe8ff493e2dc66863f2f7734
289 287 403 Archive type not allowed: bz2
290 288 content-type: text/html; charset=ascii
291 289 date: $HTTP_DATE$
292 290 etag: W/"*" (glob)
293 291 server: testing stub value
294 292 transfer-encoding: chunked
295 293
296 294 body: size=1451, sha1=4c5cf0f574446c44feb7f88f4e0e2a56bd92c352
297 295
298 296 $ echo "allow-archive = gz bz2 zip" >> .hg/hgrc
299 297 $ hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
300 298 $ cat hg.pid >> $DAEMON_PIDS
301 299
302 300 check archive links' order
303 301
304 302 $ get-with-headers.py localhost:$HGPORT "?revcount=1" | grep '/archive/tip.'
305 303 <a href="/archive/tip.zip">zip</a>
306 304 <a href="/archive/tip.tar.gz">gz</a>
307 305 <a href="/archive/tip.tar.bz2">bz2</a>
308 306
309 307 invalid arch type should give 404
310 308
311 309 $ get-with-headers.py localhost:$HGPORT "archive/tip.invalid" | head -n 1
312 310 404 Unsupported archive type: None
313 311
314 312 $ TIP=`hg id -v | cut -f1 -d' '`
315 313 $ QTIP=`hg id -q`
316 314 $ cat > getarchive.py <<EOF
317 315 > from __future__ import absolute_import
318 316 > import os
319 317 > import sys
320 318 > from mercurial import (
321 319 > util,
322 320 > )
323 321 > try:
324 322 > # Set stdout to binary mode for win32 platforms
325 323 > import msvcrt
326 324 > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
327 325 > except ImportError:
328 326 > pass
329 327 > if len(sys.argv) <= 3:
330 328 > node, archive = sys.argv[1:]
331 329 > requeststr = 'cmd=archive;node=%s;type=%s' % (node, archive)
332 330 > else:
333 331 > node, archive, file = sys.argv[1:]
334 332 > requeststr = 'cmd=archive;node=%s;type=%s;file=%s' % (node, archive, file)
335 333 > try:
336 334 > stdout = sys.stdout.buffer
337 335 > except AttributeError:
338 336 > stdout = sys.stdout
339 337 > try:
340 338 > f = util.urlreq.urlopen('http://$LOCALIP:%s/?%s'
341 339 > % (os.environ['HGPORT'], requeststr))
342 340 > stdout.write(f.read())
343 341 > except util.urlerr.httperror as e:
344 342 > sys.stderr.write(str(e) + '\n')
345 343 > EOF
346 344 $ "$PYTHON" getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null
347 345 test-archive-1701ef1f1510/.hg_archival.txt
348 346 test-archive-1701ef1f1510/.hgsub
349 347 test-archive-1701ef1f1510/.hgsubstate
350 348 test-archive-1701ef1f1510/bar
351 349 test-archive-1701ef1f1510/baz/bletch
352 350 test-archive-1701ef1f1510/foo
353 351 test-archive-1701ef1f1510/subrepo/sub
354 352 $ "$PYTHON" getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null
355 353 test-archive-1701ef1f1510/.hg_archival.txt
356 354 test-archive-1701ef1f1510/.hgsub
357 355 test-archive-1701ef1f1510/.hgsubstate
358 356 test-archive-1701ef1f1510/bar
359 357 test-archive-1701ef1f1510/baz/bletch
360 358 test-archive-1701ef1f1510/foo
361 359 test-archive-1701ef1f1510/subrepo/sub
362 360 $ "$PYTHON" getarchive.py "$TIP" zip > archive.zip
363 361 $ unzip -t archive.zip
364 362 Archive: archive.zip
365 363 testing: test-archive-1701ef1f1510/.hg_archival.txt*OK (glob)
366 364 testing: test-archive-1701ef1f1510/.hgsub*OK (glob)
367 365 testing: test-archive-1701ef1f1510/.hgsubstate*OK (glob)
368 366 testing: test-archive-1701ef1f1510/bar*OK (glob)
369 367 testing: test-archive-1701ef1f1510/baz/bletch*OK (glob)
370 368 testing: test-archive-1701ef1f1510/foo*OK (glob)
371 369 testing: test-archive-1701ef1f1510/subrepo/sub*OK (glob)
372 370 No errors detected in compressed data of archive.zip.
373 371
374 372 test that we can download single directories and files
375 373
376 374 $ "$PYTHON" getarchive.py "$TIP" gz baz | gunzip | tar tf - 2>/dev/null
377 375 test-archive-1701ef1f1510/baz/bletch
378 376 $ "$PYTHON" getarchive.py "$TIP" gz foo | gunzip | tar tf - 2>/dev/null
379 377 test-archive-1701ef1f1510/foo
380 378
381 379 test that we detect file patterns that match no files
382 380
383 381 $ "$PYTHON" getarchive.py "$TIP" gz foobar
384 382 HTTP Error 404: file(s) not found: foobar
385 383
386 384 test that we reject unsafe patterns
387 385
388 386 $ "$PYTHON" getarchive.py "$TIP" gz relre:baz
389 387 HTTP Error 404: file(s) not found: relre:baz
390 388
391 389 $ killdaemons.py
392 390
393 391 $ hg archive -t tar test.tar
394 392 $ tar tf test.tar
395 393 test/.hg_archival.txt
396 394 test/.hgsub
397 395 test/.hgsubstate
398 396 test/bar
399 397 test/baz/bletch
400 398 test/foo
401 399
402 400 $ hg archive --debug -t tbz2 -X baz test.tar.bz2 --config progress.debug=true
403 401 archiving: 0/4 files (0.00%)
404 402 archiving: .hgsub 1/4 files (25.00%)
405 403 archiving: .hgsubstate 2/4 files (50.00%)
406 404 archiving: bar 3/4 files (75.00%)
407 405 archiving: foo 4/4 files (100.00%)
408 406 $ bunzip2 -dc test.tar.bz2 | tar tf - 2>/dev/null
409 407 test/.hg_archival.txt
410 408 test/.hgsub
411 409 test/.hgsubstate
412 410 test/bar
413 411 test/foo
414 412
415 413 $ hg archive -t tgz -p %b-%h test-%h.tar.gz
416 414 $ gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null
417 415 test-1701ef1f1510/.hg_archival.txt
418 416 test-1701ef1f1510/.hgsub
419 417 test-1701ef1f1510/.hgsubstate
420 418 test-1701ef1f1510/bar
421 419 test-1701ef1f1510/baz/bletch
422 420 test-1701ef1f1510/foo
423 421
424 422 $ hg archive autodetected_test.tar
425 423 $ tar tf autodetected_test.tar
426 424 autodetected_test/.hg_archival.txt
427 425 autodetected_test/.hgsub
428 426 autodetected_test/.hgsubstate
429 427 autodetected_test/bar
430 428 autodetected_test/baz/bletch
431 429 autodetected_test/foo
432 430
433 431 The '-t' should override autodetection
434 432
435 433 $ hg archive -t tar autodetect_override_test.zip
436 434 $ tar tf autodetect_override_test.zip
437 435 autodetect_override_test.zip/.hg_archival.txt
438 436 autodetect_override_test.zip/.hgsub
439 437 autodetect_override_test.zip/.hgsubstate
440 438 autodetect_override_test.zip/bar
441 439 autodetect_override_test.zip/baz/bletch
442 440 autodetect_override_test.zip/foo
443 441
444 442 $ for ext in tar tar.gz tgz tar.bz2 tbz2 zip; do
445 443 > hg archive auto_test.$ext
446 444 > if [ -d auto_test.$ext ]; then
447 445 > echo "extension $ext was not autodetected."
448 446 > fi
449 447 > done
450 448
451 449 $ cat > md5comp.py <<EOF
452 450 > from __future__ import absolute_import, print_function
453 451 > import hashlib
454 452 > import sys
455 453 > f1, f2 = sys.argv[1:3]
456 454 > h1 = hashlib.md5(open(f1, 'rb').read()).hexdigest()
457 455 > h2 = hashlib.md5(open(f2, 'rb').read()).hexdigest()
458 456 > print(h1 == h2 or "md5 differ: " + repr((h1, h2)))
459 457 > EOF
460 458
461 459 archive name is stored in the archive, so create similar archives and
462 460 rename them afterwards.
463 461
464 462 $ hg archive -t tgz tip.tar.gz
465 463 $ mv tip.tar.gz tip1.tar.gz
466 464 $ sleep 1
467 465 $ hg archive -t tgz tip.tar.gz
468 466 $ mv tip.tar.gz tip2.tar.gz
469 467 $ "$PYTHON" md5comp.py tip1.tar.gz tip2.tar.gz
470 468 True
471 469
472 470 $ hg archive -t zip -p /illegal test.zip
473 471 abort: archive prefix contains illegal components
474 472 [255]
475 473 $ hg archive -t zip -p very/../bad test.zip
476 474
477 475 $ hg archive --config ui.archivemeta=false -t zip -r 2 test.zip
478 476 $ unzip -t test.zip
479 477 Archive: test.zip
480 478 testing: test/bar*OK (glob)
481 479 testing: test/baz/bletch*OK (glob)
482 480 testing: test/foo*OK (glob)
483 481 No errors detected in compressed data of test.zip.
484 482
485 483 $ hg archive -t tar - | tar tf - 2>/dev/null
486 484 test-1701ef1f1510/.hg_archival.txt
487 485 test-1701ef1f1510/.hgsub
488 486 test-1701ef1f1510/.hgsubstate
489 487 test-1701ef1f1510/bar
490 488 test-1701ef1f1510/baz/bletch
491 489 test-1701ef1f1510/foo
492 490
493 491 $ hg archive -r 0 -t tar rev-%r.tar
494 492 $ [ -f rev-0.tar ]
495 493
496 494 test .hg_archival.txt
497 495
498 496 $ hg archive ../test-tags
499 497 $ cat ../test-tags/.hg_archival.txt
500 498 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
501 499 node: 1701ef1f151069b8747038e93b5186bb43a47504
502 500 branch: default
503 501 latesttag: null
504 502 latesttagdistance: 4
505 503 changessincelatesttag: 4
506 504 $ hg tag -r 2 mytag
507 505 $ hg tag -r 2 anothertag
508 506 $ hg archive -r 2 ../test-lasttag
509 507 $ cat ../test-lasttag/.hg_archival.txt
510 508 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
511 509 node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
512 510 branch: default
513 511 tag: anothertag
514 512 tag: mytag
515 513
516 514 $ hg archive -t bogus test.bogus
517 515 abort: unknown archive type 'bogus'
518 516 [255]
519 517
520 518 enable progress extension:
521 519
522 520 $ cp $HGRCPATH $HGRCPATH.no-progress
523 521 $ cat >> $HGRCPATH <<EOF
524 522 > [progress]
525 523 > assume-tty = 1
526 524 > format = topic bar number
527 525 > delay = 0
528 526 > refresh = 0
529 527 > width = 60
530 528 > EOF
531 529
532 530 $ hg archive ../with-progress
533 531 \r (no-eol) (esc)
534 532 archiving [ ] 0/6\r (no-eol) (esc)
535 533 archiving [======> ] 1/6\r (no-eol) (esc)
536 534 archiving [=============> ] 2/6\r (no-eol) (esc)
537 535 archiving [====================> ] 3/6\r (no-eol) (esc)
538 536 archiving [===========================> ] 4/6\r (no-eol) (esc)
539 537 archiving [==================================> ] 5/6\r (no-eol) (esc)
540 538 archiving [==========================================>] 6/6\r (no-eol) (esc)
541 539 \r (no-eol) (esc)
542 540
543 541 cleanup after progress extension test:
544 542
545 543 $ cp $HGRCPATH.no-progress $HGRCPATH
546 544
547 545 server errors
548 546
549 547 $ cat errors.log
550 548
551 549 empty repo
552 550
553 551 $ hg init ../empty
554 552 $ cd ../empty
555 553 $ hg archive ../test-empty
556 554 abort: no working directory: please specify a revision
557 555 [255]
558 556
559 557 old file -- date clamped to 1980
560 558
561 559 $ touch -t 197501010000 old
562 560 $ hg add old
563 561 $ hg commit -m old
564 562 $ hg archive ../old.zip
565 563 $ unzip -l ../old.zip | grep -v -- ----- | egrep -v files$
566 564 Archive: ../old.zip
567 565 \s*Length.* (re)
568 566 *172*80*00:00*old/.hg_archival.txt (glob)
569 567 *0*80*00:00*old/old (glob)
570 568
571 569 show an error when a provided pattern matches no files
572 570
573 571 $ hg archive -I file_that_does_not_exist.foo ../empty.zip
574 572 abort: no files match the archive pattern
575 573 [255]
576 574
577 575 $ hg archive -X * ../empty.zip
578 576 abort: no files match the archive pattern
579 577 [255]
580 578
581 579 $ cd ..
582 580
583 581 issue3600: check whether "hg archive" can create archive files which
584 582 are extracted with expected timestamp, even though TZ is not
585 583 configured as GMT.
586 584
587 585 $ mkdir issue3600
588 586 $ cd issue3600
589 587
590 588 $ hg init repo
591 589 $ echo a > repo/a
592 590 $ hg -R repo add repo/a
593 591 $ hg -R repo commit -m '#0' -d '456789012 21600'
594 592 $ cat > show_mtime.py <<EOF
595 593 > from __future__ import absolute_import, print_function
596 594 > import os
597 595 > import sys
598 596 > print(int(os.stat(sys.argv[1]).st_mtime))
599 597 > EOF
600 598
601 599 $ hg -R repo archive --prefix tar-extracted archive.tar
602 600 $ (TZ=UTC-3; export TZ; tar xf archive.tar)
603 601 $ "$PYTHON" show_mtime.py tar-extracted/a
604 602 456789012
605 603
606 604 $ hg -R repo archive --prefix zip-extracted archive.zip
607 605 $ (TZ=UTC-3; export TZ; unzip -q archive.zip)
608 606 $ "$PYTHON" show_mtime.py zip-extracted/a
609 607 456789012
610 608
611 609 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now