summaryrefslogtreecommitdiff
path: root/tests/test-walkrepo.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-walkrepo.py')
-rw-r--r--tests/test-walkrepo.py55
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()