##// END OF EJS Templates
Fix Debian bug #494889 (fetching from static-http://... broken)...
Fix Debian bug #494889 (fetching from static-http://... broken) Changeset 6605a03cbf87 which fixed issue965 (hg clone static-http does not work for empty repos) broke cloning of repos with old layout (without store) via static-http. This fix makes cloning from old-style repositories possible again, but will not allow cloning of empty old-style repositories as this can not be detected reliably.

File last commit:

r6341:63bdfcc3 default
r7178:98b6c3dd default
Show More
test-walkrepo.py
53 lines | 1.9 KiB | text/x-python | PythonLexer
Eric Hopper
test: Add tests for webdir symlinks and walkrepos.
r6341 import os
import os.path
from mercurial import hg, ui
from mercurial.util import walkrepos, set, frozenset
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))
if sym and (len(reposet) != 3):
print "reposet = %r" % (reposet,)
raise SystemExit(1, "Found %d repositories when I should have found 3" % (len(reposet),))
if (not sym) and (len(reposet) != 2):
print "reposet = %r" % (reposet,)
raise SystemExit(1, "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,)
raise SystemExit(1, "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,)
raise SystemExit(1, "sub1set and reposet should have exactly one path in common.")
sub3 = pjoin('.', 'circle', 'top1')
if sym and not (sub3 in reposet):
print "reposet = %r" % (reposet,)
raise SystemExit(1, "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()