view tests/test-archive @ 6051:1038b1458d7a

keyword: safeguards against erroneous behaviour or aborts prevent issues due to global [keyword] filename patterns: - add email to nokwcommands - protect everything under .hg from expansion (tested with qcommit) - exclude everything starting with .hg* just in case prevent abort when pulling from bundlerepo: - do not set up kwrepo for bundlerepo expansion inside a bundle is nonsense bundlerepo issue spotted and test case provided by pmezard.
author Christian Ebert <blacktrash@gmx.net>
date Wed, 06 Feb 2008 23:14:33 +0100
parents 20b05618b3e2
children 0750e4ba9d3d
line wrap: on
line source

#!/bin/sh

mkdir test
cd test
hg init
echo foo>foo
hg commit -Am 1 -d '1 0'
echo bar>bar
hg commit -Am 2 -d '2 0'
mkdir baz
echo bletch>baz/bletch
hg commit -Am 3 -d '1000000000 0'
echo "[web]" >> .hg/hgrc
echo "name = test-archive" >> .hg/hgrc
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

TIP=`hg id -v | cut -f1 -d' '`
QTIP=`hg id -q`
cat > getarchive.py <<EOF
import os, sys, urllib2
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
http_proxy= python getarchive.py "$TIP" gz | gunzip | tar tf - | sed "s/$QTIP/TIP/"
http_proxy= python getarchive.py "$TIP" bz2 | bunzip2 | tar tf - | sed "s/$QTIP/TIP/"
http_proxy= python getarchive.py "$TIP" zip > archive.zip
unzip -t archive.zip | sed "s/$QTIP/TIP/"

hg archive -t tar test.tar
tar tf test.tar

hg archive -t tbz2 -X baz test.tar.bz2
bunzip2 -dc test.tar.bz2 | tar tf -

hg archive -t tgz -p %b-%h test-%h.tar.gz
gzip -dc test-$QTIP.tar.gz | tar tf - | sed "s/$QTIP/TIP/"

cat > md5comp.py <<EOF
import md5, sys
f1, f2 = sys.argv[1:3]
h1 = md5.md5(file(f1, 'rb').read()).hexdigest()
h2 = md5.md5(file(f2, 'rb').read()).hexdigest()
print h1 == h2 or "md5 differ: " + repr((h1, h2))
EOF

# archive name is stored in the archive, so create similar
# archives and rename them afterwards.
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

hg archive -t zip -p /illegal test.zip
hg archive -t zip -p very/../bad test.zip

hg archive -t zip -r 2 test.zip
unzip -t test.zip

hg archive -t tar - | tar tf - | sed "s/$QTIP/TIP/"

hg archive -r 0 -t tar rev-%r.tar
if [ -f rev-0.tar ]; then
    echo 'rev-0.tar created'
fi

hg archive -t bogus test.bogus

echo % server errors
cat errors.log

echo '% empty repo'
hg init ../empty
cd ../empty
hg archive ../test-empty

exit 0