tests/test-help
author Martin Geisler <mg@aragost.com>
Mon, 09 Aug 2010 15:31:56 +0200
branchstable
changeset 11769 ca6cebd8734e
parent 10446 a565a2445eb5
permissions -rwxr-xr-x
dirstate: ignore symlinks when fs cannot handle them (issue1888) When the filesystem cannot handle the executable bit, we currently ignore it completely when looking for modified files. Similarly, it is impossible to set or clear the bit when the filesystem ignores it. This patch makes Mercurial treat symbolic links the same way. Symlinks are a little different since they manifest themselves as small files containing a filename (the symlink target). On Windows, these files show up as regular files, and on Linux and Mac they show up as real symlinks. Issue1888 presents a case where the symlink files are better ignored from the Windows side. A Linux client creates symlinks in a working copy which is shared over a network between Linux and Windows clients. The Samba server is helpful and defererences the symlink when the Windows client looks at it. This means that Mercurial on the Windows side sees file content instead of a file name in the symlink, and hence flags the link as modified. Ignoring the change would be much more helpful, similarly to how Mercurial does not report any changes when executable bits are ignored in a checkout on Windows. An initial checkout of a symbolic link on a file system that cannot handle symbolic links will still result in a regular file containing the target file name as its content. Sharing such a checkout with a Linux client will not turn the file into a symlink automatically, but 'hg revert' can fix that. After the revert, the Windows client will see the correct file content (provided by the Samba server when it follows the link on the Linux side) and otherwise ignore the change. Running 'hg perfstatus' 10 times gives these results: Before: After: min: 0.544703 min: 0.546549 med: 0.547592 med: 0.548881 avg: 0.549146 avg: 0.548549 max: 0.564112 max: 0.551504 The median time is increased about 0.24%.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
544
3d4d5f2aba9a Remove bashisms and use /bin/sh instead of /bin/bash.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 429
diff changeset
     1
#!/bin/sh
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
     2
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
     3
hg
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
     4
hg -q
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 547
diff changeset
     5
hg help
423
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 350
diff changeset
     6
hg -q help
10110
9ed13f718e53 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 896
diff changeset
     7
9ed13f718e53 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 896
diff changeset
     8
echo %% test short command list with verbose option
9ed13f718e53 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 896
diff changeset
     9
hg -v help shortlist | sed 's/[(]version [^)]*[)]/(version xxx)/'
9ed13f718e53 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 896
diff changeset
    10
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
    11
hg add -h
10121
ac212bcc852b test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10110
diff changeset
    12
10446
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10144
diff changeset
    13
echo %% verbose help for add
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10144
diff changeset
    14
hg add -hv
a565a2445eb5 commands: add verbose example to help text for add
Martin Geisler <mg@lazybytes.net>
parents: 10144
diff changeset
    15
10121
ac212bcc852b test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10110
diff changeset
    16
echo %% test help option with version option
ac212bcc852b test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10110
diff changeset
    17
hg add -h --version | sed 's/[(]version [^)]*[)]/(version xxx)/'
ac212bcc852b test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10110
diff changeset
    18
596
9a8daeff0ffa A bunch of parsing/help updates
mpm@selenic.com
parents: 547
diff changeset
    19
hg add --skjdfks
10139
d09bed527343 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10121
diff changeset
    20
d09bed527343 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10121
diff changeset
    21
echo %% test ambiguous command help
d09bed527343 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10121
diff changeset
    22
hg help ad
d09bed527343 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10121
diff changeset
    23
10140
5d868e0565f6 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10139
diff changeset
    24
echo %% test command without options
5d868e0565f6 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10139
diff changeset
    25
hg help verify
5d868e0565f6 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10139
diff changeset
    26
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
    27
hg help diff
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
    28
hg help status
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
    29
hg -q help status
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
    30
hg help foo
849
8933ef744325 Further help improvements:
Thomas Arendsen Hein <thomas@intevation.de>
parents: 814
diff changeset
    31
hg skjdfks
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
    32
10141
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    33
cat > helpext.py <<EOF
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    34
import os
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    35
from mercurial import commands
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    36
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    37
def nohelp(ui, *args, **kwargs):
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    38
    pass
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    39
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    40
cmdtable = {
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    41
    "nohelp": (nohelp, [], "hg nohelp"),
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    42
}
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    43
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    44
commands.norepo += ' nohelp'
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    45
EOF
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    46
abspath=`pwd`/helpext.py
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    47
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    48
echo '[extensions]' >> $HGRCPATH
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    49
echo "helpext = $abspath" >> $HGRCPATH
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    50
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    51
echo %% test command with no help text
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    52
hg help nohelp
827b7d6f9016 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10140
diff changeset
    53
10142
44fa0e205ec9 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10141
diff changeset
    54
echo %% test that default list of commands omits extension commands
44fa0e205ec9 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10141
diff changeset
    55
hg help
44fa0e205ec9 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10141
diff changeset
    56
10143
f6ac05b5684b test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10142
diff changeset
    57
echo %% test list of commands with command with no help text
f6ac05b5684b test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10142
diff changeset
    58
hg help helpext
f6ac05b5684b test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10142
diff changeset
    59
10144
69a974125938 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10143
diff changeset
    60
echo %% test a help topic
69a974125938 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10143
diff changeset
    61
hg help revs
69a974125938 test-help: improve test coverage
Henri Wiechers <hwiechers@gmail.com>
parents: 10143
diff changeset
    62
423
25afb21d97ba Support for 'hg --version'. setup.py stores version from hg repository.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 350
diff changeset
    63
exit 0