##// END OF EJS Templates
largefiles: access to specific fields only if largefiles enabled (issue4547)...
largefiles: access to specific fields only if largefiles enabled (issue4547) Even if largefiles extension is enabled in a repository, "repo" object, which isn't "largefiles.reposetup()"-ed, is passed to overridden functions in the cases below unexpectedly, because extensions are enabled for each repositories strictly. (1) clone without -U: (2) pull with -U: (3) pull with --rebase: combination of "enabled@src", "disabled@dst" and "not-required@src" cause this situation. largefiles requirement @src @dst @src result -------- -------- --------------- -------------------- enabled disabled not-required aborted unexpectedly required requirement error (intentional) -------- -------- --------------- -------------------- enabled enabled * success -------- -------- --------------- -------------------- disabled enabled * success (only for "pull") -------- -------- --------------- -------------------- disabled disabled not-required success required requirement error (intentional) -------- -------- --------------- -------------------- (4) update/revert with a subrepo disabling largefiles In these cases, overridden functions cause accessing to largefiles specific fields of not "largefiles.reposetup()"-ed "repo" object, and execution is aborted. - (1), (2), (4) cause accessing to "_lfstatuswriters" in "getstatuswriter()" invoked via "updatelfiles()" - (3) causes accessing to "_lfcommithooks" in "overriderebase()" For safe accessing to these fields, this patch examines whether passed "repo" object is "largefiles.reposetup()"-ed or not before accessing to them. This patch chooses examining existence of newly introduced "_largefilesenabled" instead of "_lfcommithooks" and "_lfstatuswriters" directly, because the former is better name for the generic "largefiles is enabled in this repo" mark than the latter. In the future, all other overridden functions should avoid largefiles specific processing for efficiency, and "_largefilesenabled" is better also for such purpose. BTW, "lfstatus" can't be used for such purpose, because some code paths set it forcibly regardless of existence of it in specified "repo" object.

File last commit:

