##// END OF EJS Templates
hgweb: do not ignore [auth] if url has a username (issue2822)...
hgweb: do not ignore [auth] if url has a username (issue2822) The [auth] section was ignored when handling URLs like: http://user@example.com/foo Instead, we look in [auth] for an entry matching the URL and supplied user name. Entries without username can match URL with a username. Prefix length ties are resolved in favor of entries matching the username. With: foo.prefix = http://example.org foo.username = user foo.password = password bar.prefix = http://example.org/bar and the input URL: http://user@example.org/bar the 'bar' entry will be selected because of prefix length, therefore prompting for a password. This behaviour ensure that entries selection is consistent when looking for credentials or for certificates, and that certificates can be picked even if their entries do no define usernames while the URL does. Additionally, entries without a username matched against a username are returned as if they did have requested username set to avoid prompting again for a username if the password is not set. v2: reparse the URL in readauthforuri() to handle HTTP and HTTPS similarly. v3: allow unset usernames to match URL usernames to pick certificates. Resolve prefix length ties in favor of entries with usernames.

File last commit:

r14485:610873cf default
r15005:4a43e23b 1.9.1 stable
Show More
test-update-branches.t
130 lines | 3.0 KiB | text/troff | Tads3Lexer
/ tests / test-update-branches.t
# Construct the following history tree:
#
# @ 5:e1bb631146ca b1
# |
# o 4:a4fdb3b883c4 0:b608b9236435 b1
# |
# | o 3:4b57d2520816 1:44592833ba9f
# | |
# | | o 2:063f31070f65
# | |/
# | o 1:44592833ba9f
# |/
# o 0:b608b9236435
$ hg init
$ echo foo > foo
$ echo zero > a
$ hg ci -qAm0
$ echo one > a ; hg ci -m1
$ echo two > a ; hg ci -m2
$ hg up -q 1
$ echo three > a ; hg ci -qm3
$ hg up -q 0
$ hg branch -q b1
$ echo four > a ; hg ci -qm4
$ echo five > a ; hg ci -qm5
Initial repo state:
$ hg --config 'extensions.graphlog=' \
> glog --template '{rev}:{node|short} {parents} {branches}\n'
@ 5:e1bb631146ca b1
|
o 4:a4fdb3b883c4 0:b608b9236435 b1
|
| o 3:4b57d2520816 1:44592833ba9f
| |
| | o 2:063f31070f65
| |/
| o 1:44592833ba9f
|/
o 0:b608b9236435
Test helper functions:
$ revtest () {
> msg=$1
> dirtyflag=$2 # 'clean' or 'dirty'
> startrev=$3
> targetrev=$4
> opt=$5
> hg up -qC $startrev
> test $dirtyflag = dirty && echo dirty > foo
> hg up $opt $targetrev
> hg parent --template 'parent={rev}\n'
> hg stat
> }
$ norevtest () {
> msg=$1
> dirtyflag=$2 # 'clean' or 'dirty'
> startrev=$3
> opt=$4
> hg up -qC $startrev
> test $dirtyflag = dirty && echo dirty > foo
> hg up $opt
> hg parent --template 'parent={rev}\n'
> hg stat
> }
Test cases are documented in a table in the update function of merge.py.
Cases are run as shown in that table, row by row.
$ norevtest 'none clean linear' clean 4
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
parent=5
$ norevtest 'none clean same' clean 2
abort: crosses branches (merge branches or update --check to force update)
parent=2
$ revtest 'none clean linear' clean 1 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
parent=2
$ revtest 'none clean same' clean 2 3
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
parent=3
$ revtest 'none clean cross' clean 3 4
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
parent=4
$ revtest 'none dirty linear' dirty 1 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
parent=2
M foo
$ revtest 'none dirty same' dirty 2 3
abort: crosses branches (merge branches or use --clean to discard changes)
parent=2
M foo
$ revtest 'none dirty cross' dirty 3 4
abort: crosses branches (merge branches or use --clean to discard changes)
parent=3
M foo
$ revtest '-C dirty linear' dirty 1 2 -C
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
parent=2
$ revtest '-c dirty linear' dirty 1 2 -c
abort: uncommitted local changes
parent=1
M foo
$ norevtest '-c clean same' clean 2 -c
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
parent=3
$ revtest '-cC dirty linear' dirty 1 2 -cC
abort: cannot specify both -c/--check and -C/--clean
parent=1
M foo