tests/hghave.py
author Simon Heimberg <simohe@besonet.ch>
Sat, 28 Jul 2012 23:28:17 +0200
branchstable
changeset 1131 1938c2ebf517
parent 1105 9b2932ca75fd
child 1133 82f74372516e
permissions -rwxr-xr-x
tests: unset variable HG if it is set When hg tries to call itself it can call a different hg executable when this variable is set. Some tests fail when the called hg version is different. [ original upstream message ]
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1101
89f984505cbb tests/hghave: test that the inotify unix socket actually can be created
Mads Kiilerich <mads@kiilerich.com>
parents: 1100
diff changeset
     1
import os, stat, socket
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     2
import re
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     3
import sys
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     4
import tempfile
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     5
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     6
tempprefix = 'hg-hghave-'
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     7
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     8
def matchoutput(cmd, regexp, ignorestatus=False):
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
     9
    """Return True if cmd executes successfully and its output
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    10
    is matched by the supplied regular expression.
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    11
    """
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    12
    r = re.compile(regexp)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    13
    fh = os.popen(cmd)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    14
    s = fh.read()
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    15
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    16
        ret = fh.close()
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    17
    except IOError:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    18
        # Happen in Windows test environment
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    19
        ret = 1
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    20
    return (ignorestatus or ret is None) and r.search(s)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    21
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    22
def has_baz():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    23
    return matchoutput('baz --version 2>&1', r'baz Bazaar version')
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    24
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    25
def has_bzr():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    26
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    27
        import bzrlib
1070
838e4146e763 cleanup: "x != None" -> "x is not None"
Brodie Rao <brodie@sf.io>
parents: 1069
diff changeset
    28
        return bzrlib.__doc__ is not None
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    29
    except ImportError:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    30
        return False
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    31
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    32
def has_bzr114():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    33
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    34
        import bzrlib
1070
838e4146e763 cleanup: "x != None" -> "x is not None"
Brodie Rao <brodie@sf.io>
parents: 1069
diff changeset
    35
        return (bzrlib.__doc__ is not None
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    36
                and bzrlib.version_info[:2] >= (1, 14))
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    37
    except ImportError:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    38
        return False
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    39
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    40
def has_cvs():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    41
    re = r'Concurrent Versions System.*?server'
1032
5923d03569b3 tests: skip cvs tests with msys on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 1031
diff changeset
    42
    return matchoutput('cvs --version 2>&1', re) and not has_msys()
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    43
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    44
def has_darcs():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    45
    return matchoutput('darcs --version', r'2\.[2-9]', True)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    46
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    47
def has_mtn():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    48
    return matchoutput('mtn --version', r'monotone', True) and not matchoutput(
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    49
        'mtn --version', r'monotone 0\.', True)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    50
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    51
def has_eol_in_paths():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    52
    try:
1099
55c85631631b tests/hghave: consistently use dir='.', prefix=tempprefix for tempfiles
Mads Kiilerich <mads@kiilerich.com>
parents: 1098
diff changeset
    53
        fd, path = tempfile.mkstemp(dir='.', prefix=tempprefix, suffix='\n\r')
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    54
        os.close(fd)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    55
        os.remove(path)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    56
        return True
1072
bbf056e756cc cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents: 1071
diff changeset
    57
    except (IOError, OSError):
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    58
        return False
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    59
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    60
def has_executablebit():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    61
    try:
1056
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    62
        EXECFLAGS = stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH
1099
55c85631631b tests/hghave: consistently use dir='.', prefix=tempprefix for tempfiles
Mads Kiilerich <mads@kiilerich.com>
parents: 1098
diff changeset
    63
        fh, fn = tempfile.mkstemp(dir='.', prefix=tempprefix)
