##// END OF EJS Templates
subrepo: normalize path in the specific way for problematic encodings...
subrepo: normalize path in the specific way for problematic encodings Before this patch, "reporelpath()" uses "rstrip(os.sep)" to trim "os.sep" at the end of "parent.root" path. But it doesn't work correctly with some problematic encodings on Windows, because some multi-byte characters in such encodings contain '\\' (0x5c) as the tail byte of them. In such cases, "reporelpath()" leaves unexpected '\\' at the beginning of the path returned to callers. "lcalrepository.root" seems not to have tail "os.sep", because it is always normalized by "os.path.realpath()" in "vfs.__init__()", but in fact it has tail "os.sep", if it is a root (of the drive): path normalization trims tail "os.sep" off "/foo/bar/", but doesn't trim one off "/". So, just avoiding "rstrip(os.sep)" in "reporelpath()" causes regression around issue3033 fixed by fccd350acf79. This patch introduces "pathutil.normasprefix" to normalize specified path in the specific way for problematic encodings without regression around issue3033.

File last commit:

r21556:5e13507a stable
r21568:8dd17b19 stable
Show More
test-alias.t
464 lines | 11.2 KiB | text/troff | Tads3Lexer
Steve Losh
alias: add test cases for $ escaping in shell aliases
r13434 $ HGFOO=BAR; export HGFOO
Nicolas Dumazet
tests: unify test-alias
r11814 $ cat >> $HGRCPATH <<EOF
> [alias]
Augie Fackler
alias: don't shadow commands that we only partially matched (issue2993) (BC)...
r15233 > # should clobber ci but not commit (issue2993)
> ci = version
Nicolas Dumazet
tests: unify test-alias
r11814 > myinit = init
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 > mycommit = commit
Patrick Mezard
alias: inherit command optionalrepo flag (issue3298)...
r16609 > optionalrepo = showconfig alias.myinit
Nicolas Dumazet
tests: unify test-alias
r11814 > cleanstatus = status -c
> unknown = bargle
> ambiguous = s
> recursive = recursive
> nodefinition =
> no--cwd = status --cwd elsewhere
> no-R = status -R elsewhere
> no--repo = status --repo elsewhere
> no--repository = status --repository elsewhere
Simon Heimberg
dispatch: also a separate warning message on aliases with --config...
r18693 > no--config = status --config a.config=1
Nicolas Dumazet
tests: unify test-alias
r11814 > mylog = log
> lognull = log -r null
> shortlog = log --template '{rev} {node|short} | {date|isodate}\n'
Alexander Solovyov
add positional arguments to non-shell aliases
r14265 > positional = log --template '{\$2} {\$1} | {date|isodate}\n'
Nicolas Dumazet
tests: unify test-alias
r11814 > dln = lognull --debug
> nousage = rollback
> put = export -r 0 -o "\$FOO/%R.diff"
Mads Kiilerich
test-alias: adapt for Windows...
r16965 > blank = !printf '\n'
> self = !printf '\$0\n'
> echoall = !printf '\$@\n'
> echo1 = !printf '\$1\n'
> echo2 = !printf '\$2\n'
> echo13 = !printf '\$1 \$3\n'
> count = !hg log -r "\$@" --template=. | wc -c | sed -e 's/ //g'
> mcount = !hg log \$@ --template=. | wc -c | sed -e 's/ //g'
Nicolas Dumazet
tests: unify test-alias
r11814 > rt = root
Martin Geisler
tests: don't load unnecessary graphlog extension...
r20117 > tglog = log -G --template "{rev}:{node|short}: '{desc}' {branches}\n"
Steve Losh
alias: fall back to normal error handling for ambigious commands (fixes issue2475)
r12932 > idalias = id
> idaliaslong = id
> idaliasshell = !echo test
> parentsshell1 = !echo one
> parentsshell2 = !echo two
Mads Kiilerich
test-alias: adapt for Windows...
r16965 > escaped1 = !printf 'test\$\$test\n'
> escaped2 = !sh -c 'echo "HGFOO is \$\$HGFOO"'
> escaped3 = !sh -c 'echo "\$1 is \$\$\$1"'
> escaped4 = !printf '\$\$0 \$\$@\n'
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 > exit1 = !sh -c 'exit 1'
Nicolas Dumazet
tests: unify test-alias
r11814 >
> [defaults]
> mylog = -q
> lognull = -q
> log = -v
> EOF
basic
$ hg myinit alias
unknown
$ hg unknown
alias 'unknown' resolves to unknown command 'bargle'
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 [1]
Nicolas Dumazet
tests: unify test-alias
r11814 $ hg help unknown
alias 'unknown' resolves to unknown command 'bargle'
ambiguous
$ hg ambiguous
alias 'ambiguous' resolves to ambiguous command 's'
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 [1]
Nicolas Dumazet
tests: unify test-alias
r11814 $ hg help ambiguous
alias 'ambiguous' resolves to ambiguous command 's'
recursive
$ hg recursive
alias 'recursive' resolves to unknown command 'recursive'
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 [1]
Nicolas Dumazet
tests: unify test-alias
r11814 $ hg help recursive
alias 'recursive' resolves to unknown command 'recursive'
no definition
$ hg nodef
no definition for alias 'nodefinition'
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 [1]
Nicolas Dumazet
tests: unify test-alias
r11814 $ hg help nodef
no definition for alias 'nodefinition'
invalid options
$ hg no--cwd
error in definition for alias 'no--cwd': --cwd may only be given on the command line
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 [1]
Nicolas Dumazet
tests: unify test-alias
r11814 $ hg help no--cwd
error in definition for alias 'no--cwd': --cwd may only be given on the command line
$ hg no-R
error in definition for alias 'no-R': -R may only be given on the command line
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 [1]
Nicolas Dumazet
tests: unify test-alias
r11814 $ hg help no-R
error in definition for alias 'no-R': -R may only be given on the command line
$ hg no--repo
error in definition for alias 'no--repo': --repo may only be given on the command line
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 [1]
Nicolas Dumazet
tests: unify test-alias
r11814 $ hg help no--repo
error in definition for alias 'no--repo': --repo may only be given on the command line
$ hg no--repository
error in definition for alias 'no--repository': --repository may only be given on the command line
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 [1]
Nicolas Dumazet
tests: unify test-alias
r11814 $ hg help no--repository
error in definition for alias 'no--repository': --repository may only be given on the command line
Simon Heimberg
dispatch: also a separate warning message on aliases with --config...
r18693 $ hg no--config
error in definition for alias 'no--config': --config may only be given on the command line
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 [1]
Nicolas Dumazet
tests: unify test-alias
r11814
Patrick Mezard
alias: inherit command optionalrepo flag (issue3298)...
r16609 optional repository
Mads Kiilerich
tests: add missing no-outer-repo requirements...
r17015 #if no-outer-repo
Patrick Mezard
alias: inherit command optionalrepo flag (issue3298)...
r16609 $ hg optionalrepo
init
Mads Kiilerich
tests: add missing no-outer-repo requirements...
r17015 #endif
Nicolas Dumazet
tests: unify test-alias
r11814 $ cd alias
Patrick Mezard
alias: inherit command optionalrepo flag (issue3298)...
r16609 $ cat > .hg/hgrc <<EOF
> [alias]
> myinit = init -q
> EOF
$ hg optionalrepo
init -q
Nicolas Dumazet
tests: unify test-alias
r11814
no usage
$ hg nousage
no rollback information available
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556 [1]
Nicolas Dumazet
tests: unify test-alias
r11814
$ echo foo > foo
Augie Fackler
alias: don't shadow commands that we only partially matched (issue2993) (BC)...
r15233 $ hg commit -Amfoo
Nicolas Dumazet
tests: unify test-alias
r11814 adding foo
with opts
$ hg cleanst
C foo
with opts and whitespace
$ hg shortlog
0 e63c23eaa88a | 1970-01-01 00:00 +0000
Alexander Solovyov
add positional arguments to non-shell aliases
r14265 positional arguments
Matt Mackall
alias: abort on missing positional args (issue3331)
r16294 $ hg positional
abort: too few arguments for command alias
[255]
$ hg positional a
abort: too few arguments for command alias
[255]
Alexander Solovyov
add positional arguments to non-shell aliases
r14265 $ hg positional 'node|short' rev
0 e63c23eaa88a | 1970-01-01 00:00 +0000
Nicolas Dumazet
tests: unify test-alias
r11814
interaction with defaults
$ hg mylog
0:e63c23eaa88a
$ hg lognull
-1:000000000000
properly recursive
$ hg dln
changeset: -1:0000000000000000000000000000000000000000
parent: -1:0000000000000000000000000000000000000000
parent: -1:0000000000000000000000000000000000000000
manifest: -1:0000000000000000000000000000000000000000
user:
date: Thu Jan 01 00:00:00 1970 +0000
extra: branch=default
path expanding
$ FOO=`pwd` hg put
$ cat 0.diff
# HG changeset patch
# User test
# Date 0 0
Mads Kiilerich
export: show 'Date' header in a format that also is readable for humans...
r18648 # Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-alias
r11814 # Node ID e63c23eaa88ae77967edcf4ea194d31167c478b0
# Parent 0000000000000000000000000000000000000000
foo
diff -r 000000000000 -r e63c23eaa88a foo
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/foo Thu Jan 01 00:00:00 1970 +0000
@@ -0,0 +1,1 @@
+foo
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989 simple shell aliases
Nicolas Dumazet
tests: unify test-alias
r11814
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989 $ hg blank
$ hg blank foo
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 $ hg self
self
Mads Kiilerich
test-alias: adapt for Windows...
r16965 $ hg echoall
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989
Mads Kiilerich
test-alias: adapt for Windows...
r16965 $ hg echoall foo
Nicolas Dumazet
tests: unify test-alias
r11814 foo
Mads Kiilerich
test-alias: adapt for Windows...
r16965 $ hg echoall 'test $2' foo
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989 test $2 foo
$ hg echo1 foo bar baz
foo
$ hg echo2 foo bar baz
bar
$ hg echo13 foo bar baz test
foo baz
$ hg echo2 foo
$ echo bar > bar
Augie Fackler
alias: don't shadow commands that we only partially matched (issue2993) (BC)...
r15233 $ hg commit -qA -m bar
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989 $ hg count .
1
$ hg count 'branch(default)'
2
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 $ hg mcount -r '"branch(default)"'
2
Adrian Buehlmann
tests: add testcase for 208fc9ad6a48 to test-alias.t...
r12656 $ hg tglog
Mads Kiilerich
export: show 'Date' header in a format that also is readable for humans...
r18648 @ 1:042423737847: 'bar'
Adrian Buehlmann
tests: add testcase for 208fc9ad6a48 to test-alias.t...
r12656 |
o 0:e63c23eaa88a: 'foo'
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536
Steve Losh
alias: fall back to normal error handling for ambigious commands (fixes issue2475)
r12932
shadowing
$ hg i
hg: command 'i' is ambiguous:
idalias idaliaslong idaliasshell identify import incoming init
[255]
$ hg id
Mads Kiilerich
export: show 'Date' header in a format that also is readable for humans...
r18648 042423737847 tip
Steve Losh
alias: fall back to normal error handling for ambigious commands (fixes issue2475)
r12932 $ hg ida
hg: command 'ida' is ambiguous:
idalias idaliaslong idaliasshell
[255]
$ hg idalias
Mads Kiilerich
export: show 'Date' header in a format that also is readable for humans...
r18648 042423737847 tip
Steve Losh
alias: fall back to normal error handling for ambigious commands (fixes issue2475)
r12932 $ hg idaliasl
Mads Kiilerich
export: show 'Date' header in a format that also is readable for humans...
r18648 042423737847 tip
Steve Losh
alias: fall back to normal error handling for ambigious commands (fixes issue2475)
r12932 $ hg idaliass
test
$ hg parentsshell
hg: command 'parentsshell' is ambiguous:
parentsshell1 parentsshell2
[255]
$ hg parentsshell1
one
$ hg parentsshell2
two
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 shell aliases with global options
$ hg init sub
$ cd sub
$ hg count 'branch(default)'
Alexander Plavin
log: fix behavior with empty repositories (issue3497)...
r18991 abort: unknown revision 'default'!
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 0
$ hg -v count 'branch(default)'
Alexander Plavin
log: fix behavior with empty repositories (issue3497)...
r18991 abort: unknown revision 'default'!
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 0
$ hg -R .. count 'branch(default)'
Alexander Plavin
log: fix behavior with empty repositories (issue3497)...
r18991 abort: unknown revision 'default'!
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 0
$ hg --cwd .. count 'branch(default)'
2
Mads Kiilerich
test-alias: adapt for Windows...
r16965 $ hg echoall --cwd ..
Matt Mackall
dispatch: move shell alias handling after early arg handling...
r14886
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536
repo specific shell aliases
$ cat >> .hg/hgrc <<EOF
> [alias]
Mads Kiilerich
test-alias: adapt for Windows...
r16965 > subalias = !echo sub
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 > EOF
$ cat >> ../.hg/hgrc <<EOF
> [alias]
Mads Kiilerich
test-alias: adapt for Windows...
r16965 > mainalias = !echo main
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536 > EOF
shell alias defined in current repo
$ hg subalias
sub
$ hg --cwd .. subalias > /dev/null
hg: unknown command 'subalias'
[255]
$ hg -R .. subalias > /dev/null
Matt Mackall
alias: fix up test results
r14890 hg: unknown command 'subalias'
[255]
Steve Losh
alias: only allow global options before a shell alias, pass later ones through...
r12536
shell alias defined in other repo
$ hg mainalias > /dev/null
hg: unknown command 'mainalias'
[255]
$ hg -R .. mainalias
main
$ hg --cwd .. mainalias
main
Steve Losh
aliases: provide more flexible ways to work with shell alias arguments...
r11989
Nicolas Dumazet
tests: unify test-alias
r11814
Steve Losh
alias: add test cases for $ escaping in shell aliases
r13434 shell aliases with escaped $ chars
$ hg escaped1
test$test
$ hg escaped2
HGFOO is BAR
$ hg escaped3 HGFOO
HGFOO is BAR
$ hg escaped4 test
$0 $@
FUJIWARA Katsunori
dispatch: make "_checkshellalias()" invoke "findcmd()" with "strict=True"...
r20328 abbreviated name, which matches against both shell alias and the
command provided extension, should be aborted.
$ cat >> .hg/hgrc <<EOF
> [extensions]
> hgext.rebase =
> [alias]
> rebate = !echo this is rebate
> EOF
$ hg reba
hg: command 'reba' is ambiguous:
rebase rebate
[255]
$ hg rebat
this is rebate
Steve Losh
alias: add test cases for $ escaping in shell aliases
r13434
Nicolas Dumazet
tests: unify test-alias
r11814 invalid arguments
$ hg rt foo
hg rt: invalid arguments
Matt Mackall
help: generate command help into a single RST string for formatting
r15203 hg rt
Nicolas Dumazet
tests: unify test-alias
r11814
alias for: hg root
Adrian Buehlmann
help: do not show full help text for command on option errors...
r13950 use "hg help rt" to show the full help text
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Steve Losh
alias: fail gracefully when invalid global options are given (issue2442)...
r12748
invalid global arguments for normal commands, aliases, and shell aliases
$ hg --invalid root
hg: option --invalid not recognized
Mercurial Distributed SCM
basic commands:
Olav Reinert
help: format command and option list help using RST...
r16853 add add the specified files on the next commit
annotate show changeset information by line for each file
clone make a copy of an existing repository
commit commit the specified files or all outstanding changes
diff diff repository (or selected files)
export dump the header and diffs for one or more changesets
forget forget the specified files on the next commit
init create a new repository in the given directory
log show revision history of entire repository or files
merge merge working directory with another revision
pull pull changes from the specified source
push push changes to the specified destination
remove remove the specified files on the next commit
serve start stand-alone webserver
status show changed files in the working directory
summary summarize working directory state
update update working directory (or switch revisions)
Steve Losh
alias: fail gracefully when invalid global options are given (issue2442)...
r12748
use "hg help" for the full list of commands or "hg -v" for details
[255]
$ hg --invalid mylog
hg: option --invalid not recognized
Mercurial Distributed SCM
basic commands:
Olav Reinert
help: format command and option list help using RST...
r16853 add add the specified files on the next commit
annotate show changeset information by line for each file
clone make a copy of an existing repository
commit commit the specified files or all outstanding changes
diff diff repository (or selected files)
export dump the header and diffs for one or more changesets
forget forget the specified files on the next commit
init create a new repository in the given directory
log show revision history of entire repository or files
merge merge working directory with another revision
pull pull changes from the specified source
push push changes to the specified destination
remove remove the specified files on the next commit
serve start stand-alone webserver
status show changed files in the working directory
summary summarize working directory state
update update working directory (or switch revisions)
Steve Losh
alias: fail gracefully when invalid global options are given (issue2442)...
r12748
use "hg help" for the full list of commands or "hg -v" for details
[255]
$ hg --invalid blank
hg: option --invalid not recognized
Mercurial Distributed SCM
basic commands:
Olav Reinert
help: format command and option list help using RST...
r16853 add add the specified files on the next commit
annotate show changeset information by line for each file
clone make a copy of an existing repository
commit commit the specified files or all outstanding changes
diff diff repository (or selected files)
export dump the header and diffs for one or more changesets
forget forget the specified files on the next commit
init create a new repository in the given directory
log show revision history of entire repository or files
merge merge working directory with another revision
pull pull changes from the specified source
push push changes to the specified destination
remove remove the specified files on the next commit
serve start stand-alone webserver
status show changed files in the working directory
summary summarize working directory state
update update working directory (or switch revisions)
Steve Losh
alias: fail gracefully when invalid global options are given (issue2442)...
r12748
use "hg help" for the full list of commands or "hg -v" for details
[255]
Matt Mackall
alias: shortcut command matching show shadowing works properly (issue3104)...
r15600 This should show id:
$ hg --config alias.log='id' log
000000000000 tip
This shouldn't:
$ hg --config alias.log='id' history
Mads Kiilerich
tests: cleanup of tests that got lost in their own nested directories...
r16912
$ cd ../..
Yuya Nishihara
alias: fix loss of non-zero return code in command aliases...
r21556
return code of command and shell aliases:
$ hg mycommit -R alias
nothing changed
[1]
$ hg exit1
[1]