Mercurial > hgsubversion
comparison tests/comprehensive/test_rebuildmeta.py @ 1092:cd0d14e25757
layouts: add custom layout for those of us that need weird mappings
This adds a config-driven custom layout, targeted at the case where
you need to fetch a small subset of a large number of subversion
branches, or where your subversion layout doesn't match the standard
trunk/branches/tags layout very well.
author | David Schleimer <dschleimer@fb.com> |
---|---|
date | Mon, 26 Aug 2013 16:40:31 -0700 |
parents | cd256960b622 |
children | 6e1dbf6cbc92 |
comparison
equal
deleted
inserted
replaced
1091:384eb7e05b61 | 1092:cd0d14e25757 |
---|---|
28 ('unrelatedbranch.svndump', True, False), | 28 ('unrelatedbranch.svndump', True, False), |
29 ] | 29 ] |
30 | 30 |
31 | 31 |
32 | 32 |
33 def _do_case(self, name, single): | 33 def _do_case(self, name, layout): |
34 subdir = test_util.subdir.get(name, '') | 34 subdir = test_util.subdir.get(name, '') |
35 layout = 'auto' | 35 single = layout == 'single' |
36 if single: | 36 u = ui.ui() |
37 layout = 'single' | 37 config = {} |
38 if layout == 'custom': | |
39 for branch, path in test_util.custom.get(name, {}).iteritems(): | |
40 config['hgsubversionbranch.%s' % branch] = path | |
41 u.setconfig('hgsubversionbranch', branch, path) | |
38 repo, repo_path = self.load_and_fetch(name, subdir=subdir, layout=layout) | 42 repo, repo_path = self.load_and_fetch(name, subdir=subdir, layout=layout) |
39 assert test_util.repolen(self.repo) > 0 | 43 assert test_util.repolen(self.repo) > 0 |
40 wc2_path = self.wc_path + '_clone' | 44 wc2_path = self.wc_path + '_clone' |
41 u = ui.ui() | |
42 src, dest = test_util.hgclone(u, self.wc_path, wc2_path, update=False) | 45 src, dest = test_util.hgclone(u, self.wc_path, wc2_path, update=False) |
43 src = test_util.getlocalpeer(src) | 46 src = test_util.getlocalpeer(src) |
44 dest = test_util.getlocalpeer(dest) | 47 dest = test_util.getlocalpeer(dest) |
45 | 48 |
46 # insert a wrapper that prevents calling changectx.children() | 49 # insert a wrapper that prevents calling changectx.children() |
134 revkeys), reverse=True)[0][0] | 137 revkeys), reverse=True)[0][0] |
135 self.assertEqual(pr, destinfo[1]) | 138 self.assertEqual(pr, destinfo[1]) |
136 self.assertEqual(srcinfo[2], destinfo[2]) | 139 self.assertEqual(srcinfo[2], destinfo[2]) |
137 | 140 |
138 | 141 |
139 def buildmethod(case, name, single): | 142 def buildmethod(case, name, layout): |
140 m = lambda self: self._do_case(case, single) | 143 m = lambda self: self._do_case(case, layout) |
141 m.__name__ = name | 144 m.__name__ = name |
142 m.__doc__ = ('Test rebuildmeta on %s (%s)' % | 145 m.__doc__ = ('Test rebuildmeta on %s (%s)' % |
143 (case, (single and 'single') or 'standard')) | 146 (case, layout)) |
144 return m | 147 return m |
145 | 148 |
146 | 149 |
147 skip = set([ | 150 skip = set([ |
148 'project_root_not_repo_root.svndump', | 151 'project_root_not_repo_root.svndump', |
156 for case in [f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')]: | 159 for case in [f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')]: |
157 # this fixture results in an empty repository, don't use it | 160 # this fixture results in an empty repository, don't use it |
158 if case in skip: | 161 if case in skip: |
159 continue | 162 continue |
160 bname = 'test_' + case[:-len('.svndump')] | 163 bname = 'test_' + case[:-len('.svndump')] |
161 attrs[bname] = buildmethod(case, bname, False) | 164 attrs[bname] = buildmethod(case, bname, 'auto') |
162 name = bname + '_single' | 165 attrs[bname + '_single'] = buildmethod(case, bname + '_single', 'single') |
163 attrs[name] = buildmethod(case, name, True) | 166 if case in test_util.custom: |
167 attrs[bname + '_custom'] = buildmethod(case, | |
168 bname + '_custom', | |
169 'single') | |
164 | 170 |
165 RebuildMetaTests = type('RebuildMetaTests', (test_util.TestBase,), attrs) | 171 RebuildMetaTests = type('RebuildMetaTests', (test_util.TestBase,), attrs) |