1056
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    64
        try:
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    65
            os.close(fh)
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    66
            m = os.stat(fn).st_mode & 0777
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    67
            new_file_has_exec = m & EXECFLAGS
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    68
            os.chmod(fn, m ^ EXECFLAGS)
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    69
            exec_flags_cannot_flip = ((os.stat(fn).st_mode & 0777) == m)
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    70
        finally:
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    71
            os.unlink(fn)
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    72
    except (IOError, OSError):
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    73
        # we don't care, the user probably won't be able to commit anyway
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    74
        return False
0e6cee08a2f8 tests: make hghave handle exec bit on Linux with vfat
Matt Mackall <mpm@selenic.com>
parents: 1055
diff changeset
    75
    return not (new_file_has_exec or exec_flags_cannot_flip)
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    76
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    77
def has_icasefs():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    78
    # Stolen from mercurial.util
1099
55c85631631b tests/hghave: consistently use dir='.', prefix=tempprefix for tempfiles
Mads Kiilerich <mads@kiilerich.com>
parents: 1098
diff changeset
    79
    fd, path = tempfile.mkstemp(dir='.', prefix=tempprefix)
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    80
    os.close(fd)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    81
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    82
        s1 = os.stat(path)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    83
        d, b = os.path.split(path)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    84
        p2 = os.path.join(d, b.upper())
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    85
        if path == p2:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    86
            p2 = os.path.join(d, b.lower())
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    87
        try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    88
            s2 = os.stat(p2)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    89
            return s2 == s1
1072
bbf056e756cc cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents: 1071
diff changeset
    90
        except OSError:
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    91
            return False
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    92
    finally:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    93
        os.remove(path)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    94
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    95
def has_inotify():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    96
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    97
        import hgext.inotify.linux.watcher
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    98
    except ImportError:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
    99
        return False
1101
89f984505cbb tests/hghave: test that the inotify unix socket actually can be created
Mads Kiilerich <mads@kiilerich.com>
parents: 1100
diff changeset
   100
    name = tempfile.mktemp(dir='.', prefix=tempprefix)
89f984505cbb tests/hghave: test that the inotify unix socket actually can be created
Mads Kiilerich <mads@kiilerich.com>
parents: 1100
diff changeset
   101
    sock = socket.socket(socket.AF_UNIX)
89f984505cbb tests/hghave: test that the inotify unix socket actually can be created
Mads Kiilerich <mads@kiilerich.com>
parents: 1100
diff changeset
   102
    try:
89f984505cbb tests/hghave: test that the inotify unix socket actually can be created
Mads Kiilerich <mads@kiilerich.com>
parents: 1100
diff changeset
   103
        sock.bind(name)
89f984505cbb tests/hghave: test that the inotify unix socket actually can be created
Mads Kiilerich <mads@kiilerich.com>
parents: 1100
diff changeset
   104
    except socket.error, err:
89f984505cbb tests/hghave: test that the inotify unix socket actually can be created
Mads Kiilerich <mads@kiilerich.com>
parents: 1100
diff changeset
   105
        return False
89f984505cbb tests/hghave: test that the inotify unix socket actually can be created
Mads Kiilerich <mads@kiilerich.com>
parents: 1100
diff changeset
   106
    sock.close()
89f984505cbb tests/hghave: test that the inotify unix socket actually can be created
Mads Kiilerich <mads@kiilerich.com>
parents: 1100
diff changeset
   107
    os.unlink(name)
89f984505cbb tests/hghave: test that the inotify unix socket actually can be created
Mads Kiilerich <mads@kiilerich.com>
parents: 1100
diff changeset
   108
    return True
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   109
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   110
def has_fifo():
1100
59a99457aa65 tests/hghave: test that a fifo actually can be created on the filesystem
Mads Kiilerich <mads@kiilerich.com>
parents: 1099
diff changeset
   111
    if getattr(os, "mkfifo", None) is None:
59a99457aa65 tests/hghave: test that a fifo actually can be created on the filesystem
Mads Kiilerich <mads@kiilerich.com>
parents: 1099
diff changeset
   112
        return False
