view tests/test-walkrepo.py @ 27287:c9ceea3f2d8e

shelve: widen wlock scope of unshelve for consistency while processing Before this patch, "hg unshelve" of shelve extension executes below before acquisition of wlock: - cmdutil.checkunfinished() - examine existence of (specified) shelve file It may cause unintentional result, if another command runs parallelly (see also issue4368). This patch widens wlock scope of "hg unshelve" of shelve extension for consistency while processing.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Wed, 09 Dec 2015 08:28:53 +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()