r22046:7a9cbb31 default
r24158:d414c28d stable
Show More
test-wireproto.t
118 lines | 9.0 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: replace exit 80 with #require
r22046 #require killdaemons
Peter Arrenbrecht
debug: add debugwireargs to test argument passing over the wire...
r13720
Test wire protocol argument passing
Setup repo:
$ hg init repo
Local:
Peter Arrenbrecht
wireproto: fix handling of '*' args for HTTP and SSH
r13721 $ hg debugwireargs repo eins zwei --three drei --four vier
Peter Arrenbrecht
wireproto: add test for new optional arg missing on server...
r14048 eins zwei drei vier None
Peter Arrenbrecht
wireproto: fix handling of '*' args for HTTP and SSH
r13721 $ hg debugwireargs repo eins zwei --four vier
Peter Arrenbrecht
wireproto: add test for new optional arg missing on server...
r14048 eins zwei None vier None
Peter Arrenbrecht
debug: add debugwireargs to test argument passing over the wire...
r13720 $ hg debugwireargs repo eins zwei
Peter Arrenbrecht
wireproto: add test for new optional arg missing on server...
r14048 eins zwei None None None
$ hg debugwireargs repo eins zwei --five fuenf
eins zwei None None fuenf
Peter Arrenbrecht
debug: add debugwireargs to test argument passing over the wire...
r13720
HTTP:
$ hg serve -R repo -p $HGPORT -d --pid-file=hg1.pid -E error.log -A access.log
$ cat hg1.pid >> $DAEMON_PIDS
Peter Arrenbrecht
wireproto: fix handling of '*' args for HTTP and SSH
r13721 $ hg debugwireargs http://localhost:$HGPORT/ un deux trois quatre
Peter Arrenbrecht
wireproto: add test for new optional arg missing on server...
r14048 un deux trois quatre None
Steven Brown
httprepo: long arguments support (issue2126)...
r14093 $ hg debugwireargs http://localhost:$HGPORT/ \ un deux trois\ qu\ \ atre
un deux trois qu atre None
Peter Arrenbrecht
wireproto: fix handling of '*' args for HTTP and SSH
r13721 $ hg debugwireargs http://localhost:$HGPORT/ eins zwei --four vier
Peter Arrenbrecht
wireproto: add test for new optional arg missing on server...
r14048 eins zwei None vier None
Peter Arrenbrecht
debug: add debugwireargs to test argument passing over the wire...
r13720 $ hg debugwireargs http://localhost:$HGPORT/ eins zwei
Peter Arrenbrecht
wireproto: add test for new optional arg missing on server...
r14048 eins zwei None None None
$ hg debugwireargs http://localhost:$HGPORT/ eins zwei --five fuenf
eins zwei None None None
Steven Brown
httprepo: long arguments support (issue2126)...
r14093 $ hg debugwireargs http://localhost:$HGPORT/ un deux trois onethousandcharactersxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
un deux trois onethousandcharactersxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx None
$ cat error.log
Peter Arrenbrecht
debug: add debugwireargs to test argument passing over the wire...
r13720 $ cat access.log
* - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
Matt Mackall
http: minor tweaks to long arg handling...
r14094 * - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:four=quatre&one=un&three=trois&two=deux (glob)
* - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:four=quatre&one=un&three=trois&two=deux (glob)
Steven Brown
httprepo: long arguments support (issue2126)...
r14093 * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
Matt Mackall
http: minor tweaks to long arg handling...
r14094 * - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:four=qu++atre&one=+un&three=trois+&two=deux (glob)
* - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:four=qu++atre&one=+un&three=trois+&two=deux (glob)
Steven Brown
httprepo: long arguments support (issue2126)...
r14093 * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
Matt Mackall
http: minor tweaks to long arg handling...
r14094 * - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:four=vier&one=eins&two=zwei (glob)
* - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:four=vier&one=eins&two=zwei (glob)
Steven Brown
httprepo: long arguments support (issue2126)...
r14093 * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
Matt Mackall
http: minor tweaks to long arg handling...
r14094 * - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:one=eins&two=zwei (glob)
* - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:one=eins&two=zwei (glob)
Steven Brown
httprepo: long arguments support (issue2126)...
r14093 * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
Matt Mackall
http: minor tweaks to long arg handling...
r14094 * - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:one=eins&two=zwei (glob)
* - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:one=eins&two=zwei (glob)
Steven Brown
httprepo: long arguments support (issue2126)...
r14093 * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
Matt Mackall
http: minor tweaks to long arg handling...
r14094 * - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:four=onethousandcharactersxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&one x-hgarg-2:=un&three=trois&two=deux (glob)
* - - [*] "GET /?cmd=debugwireargs HTTP/1.1" 200 - x-hgarg-1:four=onethousandcharactersxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&one x-hgarg-2:=un&three=trois&two=deux (glob)
Steven Brown
httprepo: long arguments support (issue2126)...
r14093
HTTP without the httpheader capability:
$ HGRCPATH="`pwd`/repo/.hgrc"
Mads Kiilerich
tests: HGRCPATH must be exported after assignment...
r14734 $ export HGRCPATH
Steven Brown
httprepo: long arguments support (issue2126)...
r14093 $ CAP=httpheader
$ . "$TESTDIR/notcapable"
$ hg serve -R repo -p $HGPORT2 -d --pid-file=hg2.pid -E error2.log -A access2.log
$ cat hg2.pid >> $DAEMON_PIDS
$ hg debugwireargs http://localhost:$HGPORT2/ un deux trois quatre
un deux trois quatre None
$ hg debugwireargs http://localhost:$HGPORT2/ eins zwei --four vier
eins zwei None vier None
$ hg debugwireargs http://localhost:$HGPORT2/ eins zwei
eins zwei None None None
$ hg debugwireargs http://localhost:$HGPORT2/ eins zwei --five fuenf
eins zwei None None None
$ cat error2.log
$ cat access2.log
* - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
Peter Arrenbrecht
wireproto: fix handling of '*' args for HTTP and SSH
r13721 * - - [*] "GET /?cmd=debugwireargs&four=quatre&one=un&three=trois&two=deux HTTP/1.1" 200 - (glob)
* - - [*] "GET /?cmd=debugwireargs&four=quatre&one=un&three=trois&two=deux HTTP/1.1" 200 - (glob)
* - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
* - - [*] "GET /?cmd=debugwireargs&four=vier&one=eins&two=zwei HTTP/1.1" 200 - (glob)
* - - [*] "GET /?cmd=debugwireargs&four=vier&one=eins&two=zwei HTTP/1.1" 200 - (glob)
* - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
Peter Arrenbrecht
debug: add debugwireargs to test argument passing over the wire...
r13720 * - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - (glob)
* - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - (glob)
Peter Arrenbrecht
wireproto: add test for new optional arg missing on server...
r14048 * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
* - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - (glob)
* - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - (glob)
Peter Arrenbrecht
debug: add debugwireargs to test argument passing over the wire...
r13720
SSH (try to exercise the ssh functionality with a dummy script):
$ cat <<EOF > dummyssh
> import sys
> import os
> os.chdir(os.path.dirname(sys.argv[0]))
> if sys.argv[1] != "user@dummy":
> sys.exit(-1)
> if not os.path.exists("dummyssh"):
> sys.exit(-1)
> os.environ["SSH_CLIENT"] = "127.0.0.1 1 2"
> r = os.system(sys.argv[2])
> sys.exit(bool(r))
> EOF
Peter Arrenbrecht
wireproto: fix handling of '*' args for HTTP and SSH
r13721 $ hg debugwireargs --ssh "python ./dummyssh" ssh://user@dummy/repo uno due tre quattro
Peter Arrenbrecht
wireproto: add test for new optional arg missing on server...
r14048 uno due tre quattro None
Peter Arrenbrecht
wireproto: fix handling of '*' args for HTTP and SSH
r13721 $ hg debugwireargs --ssh "python ./dummyssh" ssh://user@dummy/repo eins zwei --four vier
Peter Arrenbrecht
wireproto: add test for new optional arg missing on server...
r14048 eins zwei None vier None
Peter Arrenbrecht
debug: add debugwireargs to test argument passing over the wire...
r13720 $ hg debugwireargs --ssh "python ./dummyssh" ssh://user@dummy/repo eins zwei
Peter Arrenbrecht
wireproto: add test for new optional arg missing on server...
r14048 eins zwei None None None
$ hg debugwireargs --ssh "python ./dummyssh" ssh://user@dummy/repo eins zwei --five fuenf
eins zwei None None None
Peter Arrenbrecht
debug: add debugwireargs to test argument passing over the wire...
r13720
Patrick Mezard
tests: enable more server tests on Windows
r17539 Explicitly kill daemons to let the test exit on Windows
$ "$TESTDIR/killdaemons.py" $DAEMON_PIDS