Mercurial > hg
view tests/test-walkrepo.py @ 7493:518afef5e350
Fix Bugzilla integration to work with new Bugzilla 3.2.
Bugzilla 3.2 changes the type of all MySQL tables it uses from MyISAM
to InnoDB. MyISAM does not support transactions, and performs an implied
commit after each update. InnoDB does support transactions, and so
exposes a bug where changes to the Bugzilla database were not committed,
and so with 3.2 are lost when the database connection closes.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Tue, 09 Dec 2008 09:58:13 +0000 |
parents | 8649b2a3de75 |
children | 90487273f59c |
line wrap: on
line source
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) chdir('sub1') hg.repository(u, 'inside_sub1', create=1) chdir('.hg') hg.repository(u, 'patches', create=1) chdir(os.path.pardir) chdir(os.path.pardir) 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) != 5): print "reposet = %r" % (reposet,) print "Found %d repositories when I should have found 5" % (len(reposet),) if (not sym) and (len(reposet) != 4): print "reposet = %r" % (reposet,) print "Found %d repositories when I should have found 4" % (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 not (sub3 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()