59a99457aa65 tests/hghave: test that a fifo actually can be created on the filesystem
Mads Kiilerich <mads@kiilerich.com>
parents: 1099
diff changeset
   113
    name = tempfile.mktemp(dir='.', prefix=tempprefix)
59a99457aa65 tests/hghave: test that a fifo actually can be created on the filesystem
Mads Kiilerich <mads@kiilerich.com>
parents: 1099
diff changeset
   114
    try:
59a99457aa65 tests/hghave: test that a fifo actually can be created on the filesystem
Mads Kiilerich <mads@kiilerich.com>
parents: 1099
diff changeset
   115
        os.mkfifo(name)
59a99457aa65 tests/hghave: test that a fifo actually can be created on the filesystem
Mads Kiilerich <mads@kiilerich.com>
parents: 1099
diff changeset
   116
        os.unlink(name)
59a99457aa65 tests/hghave: test that a fifo actually can be created on the filesystem
Mads Kiilerich <mads@kiilerich.com>
parents: 1099
diff changeset
   117
        return True
59a99457aa65 tests/hghave: test that a fifo actually can be created on the filesystem
Mads Kiilerich <mads@kiilerich.com>
parents: 1099
diff changeset
   118
    except OSError:
59a99457aa65 tests/hghave: test that a fifo actually can be created on the filesystem
Mads Kiilerich <mads@kiilerich.com>
parents: 1099
diff changeset
   119
        return False
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   120
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   121
def has_cacheable_fs():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   122
    from mercurial import util
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   123
1099
55c85631631b tests/hghave: consistently use dir='.', prefix=tempprefix for tempfiles
Mads Kiilerich <mads@kiilerich.com>
parents: 1098
diff changeset
   124
    fd, path = tempfile.mkstemp(dir='.', prefix=tempprefix)
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   125
    os.close(fd)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   126
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   127
        return util.cachestat(path).cacheable()
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   128
    finally:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   129
        os.remove(path)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   130
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   131
def has_lsprof():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   132
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   133
        import _lsprof
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   134
        return True
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   135
    except ImportError:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   136
        return False
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   137
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   138
def has_gettext():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   139
    return matchoutput('msgfmt --version', 'GNU gettext-tools')
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   140
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   141
def has_git():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   142
    return matchoutput('git --version 2>&1', r'^git version')
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   143
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   144
def has_docutils():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   145
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   146
        from docutils.core import publish_cmdline
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   147
        return True
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   148
    except ImportError:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   149
        return False
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   150
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   151
def getsvnversion():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   152
    m = matchoutput('svn --version 2>&1', r'^svn,\s+version\s+(\d+)\.(\d+)')
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   153
    if not m:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   154
        return (0, 0)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   155
    return (int(m.group(1)), int(m.group(2)))
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   156
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   157
def has_svn15():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   158
    return getsvnversion() >= (1, 5)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   159
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   160
def has_svn13():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   161
    return getsvnversion() >= (1, 3)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   162
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   163
def has_svn():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   164
    return matchoutput('svn --version 2>&1', r'^svn, version') and \
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   165
        matchoutput('svnadmin --version 2>&1', r'^svnadmin, version')
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   166
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   167
def has_svn_bindings():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   168
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   169
        import svn.core
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   170
        version = svn.core.SVN_VER_MAJOR, svn.core.SVN_VER_MINOR
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   171
        if version < (1, 4):
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   172
            return False
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   173
        return True
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   174
    except ImportError:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   175
        return False
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   176
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   177
def has_p4():
1069
4e0cef7a70cf cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 1063
diff changeset
   178
    return (matchoutput('p4 -V', r'Rev\. P4/') and
4e0cef7a70cf cleanup: eradicate long lines
Brodie Rao <brodie@sf.io>
parents: 1063
diff changeset
   179
            matchoutput('p4d -V', r'Rev\. P4D/'))
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   180
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   181
def has_symlink():
1071
f0ce3dcd5c87 cleanup: replace hasattr() usage with getattr() in hghave
Brodie Rao <brodie@sf.io>
parents: 1070
diff changeset
   182
    if getattr(os, "symlink", None) is None:
