tests/hghave
changeset 5302 961876838de0
parent 5301 166b40c49e4a
child 5308 9400d677efc7
equal deleted inserted replaced
5301:166b40c49e4a 5302:961876838de0
     9 import sys
     9 import sys
    10 import tempfile
    10 import tempfile
    11 
    11 
    12 tempprefix = 'hg-hghave-'
    12 tempprefix = 'hg-hghave-'
    13 
    13 
    14 def matchoutput(cmd, regexp):
    14 def matchoutput(cmd, regexp, ignorestatus=False):
    15     """Return True if cmd executes successfully and its output
    15     """Return True if cmd executes successfully and its output
    16     is matched by the supplied regular expression.
    16     is matched by the supplied regular expression.
    17     """
    17     """
    18     r = re.compile(regexp)
    18     r = re.compile(regexp)
    19     fh = os.popen(cmd)
    19     fh = os.popen(cmd)
    20     s = fh.read()
    20     s = fh.read()
    21     ret = fh.close()
    21     ret = fh.close()
    22     return ret is None and r.search(s)
    22     return (ignorestatus or ret is None) and r.search(s)
    23 
    23 
    24 def has_symlink():
    24 def has_symlink():
    25     return hasattr(os, "symlink")
    25     return hasattr(os, "symlink")
    26 
    26 
    27 def has_fifo():
    27 def has_fifo():
    28     return hasattr(os, "mkfifo")
    28     return hasattr(os, "mkfifo")
       
    29 
       
    30 def has_cvs():
       
    31     return matchoutput('cvs --version 2>&1', r'Concurrent Versions System')
       
    32 
       
    33 def has_cvsps():
       
    34     return matchoutput('cvsps -h -q 2>&1', r'cvsps version', True)
    29 
    35 
    30 def has_executablebit():
    36 def has_executablebit():
    31     fd, path = tempfile.mkstemp(prefix=tempprefix)
    37     fd, path = tempfile.mkstemp(prefix=tempprefix)
    32     os.close(fd)
    38     os.close(fd)
    33     try:
    39     try:
    64 
    70 
    65 def has_git():
    71 def has_git():
    66     return matchoutput('git --version 2>&1', r'^git version')
    72     return matchoutput('git --version 2>&1', r'^git version')
    67 
    73 
    68 checks = {
    74 checks = {
       
    75     "cvs": (has_cvs, "cvs client"),
       
    76     "cvsps": (has_cvsps, "cvsps utility"),
    69     "eol-in-paths": (has_eol_in_paths, "end-of-lines in paths"),
    77     "eol-in-paths": (has_eol_in_paths, "end-of-lines in paths"),
    70     "execbit": (has_executablebit, "executable bit"),
    78     "execbit": (has_executablebit, "executable bit"),
    71     "git": (has_git, "git command line client"),
    79     "git": (has_git, "git command line client"),
    72     "fifo": (has_fifo, "named pipes"),
    80     "fifo": (has_fifo, "named pipes"),
    73     "hotshot": (has_hotshot, "python hotshot module"),
    81     "hotshot": (has_hotshot, "python hotshot module"),