diff options
Diffstat (limited to 'tests/test-walkrepo.py')
-rw-r--r-- | tests/test-walkrepo.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/test-walkrepo.py b/tests/test-walkrepo.py new file mode 100644 index 0000000..bbeebd4 --- /dev/null +++ b/tests/test-walkrepo.py @@ -0,0 +1,55 @@ +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 "sub1set 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() |