1055
dabed2cabd5e tests: teach hghave to actually test for symlink support
Matt Mackall <mpm@selenic.com>
parents: 1032
diff changeset
   183
        return False
1099
55c85631631b tests/hghave: consistently use dir='.', prefix=tempprefix for tempfiles
Mads Kiilerich <mads@kiilerich.com>
parents: 1098
diff changeset
   184
    name = tempfile.mktemp(dir='.', prefix=tempprefix)
1055
dabed2cabd5e tests: teach hghave to actually test for symlink support
Matt Mackall <mpm@selenic.com>
parents: 1032
diff changeset
   185
    try:
dabed2cabd5e tests: teach hghave to actually test for symlink support
Matt Mackall <mpm@selenic.com>
parents: 1032
diff changeset
   186
        os.symlink(".", name)
dabed2cabd5e tests: teach hghave to actually test for symlink support
Matt Mackall <mpm@selenic.com>
parents: 1032
diff changeset
   187
        os.unlink(name)
dabed2cabd5e tests: teach hghave to actually test for symlink support
Matt Mackall <mpm@selenic.com>
parents: 1032
diff changeset
   188
        return True
dabed2cabd5e tests: teach hghave to actually test for symlink support
Matt Mackall <mpm@selenic.com>
parents: 1032
diff changeset
   189
    except (OSError, AttributeError):
dabed2cabd5e tests: teach hghave to actually test for symlink support
Matt Mackall <mpm@selenic.com>
parents: 1032
diff changeset
   190
        return False
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   191
1102
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   192
def has_hardlink():
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   193
    from mercurial import util
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   194
    fh, fn = tempfile.mkstemp(dir='.', prefix=tempprefix)
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   195
    os.close(fh)
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   196
    name = tempfile.mktemp(dir='.', prefix=tempprefix)
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   197
    try:
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   198
        try:
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   199
            util.oslink(fn, name)
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   200
            os.unlink(name)
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   201
            return True
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   202
        except OSError:
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   203
            return False
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   204
    finally:
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   205
        os.unlink(fn)
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   206
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   207
def has_tla():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   208
    return matchoutput('tla --version 2>&1', r'The GNU Arch Revision')
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   209
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   210
def has_gpg():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   211
    return matchoutput('gpg --version 2>&1', r'GnuPG')
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   212
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   213
def has_unix_permissions():
1099
55c85631631b tests/hghave: consistently use dir='.', prefix=tempprefix for tempfiles
Mads Kiilerich <mads@kiilerich.com>
parents: 1098
diff changeset
   214
    d = tempfile.mkdtemp(dir='.', prefix=tempprefix)
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   215
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   216
        fname = os.path.join(d, 'foo')
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   217
        for umask in (077, 007, 022):
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   218
            os.umask(umask)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   219
            f = open(fname, 'w')
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   220
            f.close()
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   221
            mode = os.stat(fname).st_mode
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   222
            os.unlink(fname)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   223
            if mode & 0777 != ~umask & 0666:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   224
                return False
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   225
        return True
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   226
    finally:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   227
        os.rmdir(d)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   228
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   229
def has_pyflakes():
1089
f26e9129f65b hghave: wrap command in 'sh -c "..."' for has_pyflakes()
Adrian Buehlmann <adrian@cadifra.com>
parents: 1072
diff changeset
   230
    return matchoutput("sh -c \"echo 'import re' 2>&1 | pyflakes\"",
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   231
                       r"<stdin>:1: 're' imported but unused",
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   232
                       True)
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   233
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   234
def has_pygments():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   235
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   236
        import pygments
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   237
        return True
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   238
    except ImportError:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   239
        return False
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   240
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   241
def has_outer_repo():
1105
9b2932ca75fd tests: hghave outer-repo should be true even if a bad repo is found
Mads Kiilerich <mads@kiilerich.com>
parents: 1102
diff changeset
   242
    # failing for other reasons than 'no repo' imply that there is a repo
