##// END OF EJS Templates
subrepo: prefetch ctx.repo() for efficiency and centralization...
subrepo: prefetch ctx.repo() for efficiency and centralization 'subrepo.state()' refers same 'ctx.repo()' in many places and times.

File last commit:

r25482:95f49013 default
r25768:7a9ef860 default
Show More
test-archive.t
362 lines | 10.6 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: replace exit 80 with #require
r22046 #require serve
Mads Kiilerich
tests: use 'hghave serve' to guard tests that requires serve daemon management
r15446
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init test
Martin Geisler
tests: unify test-archive
r11853 $ cd test
$ echo foo>foo
$ hg commit -Am 1 -d '1 0'
adding foo
$ echo bar>bar
$ hg commit -Am 2 -d '2 0'
adding bar
$ mkdir baz
$ echo bletch>baz/bletch
$ hg commit -Am 3 -d '1000000000 0'
adding baz/bletch
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 $ hg init subrepo
$ touch subrepo/sub
$ hg -q -R subrepo ci -Am "init subrepo"
$ echo "subrepo = subrepo" > .hgsub
$ hg add .hgsub
$ hg ci -m "add subrepo"
Martin Geisler
tests: unify test-archive
r11853 $ echo "[web]" >> .hg/hgrc
$ echo "name = test-archive" >> .hg/hgrc
Matt Harbison
hgweb: fix a crash when using web.archivesubrepos...
r23232 $ echo "archivesubrepos = True" >> .hg/hgrc
Martin Geisler
tests: unify test-archive
r11853 $ cp .hg/hgrc .hg/hgrc-base
> test_archtype() {
> echo "allow_archive = $1" >> .hg/hgrc
> hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
> cat hg.pid >> $DAEMON_PIDS
> echo % $1 allowed should give 200
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 > get-with-headers.py localhost:$HGPORT "archive/tip.$2" | head -n 1
Martin Geisler
tests: unify test-archive
r11853 > echo % $3 and $4 disallowed should both give 403
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 > get-with-headers.py localhost:$HGPORT "archive/tip.$3" | head -n 1
> get-with-headers.py localhost:$HGPORT "archive/tip.$4" | head -n 1
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 > killdaemons.py
Martin Geisler
tests: unify test-archive
r11853 > cat errors.log
> cp .hg/hgrc-base .hg/hgrc
> }
check http return codes
$ test_archtype gz tar.gz tar.bz2 zip
% gz allowed should give 200
200 Script output follows
% tar.bz2 and zip disallowed should both give 403
403 Archive type not allowed: bz2
403 Archive type not allowed: zip
$ test_archtype bz2 tar.bz2 zip tar.gz
% bz2 allowed should give 200
200 Script output follows
% zip and tar.gz disallowed should both give 403
403 Archive type not allowed: zip
403 Archive type not allowed: gz
$ test_archtype zip zip tar.gz tar.bz2
% zip allowed should give 200
200 Script output follows
% tar.gz and tar.bz2 disallowed should both give 403
403 Archive type not allowed: gz
403 Archive type not allowed: bz2
$ echo "allow_archive = gz bz2 zip" >> .hg/hgrc
$ hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
$ cat hg.pid >> $DAEMON_PIDS
invalid arch type should give 404
Matt Mackall
tests: drop explicit $TESTDIR from executables...
r25472 $ get-with-headers.py localhost:$HGPORT "archive/tip.invalid" | head -n 1
Martin Geisler
tests: unify test-archive
r11853 404 Unsupported archive type: None
$ TIP=`hg id -v | cut -f1 -d' '`
$ QTIP=`hg id -q`
$ cat > getarchive.py <<EOF
> import os, sys, urllib2
> try:
> # Set stdout to binary mode for win32 platforms
> import msvcrt
> msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
> except ImportError:
> pass
Angel Ezquerra
test-archive: gracefully handle HTTPErrors on get-with-headers...
r18770 > if len(sys.argv) <= 3:
> node, archive = sys.argv[1:]
> requeststr = 'cmd=archive;node=%s;type=%s' % (node, archive)
> else:
> node, archive, file = sys.argv[1:]
> requeststr = 'cmd=archive;node=%s;type=%s;file=%s' % (node, archive, file)
> try:
> f = urllib2.urlopen('http://127.0.0.1:%s/?%s'
> % (os.environ['HGPORT'], requeststr))
> sys.stdout.write(f.read())
> except urllib2.HTTPError, e:
> sys.stderr.write(str(e) + '\n')
Martin Geisler
tests: unify test-archive
r11853 > EOF
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ python getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 test-archive-1701ef1f1510/.hg_archival.txt
test-archive-1701ef1f1510/.hgsub
test-archive-1701ef1f1510/.hgsubstate
test-archive-1701ef1f1510/bar
test-archive-1701ef1f1510/baz/bletch
test-archive-1701ef1f1510/foo
Matt Harbison
hgweb: fix a crash when using web.archivesubrepos...
r23232 test-archive-1701ef1f1510/subrepo/sub
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ python getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 test-archive-1701ef1f1510/.hg_archival.txt
test-archive-1701ef1f1510/.hgsub
test-archive-1701ef1f1510/.hgsubstate
test-archive-1701ef1f1510/bar
test-archive-1701ef1f1510/baz/bletch
test-archive-1701ef1f1510/foo
Matt Harbison
hgweb: fix a crash when using web.archivesubrepos...
r23232 test-archive-1701ef1f1510/subrepo/sub
Martin Geisler
tests: unify test-archive
r11853 $ python getarchive.py "$TIP" zip > archive.zip
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ unzip -t archive.zip
Martin Geisler
tests: unify test-archive
r11853 Archive: archive.zip
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 testing: test-archive-1701ef1f1510/.hg_archival.txt OK
testing: test-archive-1701ef1f1510/.hgsub OK
testing: test-archive-1701ef1f1510/.hgsubstate OK
testing: test-archive-1701ef1f1510/bar OK
testing: test-archive-1701ef1f1510/baz/bletch OK
testing: test-archive-1701ef1f1510/foo OK
Matt Harbison
hgweb: fix a crash when using web.archivesubrepos...
r23232 testing: test-archive-1701ef1f1510/subrepo/sub OK
Martin Geisler
tests: unify test-archive
r11853 No errors detected in compressed data of archive.zip.
Angel Ezquerra
hgweb: teach archive how to download a specific directory or file...
r18771 test that we can download single directories and files
$ python getarchive.py "$TIP" gz baz | gunzip | tar tf - 2>/dev/null
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 test-archive-1701ef1f1510/baz/bletch
Angel Ezquerra
hgweb: teach archive how to download a specific directory or file...
r18771 $ python getarchive.py "$TIP" gz foo | gunzip | tar tf - 2>/dev/null
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 test-archive-1701ef1f1510/foo
Angel Ezquerra
hgweb: teach archive how to download a specific directory or file...
r18771
Angel Ezquerra
hgweb: respond HTTP_NOT_FOUND when an archive request does not match any files
r18968 test that we detect file patterns that match no files
$ python getarchive.py "$TIP" gz foobar
HTTP Error 404: file(s) not found: foobar
Angel Ezquerra
hgweb: teach archive how to download a specific directory or file...
r18771 test that we reject unsafe patterns
$ python getarchive.py "$TIP" gz relre:baz
Angel Ezquerra
hgweb: respond HTTP_NOT_FOUND when an archive request does not match any files
r18968 HTTP Error 404: file(s) not found: relre:baz
Angel Ezquerra
hgweb: teach archive how to download a specific directory or file...
r18771
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py
Martin Geisler
tests: unify test-archive
r11853
$ hg archive -t tar test.tar
$ tar tf test.tar
test/.hg_archival.txt
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 test/.hgsub
test/.hgsubstate
Martin Geisler
tests: unify test-archive
r11853 test/bar
test/baz/bletch
test/foo
Pierre-Yves David
progress: get the extremely verbose output out of default debug...
r25125 $ hg archive --debug -t tbz2 -X baz test.tar.bz2 --config progress.debug=true
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 archiving: 0/4 files (0.00%)
archiving: .hgsub 1/4 files (25.00%)
archiving: .hgsubstate 2/4 files (50.00%)
archiving: bar 3/4 files (75.00%)
archiving: foo 4/4 files (100.00%)
Martin Geisler
tests: unify test-archive
r11853 $ bunzip2 -dc test.tar.bz2 | tar tf - 2>/dev/null
test/.hg_archival.txt
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 test/.hgsub
test/.hgsubstate
Martin Geisler
tests: unify test-archive
r11853 test/bar
test/foo
$ hg archive -t tgz -p %b-%h test-%h.tar.gz
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 test-1701ef1f1510/.hg_archival.txt
test-1701ef1f1510/.hgsub
test-1701ef1f1510/.hgsubstate
test-1701ef1f1510/bar
test-1701ef1f1510/baz/bletch
test-1701ef1f1510/foo
Martin Geisler
tests: unify test-archive
r11853
$ hg archive autodetected_test.tar
$ tar tf autodetected_test.tar
autodetected_test/.hg_archival.txt
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 autodetected_test/.hgsub
autodetected_test/.hgsubstate
Martin Geisler
tests: unify test-archive
r11853 autodetected_test/bar
autodetected_test/baz/bletch
autodetected_test/foo
The '-t' should override autodetection
$ hg archive -t tar autodetect_override_test.zip
$ tar tf autodetect_override_test.zip
autodetect_override_test.zip/.hg_archival.txt
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 autodetect_override_test.zip/.hgsub
autodetect_override_test.zip/.hgsubstate
Martin Geisler
tests: unify test-archive
r11853 autodetect_override_test.zip/bar
autodetect_override_test.zip/baz/bletch
autodetect_override_test.zip/foo
$ for ext in tar tar.gz tgz tar.bz2 tbz2 zip; do
> hg archive auto_test.$ext
> if [ -d auto_test.$ext ]; then
> echo "extension $ext was not autodetected."
> fi
> done
$ cat > md5comp.py <<EOF
> try:
> from hashlib import md5
> except ImportError:
> from md5 import md5
> import sys
> f1, f2 = sys.argv[1:3]
> h1 = md5(file(f1, 'rb').read()).hexdigest()
> h2 = md5(file(f2, 'rb').read()).hexdigest()
> print h1 == h2 or "md5 differ: " + repr((h1, h2))
> EOF
Martin Geisler
test-archive: whitespace cleanup
r13140 archive name is stored in the archive, so create similar archives and
rename them afterwards.
Martin Geisler
tests: unify test-archive
r11853
$ hg archive -t tgz tip.tar.gz
$ mv tip.tar.gz tip1.tar.gz
$ sleep 1
$ hg archive -t tgz tip.tar.gz
$ mv tip.tar.gz tip2.tar.gz
$ python md5comp.py tip1.tar.gz tip2.tar.gz
True
$ hg archive -t zip -p /illegal test.zip
abort: archive prefix contains illegal components
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-archive
r11853 $ hg archive -t zip -p very/../bad test.zip
$ hg archive --config ui.archivemeta=false -t zip -r 2 test.zip
$ unzip -t test.zip
Archive: test.zip
testing: test/bar OK
testing: test/baz/bletch OK
testing: test/foo OK
No errors detected in compressed data of test.zip.
Matt Mackall
tests: drop a bunch of sed calls from unified tests
r12366 $ hg archive -t tar - | tar tf - 2>/dev/null
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 test-1701ef1f1510/.hg_archival.txt
test-1701ef1f1510/.hgsub
test-1701ef1f1510/.hgsubstate
test-1701ef1f1510/bar
test-1701ef1f1510/baz/bletch
test-1701ef1f1510/foo
Martin Geisler
tests: unify test-archive
r11853
$ hg archive -r 0 -t tar rev-%r.tar
Mads Kiilerich
tests: fix void and invalid test in test-archive.t...
r19870 $ [ -f rev-0.tar ]
Martin Geisler
tests: unify test-archive
r11853
test .hg_archival.txt
$ hg archive ../test-tags
$ cat ../test-tags/.hg_archival.txt
repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 node: 1701ef1f151069b8747038e93b5186bb43a47504
Martin Geisler
tests: unify test-archive
r11853 branch: default
latesttag: null
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 latesttagdistance: 4
Siddharth Agarwal
archive: store number of changes since latest tag as well...
r23645 changessincelatesttag: 4
Martin Geisler
tests: unify test-archive
r11853 $ hg tag -r 2 mytag
$ hg tag -r 2 anothertag
$ hg archive -r 2 ../test-lasttag
$ cat ../test-lasttag/.hg_archival.txt
repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
branch: default
tag: anothertag
tag: mytag
$ hg archive -t bogus test.bogus
abort: unknown archive type 'bogus'
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
tests: unify test-archive
r11853
Martin Geisler
archive: add support for progress extension
r13143 enable progress extension:
$ cp $HGRCPATH $HGRCPATH.no-progress
$ cat >> $HGRCPATH <<EOF
> [extensions]
> progress =
> [progress]
> assume-tty = 1
Augie Fackler
progress using tests: disable time estimates to avoid flakiness
r13149 > format = topic bar number
Martin Geisler
archive: add support for progress extension
r13143 > delay = 0
> refresh = 0
> width = 60
> EOF
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 $ hg archive ../with-progress
\r (no-eol) (esc)
Matt Harbison
tests: introduce a subrepository to test-archive.t...
r23231 archiving [ ] 0/6\r (no-eol) (esc)
archiving [======> ] 1/6\r (no-eol) (esc)
archiving [=============> ] 2/6\r (no-eol) (esc)
archiving [====================> ] 3/6\r (no-eol) (esc)
archiving [===========================> ] 4/6\r (no-eol) (esc)
archiving [==================================> ] 5/6\r (no-eol) (esc)
archiving [==========================================>] 6/6\r (no-eol) (esc)
Mads Kiilerich
tests: drop filtercr.py and use the very explicit '\r (no-eol) (esc)' markup
r17743 \r (no-eol) (esc)
Martin Geisler
archive: add support for progress extension
r13143
cleanup after progress extension test:
$ cp $HGRCPATH.no-progress $HGRCPATH
Martin Geisler
tests: unify test-archive
r11853 server errors
$ cat errors.log
empty repo
$ hg init ../empty
$ cd ../empty
$ hg archive ../test-empty
abort: no working directory: please specify a revision
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Martin Geisler
test-archive: whitespace cleanup
r13140
Martin Geisler
merge with stable
r12321 old file -- date clamped to 1980
Matt Mackall
tests: fix touch -t with RHEL
r12368 $ touch -t 197501010000 old
Martin Geisler
merge with stable
r12321 $ hg add old
$ hg commit -m old
$ hg archive ../old.zip
$ unzip -l ../old.zip
Archive: ../old.zip
Brodie Rao
tests: require regexes in unified tests to be marked with " (re)"...
r12375 \s*Length.* (re)
Brodie Rao
tests: add glob matching for unified tests...
r12376 *-----* (glob)
Siddharth Agarwal
archive: store number of changes since latest tag as well...
r23645 *172*80*00:00*old/.hg_archival.txt (glob)
Brodie Rao
tests: add glob matching for unified tests...
r12376 *0*80*00:00*old/old (glob)
*-----* (glob)
Siddharth Agarwal
archive: store number of changes since latest tag as well...
r23645 \s*172\s+2 files (re)
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
Angel Ezquerra
archive: raise error.Abort if the file pattern matches no files...
r18967 show an error when a provided pattern matches no files
$ hg archive -I file_that_does_not_exist.foo ../empty.zip
abort: no files match the archive pattern
[255]
$ hg archive -X * ../empty.zip
abort: no files match the archive pattern
[255]
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..
FUJIWARA Katsunori
archival: add "extended-timestamp" extra block for zip archives (issue3600)...
r17628
issue3600: check whether "hg archive" can create archive files which
are extracted with expected timestamp, even though TZ is not
configured as GMT.
$ mkdir issue3600
$ cd issue3600
$ hg init repo
$ echo a > repo/a
$ hg -R repo add repo/a
$ hg -R repo commit -m '#0' -d '456789012 21600'
$ cat > show_mtime.py <<EOF
> import sys, os
> print int(os.stat(sys.argv[1]).st_mtime)
> EOF
$ hg -R repo archive --prefix tar-extracted archive.tar
$ (TZ=UTC-3; export TZ; tar xf archive.tar)
$ python show_mtime.py tar-extracted/a
456789012
$ hg -R repo archive --prefix zip-extracted archive.zip
$ (TZ=UTC-3; export TZ; unzip -q archive.zip)
$ python show_mtime.py zip-extracted/a
456789012
$ cd ..