test-archive
150 lines
| 3.9 KiB
| text/plain
|
TextLexer
/ tests / test-archive
Thomas Arendsen Hein
|
r1166 | #!/bin/sh | ||
mkdir test | ||||
cd test | ||||
hg init | ||||
echo foo>foo | ||||
Brendan Cully
|
r4653 | hg commit -Am 1 -d '1 0' | ||
Thomas Arendsen Hein
|
r1166 | echo bar>bar | ||
Brendan Cully
|
r4653 | hg commit -Am 2 -d '2 0' | ||
Thomas Arendsen Hein
|
r1166 | mkdir baz | ||
echo bletch>baz/bletch | ||||
Brendan Cully
|
r4653 | hg commit -Am 3 -d '1000000000 0' | ||
mpm@selenic.com
|
r1260 | echo "[web]" >> .hg/hgrc | ||
Thomas Arendsen Hein
|
r1166 | echo "name = test-archive" >> .hg/hgrc | ||
Rocco Rutte
|
r7029 | cp .hg/hgrc .hg/hgrc-base | ||
# check http return codes | ||||
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 | ||||
Matt Mackall
|
r7344 | "$TESTDIR/killdaemons.py" | ||
Rocco Rutte
|
r7029 | cat errors.log | ||
cp .hg/hgrc-base .hg/hgrc | ||||
} | ||||
echo | ||||
test_archtype gz tar.gz tar.bz2 zip | ||||
test_archtype bz2 tar.bz2 zip tar.gz | ||||
test_archtype zip zip tar.gz tar.bz2 | ||||
echo "allow_archive = gz bz2 zip" >> .hg/hgrc | ||||
Dirkjan Ochtman
|
r5924 | hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log | ||
Vadim Gelfer
|
r2571 | cat hg.pid >> $DAEMON_PIDS | ||
Thomas Arendsen Hein
|
r1166 | |||
Rocco Rutte
|
r7029 | echo % invalid arch type should give 404 | ||
"$TESTDIR/get-with-headers.py" localhost:$HGPORT "/archive/tip.invalid" | head -n 1 | ||||
echo | ||||
Thomas Arendsen Hein
|
r1166 | TIP=`hg id -v | cut -f1 -d' '` | ||
QTIP=`hg id -q` | ||||
cat > getarchive.py <<EOF | ||||
Bryan O'Sullivan
|
r5384 | import os, sys, urllib2 | ||
Patrick Mezard
|
r7080 | try: | ||
# Set stdout to binary mode for win32 platforms | ||||
import msvcrt | ||||
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) | ||||
except ImportError: | ||||
pass | ||||
Thomas Arendsen Hein
|
r1166 | node, archive = sys.argv[1:] | ||
Bryan O'Sullivan
|
r5384 | f = urllib2.urlopen('http://127.0.0.1:%s/?cmd=archive;node=%s;type=%s' | ||
% (os.environ['HGPORT'], node, archive)) | ||||
Thomas Arendsen Hein
|
r1166 | sys.stdout.write(f.read()) | ||
EOF | ||||
Wagner Bruna
|
r10154 | python getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/" | ||
python getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/" | ||||
python getarchive.py "$TIP" zip > archive.zip | ||||
Thomas Arendsen Hein
|
r1166 | unzip -t archive.zip | sed "s/$QTIP/TIP/" | ||
Matt Mackall
|
r7344 | "$TESTDIR/killdaemons.py" | ||
Vadim Gelfer
|
r2114 | hg archive -t tar test.tar | ||
tar tf test.tar | ||||
hg archive -t tbz2 -X baz test.tar.bz2 | ||||
Matt Mackall
|
r8145 | bunzip2 -dc test.tar.bz2 | tar tf - 2>/dev/null | ||
Vadim Gelfer
|
r2114 | |||
hg archive -t tgz -p %b-%h test-%h.tar.gz | ||||
Matt Mackall
|
r8145 | gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/" | ||
Vadim Gelfer
|
r2114 | |||
David Wolever
|
r10650 | hg archive autodetected_test.tar | ||
tar tf autodetected_test.tar | ||||
# The '-t' should override autodetection | ||||
hg archive -t tar autodetect_override_test.zip | ||||
tar tf autodetect_override_test.zip | ||||
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 | ||||
Patrick Mezard
|
r4805 | cat > md5comp.py <<EOF | ||
Martin Geisler
|
r8296 | try: | ||
from hashlib import md5 | ||||
except ImportError: | ||||
from md5 import md5 | ||||
Dirkjan Ochtman
|
r6496 | import sys | ||
Patrick Mezard
|
r4805 | f1, f2 = sys.argv[1:3] | ||
Dirkjan Ochtman
|
r6496 | h1 = md5(file(f1, 'rb').read()).hexdigest() | ||
h2 = md5(file(f2, 'rb').read()).hexdigest() | ||||
Patrick Mezard
|
r4805 | print h1 == h2 or "md5 differ: " + repr((h1, h2)) | ||
Brendan Cully
|
r4653 | EOF | ||
Patrick Mezard
|
r4805 | # archive name is stored in the archive, so create similar | ||
# archives and rename them afterwards. | ||||
Brendan Cully
|
r4653 | hg archive -t tgz tip.tar.gz | ||
Patrick Mezard
|
r4805 | mv tip.tar.gz tip1.tar.gz | ||
Brendan Cully
|
r4653 | sleep 1 | ||
hg archive -t tgz tip.tar.gz | ||||
Patrick Mezard
|
r4805 | mv tip.tar.gz tip2.tar.gz | ||
python md5comp.py tip1.tar.gz tip2.tar.gz | ||||
Brendan Cully
|
r4653 | |||
Vadim Gelfer
|
r2114 | hg archive -t zip -p /illegal test.zip | ||
hg archive -t zip -p very/../bad test.zip | ||||
Thomas Arendsen Hein
|
r6183 | hg archive --config ui.archivemeta=false -t zip -r 2 test.zip | ||
Vadim Gelfer
|
r2114 | unzip -t test.zip | ||
Vadim Gelfer
|
r2476 | |||
Matt Mackall
|
r8145 | hg archive -t tar - | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/" | ||
Brendan Cully
|
r4863 | |||
Alexis S. L. Carvalho
|
r4836 | hg archive -r 0 -t tar rev-%r.tar | ||
if [ -f rev-0.tar ]; then | ||||
echo 'rev-0.tar created' | ||||
fi | ||||
Brendan Cully
|
r5061 | |||
Gilles Moris
|
r9614 | echo '% test .hg_archival.txt' | ||
hg archive ../test-tags | ||||
cat ../test-tags/.hg_archival.txt | ||||
hg tag -r 2 mytag | ||||
hg tag -r 2 anothertag | ||||
hg archive -r 2 ../test-lasttag | ||||
cat ../test-lasttag/.hg_archival.txt | ||||
Dirkjan Ochtman
|
r6019 | hg archive -t bogus test.bogus | ||
Dirkjan Ochtman
|
r5924 | echo % server errors | ||
cat errors.log | ||||
Brendan Cully
|
r5061 | echo '% empty repo' | ||
hg init ../empty | ||||
cd ../empty | ||||
hg archive ../test-empty | ||||
Dirkjan Ochtman
|
r5924 | |||
Martin Geisler
|
r12319 | echo '% old file -- date clamped to 1980' | ||
touch -d 1975-01-01 old | ||||
hg add old | ||||
hg commit -m old | ||||
hg archive ../old.zip | ||||
Matt Mackall
|
r12379 | unzip -l ../old.zip | grep 80 && echo ok | ||
Martin Geisler
|
r12319 | |||
Brendan Cully
|
r5061 | exit 0 | ||