##// END OF EJS Templates
pull: return 1 when no changes found (BC)...
pull: return 1 when no changes found (BC) Currently we have the following return codes if nothing is found: commit incoming outgoing pull push intended 1 1 1 1 1 documented 1 1 1 0 1 actual 1 1 1 0 1 This makes pull agree with the rest of the table and makes it easy to detect "nothing was pulled" in scripts.

File last commit:

r15446:c5c9ca37 default
r16039:093b75c7 stable
Show More
test-archive.t
267 lines | 7.8 KiB | text/troff | Tads3Lexer
Mads Kiilerich
tests: use 'hghave serve' to guard tests that requires serve daemon management
r15446 $ "$TESTDIR/hghave" serve || exit 80
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
$ echo "[web]" >> .hg/hgrc
$ echo "name = test-archive" >> .hg/hgrc
$ 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
> "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/archive/tip.$2" | head -n 1
> echo % $3 and $4 disallowed should both give 403
> "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/archive/tip.$3" | head -n 1
> "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/archive/tip.$4" | head -n 1
> "$TESTDIR/killdaemons.py"
> 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
$ "$TESTDIR/get-with-headers.py" localhost:$HGPORT "/archive/tip.invalid" | head -n 1
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
> node, archive = sys.argv[1:]
> f = urllib2.urlopen('http://127.0.0.1:%s/?cmd=archive;node=%s;type=%s'
> % (os.environ['HGPORT'], node, archive))
> sys.stdout.write(f.read())
> 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
test-archive-2c0277f05ed4/.hg_archival.txt
test-archive-2c0277f05ed4/bar
test-archive-2c0277f05ed4/baz/bletch
test-archive-2c0277f05ed4/foo
$ python getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null
test-archive-2c0277f05ed4/.hg_archival.txt
test-archive-2c0277f05ed4/bar
test-archive-2c0277f05ed4/baz/bletch
test-archive-2c0277f05ed4/foo
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 Mackall
tests: drop a bunch of sed calls from unified tests
r12366 testing: test-archive-2c0277f05ed4/.hg_archival.txt OK
testing: test-archive-2c0277f05ed4/bar OK
testing: test-archive-2c0277f05ed4/baz/bletch OK
testing: test-archive-2c0277f05ed4/foo OK
Martin Geisler
tests: unify test-archive
r11853 No errors detected in compressed data of archive.zip.
$ "$TESTDIR/killdaemons.py"
$ hg archive -t tar test.tar
$ tar tf test.tar
test/.hg_archival.txt
test/bar
test/baz/bletch
test/foo
$ hg archive -t tbz2 -X baz test.tar.bz2
$ bunzip2 -dc test.tar.bz2 | tar tf - 2>/dev/null
test/.hg_archival.txt
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
test-2c0277f05ed4/.hg_archival.txt
test-2c0277f05ed4/bar
test-2c0277f05ed4/baz/bletch
test-2c0277f05ed4/foo
Martin Geisler
tests: unify test-archive
r11853
$ hg archive autodetected_test.tar
$ tar tf autodetected_test.tar
autodetected_test/.hg_archival.txt
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
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
test-2c0277f05ed4/.hg_archival.txt
test-2c0277f05ed4/bar
test-2c0277f05ed4/baz/bletch
test-2c0277f05ed4/foo
Martin Geisler
tests: unify test-archive
r11853
$ hg archive -r 0 -t tar rev-%r.tar
$ if [ -f rev-0.tar ]; then
$ fi
test .hg_archival.txt
$ hg archive ../test-tags
$ cat ../test-tags/.hg_archival.txt
repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
branch: default
latesttag: null
latesttagdistance: 3
$ 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
$ hg archive ../with-progress 2>&1 | $TESTDIR/filtercr.py
archiving [ ] 0/4
archiving [ ] 0/4
archiving [=========> ] 1/4
archiving [=========> ] 1/4
archiving [====================> ] 2/4
archiving [====================> ] 2/4
archiving [===============================> ] 3/4
archiving [===============================> ] 3/4
archiving [==========================================>] 4/4
archiving [==========================================>] 4/4
\r (esc)
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)
*147*80*00:00*old/.hg_archival.txt (glob)
*0*80*00:00*old/old (glob)
*-----* (glob)
Brodie Rao
tests: require regexes in unified tests to be marked with " (re)"...
r12375 \s*147\s+2 files (re)