Mercurial > hg
annotate tests/test-purge.t @ 20742:3681de20b0a7
parsers: fail fast if Python has wrong minor version (issue4110)
This change causes an informative ImportError to be raised when importing
the parsers extension module if the minor version of the currently-running
Python interpreter doesn't match that of the Python used when compiling
the extension module.
This change also exposes a parsers.versionerrortext constant in the
C implementation of the module. Its presence can be used to determine
whether this behavior is present in a version of the module. The value
of the constant is the leading text of the ImportError raised and is set
to "Python minor version mismatch".
Here is an example of what the new error looks like:
Traceback (most recent call last):
File "test.py", line 1, in <module>
import mercurial.parsers
ImportError: Python minor version mismatch: The Mercurial extension
modules were compiled with Python 2.7.6, but Mercurial is currently using
Python with sys.hexversion=33883888: Python 2.5.6
(r256:88840, Nov 18 2012, 05:37:10)
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))]
at: /opt/local/Library/Frameworks/Python.framework/Versions/2.5/Resources/
Python.app/Contents/MacOS/Python
The reason for raising an error in this scenario is that Python's C API
is known not to be compatible from minor version to minor version, even
if sys.api_version is the same. See for example this Python bug report
about incompatibilities between 2.5 and 2.6+:
http://bugs.python.org/issue8118
These incompatibilities can cause Mercurial to break in mysterious,
unforeseen ways. For example, when Mercurial compiled with Python 2.7 was
run with 2.5, the following crash occurred when running "hg status":
http://bz.selenic.com/show_bug.cgi?id=4110
After this crash was fixed, running with Python 2.5 no longer crashes, but
the following puzzling behavior still occurs:
$ hg status
...
File ".../mercurial/changelog.py", line 123, in __init__
revlog.revlog.__init__(self, opener, "00changelog.i")
File ".../mercurial/revlog.py", line 251, in __init__
d = self._io.parseindex(i, self._inline)
File ".../mercurial/revlog.py", line 158, in parseindex
index, cache = parsers.parse_index2(data, inline)
TypeError: data is not a string
which can be reproduced more simply with:
import mercurial.parsers as parsers
parsers.parse_index2("", True)
Both the crash and the TypeError occurred because the Python C API's
PyString_Check() returns the wrong value when the C header files from
Python 2.7 are run with Python 2.5. This is an example of an
incompatibility of the sort mentioned in the Python bug report above.
Failing fast with an informative error message results in a better user
experience in cases like the above. The information in the ImportError
also simplifies troubleshooting for those on Mercurial mailing lists, the
bug tracker, etc.
This patch only adds the version check to parsers.c, which is sufficient
to affect command-line commands like "hg status" and "hg summary".
An idea for a future improvement is to move the version-checking C code
to a more central location, and have it run when importing all
Mercurial extension modules and not just parsers.c.
author | Chris Jerdonek <chris.jerdonek@gmail.com> |
---|---|
date | Wed, 04 Dec 2013 20:38:27 -0800 |
parents | f1c3ba167b0c |
children | 8127b9e798b1 |
rev | line source |
---|---|
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
1 $ cat <<EOF >> $HGRCPATH |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
2 > [extensions] |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
3 > purge = |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
4 > EOF |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
5 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
6 init |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
7 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
8 $ hg init t |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
9 $ cd t |
4145
2ebdd33fe456
Add a test for the purge extension
Emanuele Aina <faina.mail@tiscali.it>
parents:
diff
changeset
|
10 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
11 setup |
4145
2ebdd33fe456
Add a test for the purge extension
Emanuele Aina <faina.mail@tiscali.it>
parents:
diff
changeset
|
12 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
13 $ echo r1 > r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
14 $ hg ci -qAmr1 -d'0 0' |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
15 $ mkdir directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
16 $ echo r2 > directory/r2 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
17 $ hg ci -qAmr2 -d'1 0' |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
18 $ echo 'ignored' > .hgignore |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
19 $ hg ci -qAmr3 -d'2 0' |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
20 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
21 delete an empty directory |
4145
2ebdd33fe456
Add a test for the purge extension
Emanuele Aina <faina.mail@tiscali.it>
parents:
diff
changeset
|
22 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
23 $ mkdir empty_dir |
20565
f1c3ba167b0c
purge: avoid duplicate output for --print (issue4092)
anuraggoel <anurag.dsps@gmail.com>
parents:
16930
diff
changeset
|
24 $ hg purge -p -v |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
25 empty_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
26 $ hg purge -v |
16930
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
27 removing directory empty_dir |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
28 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
29 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
30 r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
31 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
32 delete an untracked directory |
4145
2ebdd33fe456
Add a test for the purge extension
Emanuele Aina <faina.mail@tiscali.it>
parents:
diff
changeset
|
33 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
34 $ mkdir untracked_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
35 $ touch untracked_dir/untracked_file1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
36 $ touch untracked_dir/untracked_file2 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
37 $ hg purge -p |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
38 untracked_dir/untracked_file1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
39 untracked_dir/untracked_file2 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
40 $ hg purge -v |
16930
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
41 removing file untracked_dir/untracked_file1 |
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
42 removing file untracked_dir/untracked_file2 |
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
43 removing directory untracked_dir |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
44 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
45 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
46 r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
47 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
48 delete an untracked file |
4145
2ebdd33fe456
Add a test for the purge extension
Emanuele Aina <faina.mail@tiscali.it>
parents:
diff
changeset
|
49 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
50 $ touch untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
51 $ touch untracked_file_readonly |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
52 $ python <<EOF |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
53 > import os, stat |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
54 > f= 'untracked_file_readonly' |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
55 > os.chmod(f, stat.S_IMODE(os.stat(f).st_mode) & ~stat.S_IWRITE) |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
56 > EOF |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
57 $ hg purge -p |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
58 untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
59 untracked_file_readonly |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
60 $ hg purge -v |
16930
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
61 removing file untracked_file |
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
62 removing file untracked_file_readonly |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
63 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
64 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
65 r1 |
4145
2ebdd33fe456
Add a test for the purge extension
Emanuele Aina <faina.mail@tiscali.it>
parents:
diff
changeset
|
66 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
67 delete an untracked file in a tracked directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
68 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
69 $ touch directory/untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
70 $ hg purge -p |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
71 directory/untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
72 $ hg purge -v |
16930
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
73 removing file directory/untracked_file |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
74 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
75 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
76 r1 |
4145
2ebdd33fe456
Add a test for the purge extension
Emanuele Aina <faina.mail@tiscali.it>
parents:
diff
changeset
|
77 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
78 delete nested directories |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
79 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
80 $ mkdir -p untracked_directory/nested_directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
81 $ hg purge -p |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
82 untracked_directory/nested_directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
83 $ hg purge -v |
16930
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
84 removing directory untracked_directory/nested_directory |
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
85 removing directory untracked_directory |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
86 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
87 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
88 r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
89 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
90 delete nested directories from a subdir |
4145
2ebdd33fe456
Add a test for the purge extension
Emanuele Aina <faina.mail@tiscali.it>
parents:
diff
changeset
|
91 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
92 $ mkdir -p untracked_directory/nested_directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
93 $ cd directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
94 $ hg purge -p |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
95 untracked_directory/nested_directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
96 $ hg purge -v |
16930
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
97 removing directory untracked_directory/nested_directory |
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
98 removing directory untracked_directory |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
99 $ cd .. |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
100 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
101 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
102 r1 |
4145
2ebdd33fe456
Add a test for the purge extension
Emanuele Aina <faina.mail@tiscali.it>
parents:
diff
changeset
|
103 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
104 delete only part of the tree |
4155
4c714ed245d6
purge.py: fix invocation of statwalk
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4145
diff
changeset
|
105 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
106 $ mkdir -p untracked_directory/nested_directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
107 $ touch directory/untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
108 $ cd directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
109 $ hg purge -p ../untracked_directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
110 untracked_directory/nested_directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
111 $ hg purge -v ../untracked_directory |
16930
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
112 removing directory untracked_directory/nested_directory |
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
113 removing directory untracked_directory |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
114 $ cd .. |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
115 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
116 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
117 r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
118 $ ls directory/untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
119 directory/untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
120 $ rm directory/untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
121 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
122 skip ignored files if --all not specified |
4155
4c714ed245d6
purge.py: fix invocation of statwalk
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4145
diff
changeset
|
123 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
124 $ touch ignored |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
125 $ hg purge -p |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
126 $ hg purge -v |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
127 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
128 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
129 ignored |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
130 r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
131 $ hg purge -p --all |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
132 ignored |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
133 $ hg purge -v --all |
16930
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
134 removing file ignored |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
135 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
136 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
137 r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
138 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
139 abort with missing files until we support name mangling filesystems |
4310
c8919eb0f315
purge: abort with missing files avoiding problems with name-mangling fs
Emanuele Aina <em@nerd.ocracy.org>
parents:
4155
diff
changeset
|
140 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
141 $ touch untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
142 $ rm r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
143 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
144 hide error messages to avoid changing the output when the text changes |
6757 | 145 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
146 $ hg purge -p 2> /dev/null |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
147 untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
148 $ hg st |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
149 ! r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
150 ? untracked_file |
6757 | 151 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
152 $ hg purge -p |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
153 untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
154 $ hg purge -v 2> /dev/null |
16930
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
155 removing file untracked_file |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
156 $ hg st |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
157 ! r1 |
4463
a73cf208b2a0
purge: add --include and --exclude options
Emanuele Aina <em@nerd.ocracy.org>
parents:
4311
diff
changeset
|
158 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
159 $ hg purge -v |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
160 $ hg revert --all --quiet |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
161 $ hg st -a |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
162 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
163 tracked file in ignored directory (issue621) |
5517
98d5f9b95699
purge: simplify safety net for case mangling filesystems
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4691
diff
changeset
|
164 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
165 $ echo directory >> .hgignore |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
166 $ hg ci -m 'ignore directory' |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
167 $ touch untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
168 $ hg purge -p |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
169 untracked_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
170 $ hg purge -v |
16930
9efe4a95c099
purge: lowercase messages
Martin Geisler <mg@aragost.com>
parents:
16913
diff
changeset
|
171 removing file untracked_file |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
172 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
173 skip excluded files |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
174 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
175 $ touch excluded_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
176 $ hg purge -p -X excluded_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
177 $ hg purge -v -X excluded_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
178 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
179 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
180 excluded_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
181 r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
182 $ rm excluded_file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
183 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
184 skip files in excluded dirs |
4463
a73cf208b2a0
purge: add --include and --exclude options
Emanuele Aina <em@nerd.ocracy.org>
parents:
4311
diff
changeset
|
185 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
186 $ mkdir excluded_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
187 $ touch excluded_dir/file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
188 $ hg purge -p -X excluded_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
189 $ hg purge -v -X excluded_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
190 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
191 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
192 excluded_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
193 r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
194 $ ls excluded_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
195 file |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
196 $ rm -R excluded_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
197 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
198 skip excluded empty dirs |
4463
a73cf208b2a0
purge: add --include and --exclude options
Emanuele Aina <em@nerd.ocracy.org>
parents:
4311
diff
changeset
|
199 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
200 $ mkdir excluded_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
201 $ hg purge -p -X excluded_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
202 $ hg purge -v -X excluded_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
203 $ ls |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
204 directory |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
205 excluded_dir |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
206 r1 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
207 $ rmdir excluded_dir |
4463
a73cf208b2a0
purge: add --include and --exclude options
Emanuele Aina <em@nerd.ocracy.org>
parents:
4311
diff
changeset
|
208 |
12122
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
209 skip patterns |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
210 |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
211 $ mkdir .svn |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
212 $ touch .svn/foo |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
213 $ mkdir directory/.svn |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
214 $ touch directory/.svn/foo |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
215 $ hg purge -p -X .svn -X '*/.svn' |
9bab9ee901e8
tests: unify test-purge
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10119
diff
changeset
|
216 $ hg purge -p -X re:.*.svn |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
12122
diff
changeset
|
217 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
12122
diff
changeset
|
218 $ cd .. |