changeset 11853:afe19a1bf9d3

tests: unify test-archive
author Martin Geisler <mg@lazybytes.net>
date Sat, 14 Aug 2010 02:22:10 +0200
parents b2f91119bf8c
children aa2abde72da1
files tests/test-archive tests/test-archive.out tests/test-archive.t
diffstat 3 files changed, 220 insertions(+), 225 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test-archive	Sat Aug 14 02:18:17 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-#!/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
-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
-    "$TESTDIR/killdaemons.py"
-    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
-hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
-cat hg.pid >> $DAEMON_PIDS
-
-echo % invalid arch type should give 404
-"$TESTDIR/get-with-headers.py" localhost:$HGPORT "/archive/tip.invalid" | head -n 1
-echo
-
-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
-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
-unzip -t archive.zip | sed "s/$QTIP/TIP/"
-
-"$TESTDIR/killdaemons.py"
-
-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 - 2>/dev/null
-
-hg archive -t tgz -p %b-%h test-%h.tar.gz
-gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/"
-
-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
-
-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
-
-# 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 --config ui.archivemeta=false -t zip -r 2 test.zip
-unzip -t test.zip
-
-hg archive -t tar - | tar tf - 2>/dev/null | 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
-
-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
-
-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
--- a/tests/test-archive.out	Sat Aug 14 02:18:17 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-adding foo
-adding bar
-adding baz/bletch
-
-% 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
-% 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
-% 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
-% invalid arch type should give 404
-404 Unsupported archive type: None
-
-test-archive-TIP/.hg_archival.txt
-test-archive-TIP/bar
-test-archive-TIP/baz/bletch
-test-archive-TIP/foo
-test-archive-TIP/.hg_archival.txt
-test-archive-TIP/bar
-test-archive-TIP/baz/bletch
-test-archive-TIP/foo
-Archive:  archive.zip
-    testing: test-archive-TIP/.hg_archival.txt   OK
-    testing: test-archive-TIP/bar   OK
-    testing: test-archive-TIP/baz/bletch   OK
-    testing: test-archive-TIP/foo   OK
-No errors detected in compressed data of archive.zip.
-test/.hg_archival.txt
-test/bar
-test/baz/bletch
-test/foo
-test/.hg_archival.txt
-test/bar
-test/foo
-test-TIP/.hg_archival.txt
-test-TIP/bar
-test-TIP/baz/bletch
-test-TIP/foo
-autodetected_test/.hg_archival.txt
-autodetected_test/bar
-autodetected_test/baz/bletch
-autodetected_test/foo
-autodetect_override_test.zip/.hg_archival.txt
-autodetect_override_test.zip/bar
-autodetect_override_test.zip/baz/bletch
-autodetect_override_test.zip/foo
-True
-abort: archive prefix contains illegal components
-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.
-test-TIP/.hg_archival.txt
-test-TIP/bar
-test-TIP/baz/bletch
-test-TIP/foo
-rev-0.tar created
-% test .hg_archival.txt
-repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
-node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
-branch: default
-latesttag: null
-latesttagdistance: 3
-repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
-node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
-branch: default
-tag: anothertag
-tag: mytag
-abort: unknown archive type 'bogus'
-% server errors
-% empty repo
-abort: no working directory: please specify a revision
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-archive.t	Sat Aug 14 02:22:10 2010 +0200
@@ -0,0 +1,220 @@
+  $ mkdir test
+  $ cd test
+  $ hg init
+  $ 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
+  $ python getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/"
+  test-archive-TIP/.hg_archival.txt
+  test-archive-TIP/bar
+  test-archive-TIP/baz/bletch
+  test-archive-TIP/foo
+  $ python getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/"
+  test-archive-TIP/.hg_archival.txt
+  test-archive-TIP/bar
+  test-archive-TIP/baz/bletch
+  test-archive-TIP/foo
+  $ python getarchive.py "$TIP" zip > archive.zip
+  $ unzip -t archive.zip | sed "s/$QTIP/TIP/"
+  Archive:  archive.zip
+      testing: test-archive-TIP/.hg_archival.txt   OK
+      testing: test-archive-TIP/bar   OK
+      testing: test-archive-TIP/baz/bletch   OK
+      testing: test-archive-TIP/foo   OK
+  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
+  $ gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/"
+  test-TIP/.hg_archival.txt
+  test-TIP/bar
+  test-TIP/baz/bletch
+  test-TIP/foo
+
+  $ 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
+
+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
+  True
+
+  $ hg archive -t zip -p /illegal test.zip
+  abort: archive prefix contains illegal components
+  $ 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.
+
+  $ hg archive -t tar - | tar tf - 2>/dev/null | sed "s/$QTIP/TIP/"
+  test-TIP/.hg_archival.txt
+  test-TIP/bar
+  test-TIP/baz/bletch
+  test-TIP/foo
+
+  $ 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'
+
+server errors
+
+  $ cat errors.log
+
+empty repo
+
+  $ hg init ../empty
+  $ cd ../empty
+  $ hg archive ../test-empty
+  abort: no working directory: please specify a revision
+
+  $ exit 0