test-walkrepo.py
53 lines
| 1.8 KiB
| text/x-python
|
PythonLexer
/ tests / test-walkrepo.py
Eric Hopper
|
r6341 | import os | ||
import os.path | ||||
from mercurial import hg, ui | ||||
Martin Geisler
|
r8150 | from mercurial.util import walkrepos | ||
Eric Hopper
|
r6341 | from os import mkdir, chdir | ||
from os.path import join as pjoin | ||||
u = ui.ui() | ||||
sym = hasattr(os, 'symlink') and hasattr(os.path, 'samestat') | ||||
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)) | ||||
Patrick Mezard
|
r7494 | if sym and (len(reposet) != 3): | ||
Eric Hopper
|
r6341 | print "reposet = %r" % (reposet,) | ||
Patrick Mezard
|
r7495 | print "Found %d repositories when I should have found 3" % (len(reposet),) | ||
Patrick Mezard
|
r7494 | if (not sym) and (len(reposet) != 2): | ||
Eric Hopper
|
r6341 | print "reposet = %r" % (reposet,) | ||
Patrick Mezard
|
r7495 | print "Found %d repositories when I should have found 2" % (len(reposet),) | ||
Eric Hopper
|
r6341 | sub1set = frozenset((pjoin('.', 'sub1'), | ||
pjoin('.', 'circle', 'subdir', 'sub1'))) | ||||
if len(sub1set & reposet) != 1: | ||||
print "sub1set = %r" % (sub1set,) | ||||
print "reposet = %r" % (reposet,) | ||||
Benoit Allard
|
r7492 | print "sub1set and reposet should have exactly one path in common." | ||
Eric Hopper
|
r6341 | sub2set = frozenset((pjoin('.', 'subsub1'), | ||
pjoin('.', 'subsubdir', 'subsub1'))) | ||||
if len(sub2set & reposet) != 1: | ||||
print "sub2set = %r" % (sub2set,) | ||||
print "reposet = %r" % (reposet,) | ||||
Benoit Allard
|
r7492 | print "sub1set and reposet should have exactly one path in common." | ||
Eric Hopper
|
r6341 | sub3 = pjoin('.', 'circle', 'top1') | ||
if sym and not (sub3 in reposet): | ||||
print "reposet = %r" % (reposet,) | ||||
Benoit Allard
|
r7492 | print "Symbolic links are supported and %s is not in reposet" % (sub3,) | ||
Eric Hopper
|
r6341 | |||
runtest() | ||||
if sym: | ||||
# Simulate not having symlinks. | ||||
del os.path.samestat | ||||
sym = False | ||||
runtest() | ||||