tests: ignore http tests that are known wontfix failures on python 2.4
As mentioned on http://bz.selenic.com/show_bug.cgi?id=2739#c17 , b3083042bdda
left test-http.t failing on Python < 2.4.3. That has not been noticed because
most 2.4 testing has been done with a patched 2.4.2.
This makes sure that the tests only are run for Python >= 2.4.3. That makes it
possible to verify that everything else works with Python 2.4.
[ original upstream message ]
importos,stat,socketimportreimportsysimporttempfiletempprefix='hg-hghave-'defmatchoutput(cmd,regexp,ignorestatus=False):"""Return True if cmd executes successfully and its output is matched by the supplied regular expression. """r=re.compile(regexp)fh=os.popen(cmd)s=fh.read()try:ret=fh.close()exceptIOError:# Happen in Windows test environmentret=1return(ignorestatusorretisNone)andr.search(s)defhas_baz():returnmatchoutput('baz --version 2>&1',r'baz Bazaar version')defhas_bzr():try:importbzrlibreturnbzrlib.__doc__isnotNoneexceptImportError:returnFalsedefhas_bzr114():try:importbzrlibreturn(bzrlib.__doc__isnotNoneandbzrlib.version_info[:2]>=(1,14))exceptImportError:returnFalsedefhas_cvs():re=r'Concurrent Versions System.*?server'returnmatchoutput('cvs --version 2>&1',re)andnothas_msys()defhas_cvs112():re=r'Concurrent Versions System \(CVS\) 1.12.*?server'returnmatchoutput('cvs --version 2>&1',re)andnothas_msys()defhas_darcs():returnmatchoutput('darcs --version',r'2\.[2-9]',True)defhas_mtn():returnmatchoutput('mtn --version',r'monotone',True)andnotmatchoutput('mtn --version',r'monotone 0\.',True)defhas_eol_in_paths():try:fd,path=tempfile.mkstemp(dir='.',prefix=tempprefix,suffix='\n\r')os.close(fd)os.remove(path)returnTrueexcept(IOError,OSError):returnFalsedefhas_executablebit():try:EXECFLAGS=stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTHfh,fn=tempfile.mkstemp(dir='.',prefix=tempprefix)try:os.close(fh)m=os.stat(fn).st_mode&0777new_file_has_exec=m&EXECFLAGSos.chmod(fn,m^EXECFLAGS)exec_flags_cannot_flip=((os.stat(fn).st_mode&0777)==m)finally:os.unlink(fn)except(IOError,OSError):# we don't care, the user probably won't be able to commit anywayreturnFalsereturnnot(new_file_has_execorexec_flags_cannot_flip)defhas_icasefs():# Stolen from mercurial.utilfd,path=tempfile.mkstemp(dir='.',prefix=tempprefix)os.close(fd)try:s1=os.stat(path)d,b=os.path.split(path)p2=os.path.join(d,b.upper())ifpath==p2:p2=os.path.join(d,b.lower())try:s2=os.stat(p2)returns2==s1exceptOSError:returnFalsefinally:os.remove(path)defhas_inotify():try:importhgext.inotify.linux.watcherexceptImportError:returnFalsename=tempfile.mktemp(dir='.',prefix=tempprefix)sock=socket.socket(socket.AF_UNIX)try:sock.bind(name)exceptsocket.error:returnFalsesock.close()os.unlink(name)returnTruedefhas_fifo():ifgetattr(os,"mkfifo",None)isNone:returnFalsename=tempfile.mktemp(dir='.',prefix=tempprefix)try:os.mkfifo(name)os.unlink(name)returnTrueexceptOSError:returnFalsedefhas_killdaemons():returnTruedefhas_cacheable_fs():frommercurialimportutilfd,path=tempfile.mkstemp(dir='.',prefix=tempprefix)os.close(fd)try:returnutil.cachestat(path).cacheable()finally:os.remove(path)defhas_lsprof():try:import_lsprofreturnTrueexceptImportError:returnFalsedefhas_gettext():returnmatchoutput('msgfmt --version','GNU gettext-tools')defhas_git():returnmatchoutput('git --version 2>&1',r'^git version')defhas_docutils():try:fromdocutils.coreimportpublish_cmdlinereturnTrueexceptImportError:returnFalsedefgetsvnversion():m=matchoutput('svn --version --quiet 2>&1',r'^(\d+)\.(\d+)')ifnotm:return(0,0)return(int(m.group(1)),int(m.group(2)))defhas_svn15():returngetsvnversion()>=(1,5)defhas_svn13():returngetsvnversion()>=(1,3)defhas_svn():returnmatchoutput('svn --version 2>&1',r'^svn, version')and \matchoutput('svnadmin --version 2>&1',r'^svnadmin, version')defhas_svn_bindings():try:importsvn.coreversion=svn.core.SVN_VER_MAJOR,svn.core.SVN_VER_MINORifversion<(1,4):returnFalsereturnTrueexceptImportError:returnFalsedefhas_p4():return(matchoutput('p4 -V',r'Rev\. P4/')andmatchoutput('p4d -V',r'Rev\. P4D/'))defhas_symlink():ifgetattr(os,"symlink",None)isNone:returnFalsename=tempfile.mktemp(dir='.',prefix=tempprefix)try:os.symlink(".",name)os.unlink(name)returnTrueexcept(OSError,AttributeError):returnFalsedefhas_hardlink():frommercurialimportutilfh,fn=tempfile.mkstemp(dir='.',prefix=tempprefix)os.close(fh)name=tempfile.mktemp(dir='.',prefix=tempprefix)try:try:util.oslink(fn,name)os.unlink(name)returnTrueexceptOSError:returnFalsefinally:os.unlink(fn)defhas_tla():returnmatchoutput('tla --version 2>&1',r'The GNU Arch Revision')defhas_gpg():returnmatchoutput('gpg --version 2>&1',r'GnuPG')defhas_unix_permissions():d=tempfile.mkdtemp(dir='.',prefix=tempprefix)try:fname=os.path.join(d,'foo')forumaskin(077,007,022):os.umask(umask)f=open(fname,'w')f.close()mode=os.stat(fname).st_modeos.unlink(fname)ifmode&0777!=~umask&0666:returnFalsereturnTruefinally:os.rmdir(d)defhas_root():returngetattr(os,'geteuid',None)andos.geteuid()==0defhas_pyflakes():returnmatchoutput("sh -c \"echo 'import re' 2>&1 | pyflakes\"",r"<stdin>:1: 're' imported but unused",True)defhas_pygments():try:importpygmentsreturnTrueexceptImportError:returnFalsedefhas_python243():returnsys.version_info>=(2,4,3)defhas_outer_repo():# failing for other reasons than 'no repo' imply that there is a reporeturnnotmatchoutput('hg root 2>&1',r'abort: no repository found',True)defhas_ssl():try:importsslimportOpenSSLOpenSSL.SSL.ContextreturnTrueexceptImportError:returnFalsedefhas_windows():returnos.name=='nt'defhas_system_sh():returnos.name!='nt'defhas_serve():returnos.name!='nt'# gross approximationdefhas_tic():try:importcursescurses.COLOR_BLUEreturnmatchoutput('test -x "`which tic`"','')exceptImportError:returnFalsedefhas_msys():returnos.getenv('MSYSTEM')defhas_aix():returnsys.platform.startswith("aix")defhas_absimport():import__future__frommercurialimportutilreturnutil.safehasattr(__future__,"absolute_import")defhas_py3k():return3==sys.version_info[0]checks={"true":(lambda:True,"yak shaving"),"false":(lambda:False,"nail clipper"),"baz":(has_baz,"GNU Arch baz client"),"bzr":(has_bzr,"Canonical's Bazaar client"),"bzr114":(has_bzr114,"Canonical's Bazaar client >= 1.14"),"cacheable":(has_cacheable_fs,"cacheable filesystem"),"cvs":(has_cvs,"cvs client/server"),"cvs112":(has_cvs112,"cvs client/server >= 1.12"),"darcs":(has_darcs,"darcs client"),"docutils":(has_docutils,"Docutils text processing library"),"eol-in-paths":(has_eol_in_paths,"end-of-lines in paths"),"execbit":(has_executablebit,"executable bit"),"fifo":(has_fifo,"named pipes"),"gettext":(has_gettext,"GNU Gettext (msgfmt)"),"git":(has_git,"git command line client"),"gpg":(has_gpg,"gpg client"),"hardlink":(has_hardlink,"hardlinks"),"icasefs":(has_icasefs,"case insensitive file system"),"inotify":(has_inotify,"inotify extension support"),"killdaemons":(has_killdaemons,'killdaemons.py support'),"lsprof":(has_lsprof,"python lsprof module"),"mtn":(has_mtn,"monotone client (>= 1.0)"),"outer-repo":(has_outer_repo,"outer repo"),"p4":(has_p4,"Perforce server and client"),"pyflakes":(has_pyflakes,"Pyflakes python linter"),"pygments":(has_pygments,"Pygments source highlighting library"),"python243":(has_python243,"python >= 2.4.3"),"root":(has_root,"root permissions"),"serve":(has_serve,"platform and python can manage 'hg serve -d'"),"ssl":(has_ssl,"python >= 2.6 ssl module and python OpenSSL"),"svn":(has_svn,"subversion client and admin tools"),"svn13":(has_svn13,"subversion client and admin tools >= 1.3"),"svn15":(has_svn15,"subversion client and admin tools >= 1.5"),"svn-bindings":(has_svn_bindings,"subversion python bindings"),"symlink":(has_symlink,"symbolic links"),"system-sh":(has_system_sh,"system() uses sh"),"tic":(has_tic,"terminfo compiler and curses module"),"tla":(has_tla,"GNU Arch tla client"),"unix-permissions":(has_unix_permissions,"unix-style permissions"),"windows":(has_windows,"Windows"),"msys":(has_msys,"Windows with MSYS"),"aix":(has_aix,"AIX"),"absimport":(has_absimport,"absolute_import in __future__"),"py3k":(has_py3k,"running with Python 3.x"),}