##// END OF EJS Templates
diff: add --binary option for git mode diffs...
diff: add --binary option for git mode diffs This patch adds --binary option to `hg diff` and `hg export` to allow more control about when binary diffs are displayed in Git mode as well as some tests to verify it behaves correctly (issue5510).

File last commit:

r31008:636cf3f7 default
r31822:fde4822b default
Show More
test-archive.t
375 lines | 11.0 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
av6
hgweb: test the order of archive links
r30747 check archive links' order
$ get-with-headers.py localhost:$HGPORT "?revcount=1" | grep '/archive/tip.'
<a href="/archive/tip.zip">zip</a>
<a href="/archive/tip.tar.gz">gz</a>
<a href="/archive/tip.tar.bz2">bz2</a>
Martin Geisler
tests: unify test-archive
r11853 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
timeless
tests: test-archive.t use absolute_import...
r29179 > from __future__ import absolute_import
> import os
> import sys
timeless
tests: test-archive.t use mercurial.util for urllib compat
r29183 > from mercurial import (
> util,
> )
Martin Geisler
tests: unify test-archive
r11853 > 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:
timeless
tests: test-archive.t use sys.stdout.buffer for binary output in py3
r29182 > stdout = sys.stdout.buffer
> except AttributeError:
> stdout = sys.stdout
> try:
Jun Wu
tests: use LOCALIP...
r31008 > f = util.urlreq.urlopen('http://$LOCALIP:%s/?%s'
Angel Ezquerra
test-archive: gracefully handle HTTPErrors on get-with-headers...
r18770 > % (os.environ['HGPORT'], requeststr))
timeless
tests: test-archive.t use sys.stdout.buffer for binary output in py3
r29182 > stdout.write(f.read())
timeless
tests: test-archive.t use mercurial.util for urllib compat
r29183 > except util.urlerr.httperror as e:
Angel Ezquerra
test-archive: gracefully handle HTTPErrors on get-with-headers...
r18770 > 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
Augie Fackler
tests: glob whitespace between path and OK in unzip(1) output...
r29562 testing: test-archive-1701ef1f1510/.hg_archival.txt*OK (glob)
testing: test-archive-1701ef1f1510/.hgsub*OK (glob)
testing: test-archive-1701ef1f1510/.hgsubstate*OK (glob)
testing: test-archive-1701ef1f1510/bar*OK (glob)
testing: test-archive-1701ef1f1510/baz/bletch*OK (glob)
testing: test-archive-1701ef1f1510/foo*OK (glob)
testing: test-archive-1701ef1f1510/subrepo/sub*OK (glob)
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
timeless
tests: test-archive.t use print_function
r29177 > from __future__ import print_function
Martin Geisler
tests: unify test-archive
r11853 > try:
> from hashlib import md5
> except ImportError:
> from md5 import md5
> import sys
> f1, f2 = sys.argv[1:3]
timeless
tests: test-archive.t use open() instead of file() for py3 compat
r29178 > h1 = md5(open(f1, 'rb').read()).hexdigest()
> h2 = md5(open(f2, 'rb').read()).hexdigest()
timeless
tests: test-archive.t use print_function
r29177 > print(h1 == h2 or "md5 differ: " + repr((h1, h2)))
Martin Geisler
tests: unify test-archive
r11853 > 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
Augie Fackler
tests: glob whitespace between path and OK in unzip(1) output...
r29562 testing: test/bar*OK (glob)
testing: test/baz/bletch*OK (glob)
testing: test/foo*OK (glob)
Martin Geisler
tests: unify test-archive
r11853 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
> [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
Augie Fackler
tests: work around FreeBSD's unzip having slightly different output...
r30844 $ unzip -l ../old.zip | grep -v -- ----- | egrep -v files$
Martin Geisler
merge with stable
r12321 Archive: ../old.zip
Brodie Rao
tests: require regexes in unified tests to be marked with " (re)"...
r12375 \s*Length.* (re)
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)
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
timeless
tests: test-archive.t use print_function
r29177 > from __future__ import print_function
FUJIWARA Katsunori
archival: add "extended-timestamp" extra block for zip archives (issue3600)...
r17628 > import sys, os
timeless
tests: test-archive.t use print_function
r29177 > print(int(os.stat(sys.argv[1]).st_mtime))
FUJIWARA Katsunori
archival: add "extended-timestamp" extra block for zip archives (issue3600)...
r17628 > 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 ..