view tests/test-walkrepo.py @ 23933:769027075e21 stable

run-tests.py: execute hghave with same env vars as ones for actual tests Before this patch, "run-tests.py" executes "hghave" process without any modifications for environment variables, even though actual tests are executed with LC_ALL, LANG and LANGUAGE explicitly assigned "C". When "run-tests.py" is executed: - with non-"C" locale environment variables on any platforms, or - without any explicit locale environment setting on Windows (only for "outer-repo" feature using "hg root") external commands indirectly executed by "hghave" may show translated messages. This causes incorrect "hghave" result and skipping tests, because some regexp matching of "hghave" expect external commands to show un-translated messages. To prevent external commands from showing translated messages, this patch makes "run-tests.py" execute "hghave" with same environment variables as ones for actual tests. This patch doesn't make "hghave" execute external commands forcibly with LC_ALL, LANG and LANGUAGE explicitly assigned "C", because changing "run-tests.py" is cheaper than changing "hghave": - "os.popen" should be replaced by "subprocess.Popen" or so, and - setting up environment variables should be newly added
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Thu, 22 Jan 2015 00:03:58 +0900
parents fad896292e7d
children a8b2bf520a2a
line wrap: on
line source

import os
from mercurial import hg, ui
from mercurial.scmutil import walkrepos
from mercurial.util import checklink
from os import mkdir, chdir
from os.path import join as pjoin

u = ui.ui()
sym = checklink('.')

hg.repository(u, 'top1', create=1)
mkdir('subdir')
chdir('subdir')
hg.repository(u, 'sub1', create=1)
mkdir('subsubdir')
chdir('subsubdir')
hg.repository(u, 'subsub1', create=1)
chdir(os.path.pardir)
if sym:
    os.symlink(os.path.pardir, 'circle')
    os.symlink(pjoin('subsubdir', 'subsub1'), 'subsub1')

def runtest():
    reposet = frozenset(walkrepos('.', followsym=True))
    if sym and (len(reposet) != 3):
        print "reposet = %r" % (reposet,)
        print ("Found %d repositories when I should have found 3"
               % (len(reposet),))
    if (not sym) and (len(reposet) != 2):
        print "reposet = %r" % (reposet,)
        print ("Found %d repositories when I should have found 2"
               % (len(reposet),))
    sub1set = frozenset((pjoin('.', 'sub1'),
                         pjoin('.', 'circle', 'subdir', 'sub1')))
    if len(sub1set & reposet) != 1:
        print "sub1set = %r" % (sub1set,)
        print "reposet = %r" % (reposet,)
        print "sub1set and reposet should have exactly one path in common."
    sub2set = frozenset((pjoin('.', 'subsub1'),
                         pjoin('.', 'subsubdir', 'subsub1')))
    if len(sub2set & reposet) != 1:
        print "sub2set = %r" % (sub2set,)
        print "reposet = %r" % (reposet,)
        print "sub2set and reposet should have exactly one path in common."
    sub3 = pjoin('.', 'circle', 'top1')
    if sym and sub3 not in reposet:
        print "reposet = %r" % (reposet,)
        print "Symbolic links are supported and %s is not in reposet" % (sub3,)

runtest()
if sym:
    # Simulate not having symlinks.
    del os.path.samestat
    sym = False
    runtest()