Mercurial > hgsubversion
comparison tests/test_rebuildmeta.py @ 638:ea0f42e0004d
tests: disallow calling changectx.children() during rebuildmeta
author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
---|---|
date | Sat, 10 Jul 2010 14:39:30 +0200 |
parents | 25714b4954b7 |
children | d2ef7220a079 |
comparison
equal
deleted
inserted
replaced
637:92f4a4b60696 | 638:ea0f42e0004d |
---|---|
2 import pickle | 2 import pickle |
3 import unittest | 3 import unittest |
4 | 4 |
5 import test_util | 5 import test_util |
6 | 6 |
7 from mercurial import context | |
8 from mercurial import extensions | |
7 from mercurial import hg | 9 from mercurial import hg |
8 from mercurial import ui | 10 from mercurial import ui |
9 | 11 |
10 from hgsubversion import svncommands | 12 from hgsubversion import svncommands |
11 from hgsubversion import svnmeta | 13 from hgsubversion import svnmeta |
18 self._load_fixture_and_fetch(name, subdir=subdir, stupid=stupid, layout=layout) | 20 self._load_fixture_and_fetch(name, subdir=subdir, stupid=stupid, layout=layout) |
19 assert len(self.repo) > 0 | 21 assert len(self.repo) > 0 |
20 wc2_path = self.wc_path + '_clone' | 22 wc2_path = self.wc_path + '_clone' |
21 u = ui.ui() | 23 u = ui.ui() |
22 src, dest = hg.clone(u, self.wc_path, wc2_path, update=False) | 24 src, dest = hg.clone(u, self.wc_path, wc2_path, update=False) |
23 svncommands.rebuildmeta(u, | 25 |
24 dest, | 26 # insert a wrapper that prevents calling changectx.children() |
25 args=[test_util.fileurl(self.repo_path + | 27 def failfn(orig, ctx): |
26 subdir), ]) | 28 self.fail('calling %s is forbidden; it can cause massive slowdowns ' |
29 'when rebuilding large repositories' % orig) | |
30 | |
31 origchildren = getattr(context.changectx, 'children') | |
32 extensions.wrapfunction(context.changectx, 'children', failfn) | |
33 | |
34 try: | |
35 svncommands.rebuildmeta(u, dest, | |
36 args=[test_util.fileurl(self.repo_path + | |
37 subdir), ]) | |
38 finally: | |
39 # remove the wrapper | |
40 context.changectx.children = origchildren | |
41 | |
27 self.assertTrue(os.path.isdir(os.path.join(src.path, 'svn')), | 42 self.assertTrue(os.path.isdir(os.path.join(src.path, 'svn')), |
28 'no .hg/svn directory in the source!') | 43 'no .hg/svn directory in the source!') |
29 self.assertTrue(os.path.isdir(os.path.join(src.path, 'svn')), | 44 self.assertTrue(os.path.isdir(os.path.join(src.path, 'svn')), |
30 'no .hg/svn directory in the destination!') | 45 'no .hg/svn directory in the destination!') |
31 dest = hg.repository(u, os.path.dirname(dest.path)) | 46 dest = hg.repository(u, os.path.dirname(dest.path)) |