Mercurial > hgsubversion
comparison tests/comprehensive/test_updatemeta.py @ 1042:af84ef787d93
tests: move updatemeta & rebuildmeta tests into comprehensive
this decreases normal the test count from 689 to 269, as both iterate
over all our fixture, and test_utility_commands already tests both
rudimentarily.
author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
---|---|
date | Wed, 07 Aug 2013 09:57:54 +0200 |
parents | tests/test_updatemeta.py@5bacb9c63e3e |
children | d741f536f23a |
comparison
equal
deleted
inserted
replaced
1041:70090e2ee262 | 1042:af84ef787d93 |
---|---|
1 import os | |
2 import pickle | |
3 import unittest | |
4 | |
5 # wrapped in a try/except because of weirdness in how | |
6 # run.py works as compared to nose. | |
7 try: | |
8 import test_util | |
9 except ImportError: | |
10 sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) | |
11 import test_util | |
12 | |
13 import test_rebuildmeta | |
14 | |
15 from mercurial import context | |
16 from mercurial import extensions | |
17 from mercurial import hg | |
18 from mercurial import ui | |
19 | |
20 from hgsubversion import svncommands | |
21 from hgsubversion import svnmeta | |
22 | |
23 | |
24 | |
25 def _do_case(self, name, stupid, single): | |
26 subdir = test_util.subdir.get(name, '') | |
27 layout = 'auto' | |
28 if single: | |
29 layout = 'single' | |
30 repo, repo_path = self.load_and_fetch(name, subdir=subdir, stupid=stupid, | |
31 layout=layout) | |
32 assert len(self.repo) > 0 | |
33 wc2_path = self.wc_path + '_clone' | |
34 u = ui.ui() | |
35 src, dest = test_util.hgclone(u, self.wc_path, wc2_path, update=False) | |
36 src = test_util.getlocalpeer(src) | |
37 dest = test_util.getlocalpeer(dest) | |
38 | |
39 # insert a wrapper that prevents calling changectx.children() | |
40 def failfn(orig, ctx): | |
41 self.fail('calling %s is forbidden; it can cause massive slowdowns ' | |
42 'when rebuilding large repositories' % orig) | |
43 | |
44 origchildren = getattr(context.changectx, 'children') | |
45 extensions.wrapfunction(context.changectx, 'children', failfn) | |
46 | |
47 # test updatemeta on an empty repo | |
48 try: | |
49 svncommands.updatemeta(u, dest, | |
50 args=[test_util.fileurl(repo_path + | |
51 subdir), ]) | |
52 finally: | |
53 # remove the wrapper | |
54 context.changectx.children = origchildren | |
55 | |
56 self._run_assertions(name, stupid, single, src, dest, u) | |
57 | |
58 | |
59 def _run_assertions(self, name, stupid, single, src, dest, u): | |
60 test_rebuildmeta._run_assertions(self, name, stupid, single, src, dest, u) | |
61 | |
62 | |
63 skip = set([ | |
64 'project_root_not_repo_root.svndump', | |
65 'corrupt.svndump', | |
66 ]) | |
67 | |
68 attrs = {'_do_case': _do_case, | |
69 '_run_assertions': _run_assertions, | |
70 } | |
71 for case in [f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')]: | |
72 # this fixture results in an empty repository, don't use it | |
73 if case in skip: | |
74 continue | |
75 bname = 'test_' + case[:-len('.svndump')] | |
76 attrs[bname] = test_rebuildmeta.buildmethod(case, bname, False, False) | |
77 name = bname + '_stupid' | |
78 attrs[name] = test_rebuildmeta.buildmethod(case, name, True, False) | |
79 name = bname + '_single' | |
80 attrs[name] = test_rebuildmeta.buildmethod(case, name, False, True) | |
81 | |
82 UpdateMetaTests = type('UpdateMetaTests', (test_util.TestBase,), attrs) | |
83 | |
84 | |
85 def suite(): | |
86 all_tests = [unittest.TestLoader().loadTestsFromTestCase(UpdateMetaTests), | |
87 ] | |
88 return unittest.TestSuite(all_tests) |