tests/test-purge.t
changeset 12122 9bab9ee901e8
parent 10119 bb5ea66789e3
child 16913 f2719b387380
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-purge.t	Mon Aug 30 18:50:44 2010 +0900
@@ -0,0 +1,216 @@
+  $ 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
+  Removing directory empty_dir
+  $ 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
+  Removing file untracked_dir/untracked_file1
+  Removing file untracked_dir/untracked_file2
+  Removing directory untracked_dir
+  $ 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
+  Removing file untracked_file
+  Removing file untracked_file_readonly
+  $ ls
+  directory
+  r1
+
+delete an untracked file in a tracked directory
+
+  $ touch directory/untracked_file
+  $ hg purge -p
+  directory/untracked_file
+  $ hg purge -v
+  Removing file directory/untracked_file
+  $ ls
+  directory
+  r1
+
+delete nested directories
+
+  $ mkdir -p untracked_directory/nested_directory
+  $ hg purge -p
+  untracked_directory/nested_directory
+  $ hg purge -v
+  Removing directory untracked_directory/nested_directory
+  Removing directory untracked_directory
+  $ 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
+  Removing directory untracked_directory/nested_directory
+  Removing directory untracked_directory
+  $ 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
+  Removing directory untracked_directory/nested_directory
+  Removing directory untracked_directory
+  $ 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
+  Removing file ignored
+  $ 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
+  Removing file untracked_file
+  $ 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
+  Removing file untracked_file
+
+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