9b2932ca75fd tests: hghave outer-repo should be true even if a bad repo is found
Mads Kiilerich <mads@kiilerich.com>
parents: 1102
diff changeset
   243
    return not matchoutput('hg root 2>&1',
9b2932ca75fd tests: hghave outer-repo should be true even if a bad repo is found
Mads Kiilerich <mads@kiilerich.com>
parents: 1102
diff changeset
   244
                           r'abort: no repository found', True)
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   245
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   246
def has_ssl():
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   247
    try:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   248
        import ssl
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   249
        import OpenSSL
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   250
        OpenSSL.SSL.Context
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   251
        return True
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   252
    except ImportError:
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   253
        return False
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   254
1012
018ef69bbe2f tests: use 'hghave no-windows' to avoid testing reserved file names on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 1010
diff changeset
   255
def has_windows():
018ef69bbe2f tests: use 'hghave no-windows' to avoid testing reserved file names on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 1010
diff changeset
   256
    return os.name == 'nt'
018ef69bbe2f tests: use 'hghave no-windows' to avoid testing reserved file names on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 1010
diff changeset
   257
1013
e00f51032041 tests: use 'hghave system-sh' to guard tests that requires sh in system()
Mads Kiilerich <mads@kiilerich.com>
parents: 1012
diff changeset
   258
def has_system_sh():
e00f51032041 tests: use 'hghave system-sh' to guard tests that requires sh in system()
Mads Kiilerich <mads@kiilerich.com>
parents: 1012
diff changeset
   259
    return os.name != 'nt'
e00f51032041 tests: use 'hghave system-sh' to guard tests that requires sh in system()
Mads Kiilerich <mads@kiilerich.com>
parents: 1012
diff changeset
   260
1014
58b7f58ae08c tests: use 'hghave serve' to guard tests that requires serve daemon management
Mads Kiilerich <mads@kiilerich.com>
parents: 1013
diff changeset
   261
def has_serve():
58b7f58ae08c tests: use 'hghave serve' to guard tests that requires serve daemon management
Mads Kiilerich <mads@kiilerich.com>
parents: 1013
diff changeset
   262
    return os.name != 'nt' # gross approximation
58b7f58ae08c tests: use 'hghave serve' to guard tests that requires serve daemon management
Mads Kiilerich <mads@kiilerich.com>
parents: 1013
diff changeset
   263
1027
f8c2547c8f16 tests: skip color test on platforms without tic
Mads Kiilerich <mads@kiilerich.com>
parents: 1014
diff changeset
   264
def has_tic():
f8c2547c8f16 tests: skip color test on platforms without tic
Mads Kiilerich <mads@kiilerich.com>
parents: 1014
diff changeset
   265
    return matchoutput('test -x "`which tic`"', '')
f8c2547c8f16 tests: skip color test on platforms without tic
Mads Kiilerich <mads@kiilerich.com>
parents: 1014
diff changeset
   266
1031
b914fc162545 tests: introduce 'hghave msys' to skip tests that would fail because of msys
Mads Kiilerich <mads@kiilerich.com>
parents: 1027
diff changeset
   267
def has_msys():
b914fc162545 tests: introduce 'hghave msys' to skip tests that would fail because of msys
Mads Kiilerich <mads@kiilerich.com>
parents: 1027
diff changeset
   268
    return os.getenv('MSYSTEM')
