##// END OF EJS Templates
dispatch: make "_checkshellalias()" invoke "findcmd()" with "strict=True"...
dispatch: make "_checkshellalias()" invoke "findcmd()" with "strict=True" Before this patch, shell alias may be executed by abbreviated command name unexpectedly, even if abbreviated command name matches also against the command provided by extension. For example, "rebate" shell alias is executed by "hg reba", even if rebase extension (= "rebase" command) is enabled. In this case, "hg reba" should be aborted because of command name ambiguity. This patch makes "_checkshellalias()" invoke "cmdutil.findcmd()" always with "strict=True" (default value). If abbreviated command name matches against only one shell alias even after loading extensions, such shell alias will be executed via "_parse()". This patch doesn't remove "_checkshellalias()" invocation itself, because it may prevent shell alias from loading extensions uselessly.

File last commit:

r16930:9efe4a95 default
r20328:03d345da stable
Show More
test-purge.t
218 lines | 4.0 KiB | text/troff | Tads3Lexer
Nicolas Dumazet
tests: unify test-purge
r12122 $ cat <<EOF >> $HGRCPATH
> [extensions]
> purge =
> EOF
init
$ hg init t
$ cd t
setup
$ echo r1 > r1
$ hg ci -qAmr1 -d'0 0'
$ mkdir directory
$ echo r2 > directory/r2
$ hg ci -qAmr2 -d'1 0'
$ echo 'ignored' > .hgignore
$ hg ci -qAmr3 -d'2 0'
delete an empty directory
$ mkdir empty_dir
$ hg purge -p
empty_dir
$ hg purge -v
Martin Geisler
purge: lowercase messages
r16930 removing directory empty_dir
Nicolas Dumazet
tests: unify test-purge
r12122 $ ls
directory
r1
delete an untracked directory
$ mkdir untracked_dir
$ touch untracked_dir/untracked_file1
$ touch untracked_dir/untracked_file2
$ hg purge -p
untracked_dir/untracked_file1
untracked_dir/untracked_file2
$ hg purge -v
Martin Geisler
purge: lowercase messages
r16930 removing file untracked_dir/untracked_file1
removing file untracked_dir/untracked_file2
removing directory untracked_dir
Nicolas Dumazet
tests: unify test-purge
r12122 $ ls
directory
r1
delete an untracked file
$ touch untracked_file
$ touch untracked_file_readonly
$ python <<EOF
> import os, stat
> f= 'untracked_file_readonly'
> os.chmod(f, stat.S_IMODE(os.stat(f).st_mode) & ~stat.S_IWRITE)
> EOF
$ hg purge -p
untracked_file
untracked_file_readonly
$ hg purge -v
Martin Geisler
purge: lowercase messages
r16930 removing file untracked_file
removing file untracked_file_readonly
Nicolas Dumazet
tests: unify test-purge
r12122 $ ls
directory
r1
delete an untracked file in a tracked directory
$ touch directory/untracked_file
$ hg purge -p
directory/untracked_file
$ hg purge -v
Martin Geisler
purge: lowercase messages
r16930 removing file directory/untracked_file
Nicolas Dumazet
tests: unify test-purge
r12122 $ ls
directory
r1
delete nested directories
$ mkdir -p untracked_directory/nested_directory
$ hg purge -p
untracked_directory/nested_directory
$ hg purge -v
Martin Geisler
purge: lowercase messages
r16930 removing directory untracked_directory/nested_directory
removing directory untracked_directory
Nicolas Dumazet
tests: unify test-purge
r12122 $ ls
directory
r1
delete nested directories from a subdir
$ mkdir -p untracked_directory/nested_directory
$ cd directory
$ hg purge -p
untracked_directory/nested_directory
$ hg purge -v
Martin Geisler
purge: lowercase messages
r16930 removing directory untracked_directory/nested_directory
removing directory untracked_directory
Nicolas Dumazet
tests: unify test-purge
r12122 $ cd ..
$ ls
directory
r1
delete only part of the tree
$ mkdir -p untracked_directory/nested_directory
$ touch directory/untracked_file
$ cd directory
$ hg purge -p ../untracked_directory
untracked_directory/nested_directory
$ hg purge -v ../untracked_directory
Martin Geisler
purge: lowercase messages
r16930 removing directory untracked_directory/nested_directory
removing directory untracked_directory
Nicolas Dumazet
tests: unify test-purge
r12122 $ cd ..
$ ls
directory
r1
$ ls directory/untracked_file
directory/untracked_file
$ rm directory/untracked_file
skip ignored files if --all not specified
$ touch ignored
$ hg purge -p
$ hg purge -v
$ ls
directory
ignored
r1
$ hg purge -p --all
ignored
$ hg purge -v --all
Martin Geisler
purge: lowercase messages
r16930 removing file ignored
Nicolas Dumazet
tests: unify test-purge
r12122 $ ls
directory
r1
abort with missing files until we support name mangling filesystems
$ touch untracked_file
$ rm r1
hide error messages to avoid changing the output when the text changes
$ hg purge -p 2> /dev/null
untracked_file
$ hg st
! r1
? untracked_file
$ hg purge -p
untracked_file
$ hg purge -v 2> /dev/null
Martin Geisler
purge: lowercase messages
r16930 removing file untracked_file
Nicolas Dumazet
tests: unify test-purge
r12122 $ hg st
! r1
$ hg purge -v
$ hg revert --all --quiet
$ hg st -a
tracked file in ignored directory (issue621)
$ echo directory >> .hgignore
$ hg ci -m 'ignore directory'
$ touch untracked_file
$ hg purge -p
untracked_file
$ hg purge -v
Martin Geisler
purge: lowercase messages
r16930 removing file untracked_file
Nicolas Dumazet
tests: unify test-purge
r12122
skip excluded files
$ touch excluded_file
$ hg purge -p -X excluded_file
$ hg purge -v -X excluded_file
$ ls
directory
excluded_file
r1
$ rm excluded_file
skip files in excluded dirs
$ mkdir excluded_dir
$ touch excluded_dir/file
$ hg purge -p -X excluded_dir
$ hg purge -v -X excluded_dir
$ ls
directory
excluded_dir
r1
$ ls excluded_dir
file
$ rm -R excluded_dir
skip excluded empty dirs
$ mkdir excluded_dir
$ hg purge -p -X excluded_dir
$ hg purge -v -X excluded_dir
$ ls
directory
excluded_dir
r1
$ rmdir excluded_dir
skip patterns
$ mkdir .svn
$ touch .svn/foo
$ mkdir directory/.svn
$ touch directory/.svn/foo
$ hg purge -p -X .svn -X '*/.svn'
$ hg purge -p -X re:.*.svn
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..