summaryrefslogtreecommitdiff
path: root/tests/test-purge.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-purge.t')
-rw-r--r--tests/test-purge.t218
1 files changed, 218 insertions, 0 deletions
diff --git a/tests/test-purge.t b/tests/test-purge.t
new file mode 100644
index 0000000..75f9f90
--- /dev/null
+++ b/tests/test-purge.t
@@ -0,0 +1,218 @@
+ $ 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
+
+ $ cd ..