b914fc162545 tests: introduce 'hghave msys' to skip tests that would fail because of msys
Mads Kiilerich <mads@kiilerich.com>
parents: 1027
diff changeset
   269
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   270
checks = {
1091
15dc93f78ecd tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 1089
diff changeset
   271
    "true": (lambda: True, "yak shaving"),
15dc93f78ecd tests/hghave: implement #if true / #if false
Adrian Buehlmann <adrian@cadifra.com>
parents: 1089
diff changeset
   272
    "false": (lambda: False, "nail clipper"),
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   273
    "baz": (has_baz, "GNU Arch baz client"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   274
    "bzr": (has_bzr, "Canonical's Bazaar client"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   275
    "bzr114": (has_bzr114, "Canonical's Bazaar client >= 1.14"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   276
    "cacheable": (has_cacheable_fs, "cacheable filesystem"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   277
    "cvs": (has_cvs, "cvs client/server"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   278
    "darcs": (has_darcs, "darcs client"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   279
    "docutils": (has_docutils, "Docutils text processing library"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   280
    "eol-in-paths": (has_eol_in_paths, "end-of-lines in paths"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   281
    "execbit": (has_executablebit, "executable bit"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   282
    "fifo": (has_fifo, "named pipes"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   283
    "gettext": (has_gettext, "GNU Gettext (msgfmt)"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   284
    "git": (has_git, "git command line client"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   285
    "gpg": (has_gpg, "gpg client"),
1102
51afb47e2399 tests: introduce hghave hardlinks
Mads Kiilerich <mads@kiilerich.com>
parents: 1101
diff changeset
   286
    "hardlink": (has_hardlink, "hardlinks"),
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   287
    "icasefs": (has_icasefs, "case insensitive file system"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   288
    "inotify": (has_inotify, "inotify extension support"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   289
    "lsprof": (has_lsprof, "python lsprof module"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   290
    "mtn": (has_mtn, "monotone client (>= 1.0)"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   291
    "outer-repo": (has_outer_repo, "outer repo"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   292
    "p4": (has_p4, "Perforce server and client"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   293
    "pyflakes": (has_pyflakes, "Pyflakes python linter"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   294
    "pygments": (has_pygments, "Pygments source highlighting library"),
1014
58b7f58ae08c tests: use 'hghave serve' to guard tests that requires serve daemon management
Mads Kiilerich <mads@kiilerich.com>
parents: 1013
diff changeset
   295
    "serve": (has_serve, "platform and python can manage 'hg serve -d'"),
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   296
    "ssl": (has_ssl, "python >= 2.6 ssl module and python OpenSSL"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   297
    "svn": (has_svn, "subversion client and admin tools"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   298
    "svn13": (has_svn13, "subversion client and admin tools >= 1.3"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   299
    "svn15": (has_svn15, "subversion client and admin tools >= 1.5"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   300
    "svn-bindings": (has_svn_bindings, "subversion python bindings"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   301
    "symlink": (has_symlink, "symbolic links"),
1013
e00f51032041 tests: use 'hghave system-sh' to guard tests that requires sh in system()
Mads Kiilerich <mads@kiilerich.com>
parents: 1012
diff changeset
   302
    "system-sh": (has_system_sh, "system() uses sh"),
1027
f8c2547c8f16 tests: skip color test on platforms without tic
Mads Kiilerich <mads@kiilerich.com>
parents: 1014
diff changeset
   303
    "tic": (has_tic, "terminfo compiler"),
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   304
    "tla": (has_tla, "GNU Arch tla client"),
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   305
    "unix-permissions": (has_unix_permissions, "unix-style permissions"),
1012
018ef69bbe2f tests: use 'hghave no-windows' to avoid testing reserved file names on windows
Mads Kiilerich <mads@kiilerich.com>
parents: 1010
diff changeset
   306
    "windows": (has_windows, "Windows"),
1031
b914fc162545 tests: introduce 'hghave msys' to skip tests that would fail because of msys
Mads Kiilerich <mads@kiilerich.com>
parents: 1027
diff changeset
   307
    "msys": (has_msys, "Windows with MSYS"),
1007
4fad25af75dd Add hghave test as of 5635a4017061
Christian Ebert <blacktrash@gmx.net>
parents:
diff changeset
   308
}