Mercurial > hgsubversion
comparison tests/test_fetch_mappings.py @ 1058:bc71d8c8fde9
filemap tests: use stupid mode metaclass & decorator
| author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
|---|---|
| date | Fri, 09 Aug 2013 23:43:04 +0200 |
| parents | d741f536f23a |
| children | e015cd34168d |
comparison
equal
deleted
inserted
replaced
| 1057:cd256960b622 | 1058:bc71d8c8fde9 |
|---|---|
| 14 from hgsubversion import svncommands | 14 from hgsubversion import svncommands |
| 15 from hgsubversion import util | 15 from hgsubversion import util |
| 16 from hgsubversion import verify | 16 from hgsubversion import verify |
| 17 | 17 |
| 18 class MapTests(test_util.TestBase): | 18 class MapTests(test_util.TestBase): |
| 19 stupid_mode_tests = True | |
| 20 | |
| 19 @property | 21 @property |
| 20 def authors(self): | 22 def authors(self): |
| 21 return os.path.join(self.tmpdir, 'authormap') | 23 return os.path.join(self.tmpdir, 'authormap') |
| 22 | 24 |
| 23 @property | 25 @property |
| 30 | 32 |
| 31 @property | 33 @property |
| 32 def tagmap(self): | 34 def tagmap(self): |
| 33 return os.path.join(self.tmpdir, 'tagmap') | 35 return os.path.join(self.tmpdir, 'tagmap') |
| 34 | 36 |
| 35 def test_author_map(self, stupid=False): | 37 def test_author_map(self): |
| 36 repo_path = self.load_svndump('replace_trunk_with_branch.svndump') | 38 repo_path = self.load_svndump('replace_trunk_with_branch.svndump') |
| 37 authormap = open(self.authors, 'w') | 39 authormap = open(self.authors, 'w') |
| 38 authormap.write('Augie=Augie Fackler <durin42@gmail.com> # stuffy\n') | 40 authormap.write('Augie=Augie Fackler <durin42@gmail.com> # stuffy\n') |
| 39 authormap.write("Augie Fackler <durin42@gmail.com>\n") | 41 authormap.write("Augie Fackler <durin42@gmail.com>\n") |
| 40 authormap.close() | 42 authormap.close() |
| 41 ui = self.ui(stupid) | 43 ui = self.ui() |
| 42 ui.setconfig('hgsubversion', 'authormap', self.authors) | 44 ui.setconfig('hgsubversion', 'authormap', self.authors) |
| 43 commands.clone(ui, test_util.fileurl(repo_path), | 45 commands.clone(ui, test_util.fileurl(repo_path), |
| 44 self.wc_path, authors=self.authors) | 46 self.wc_path, authors=self.authors) |
| 45 self.assertEqual(self.repo[0].user(), | 47 self.assertEqual(self.repo[0].user(), |
| 46 'Augie Fackler <durin42@gmail.com>') | 48 'Augie Fackler <durin42@gmail.com>') |
| 47 self.assertEqual(self.repo['tip'].user(), | 49 self.assertEqual(self.repo['tip'].user(), |
| 48 'evil@5b65bade-98f3-4993-a01f-b7a6710da339') | 50 'evil@5b65bade-98f3-4993-a01f-b7a6710da339') |
| 49 | 51 |
| 50 def test_author_map_stupid(self): | 52 def test_author_map_closing_author(self): |
| 51 self.test_author_map(True) | |
| 52 | |
| 53 def test_author_map_closing_author(self, stupid=False): | |
| 54 repo_path = self.load_svndump('replace_trunk_with_branch.svndump') | 53 repo_path = self.load_svndump('replace_trunk_with_branch.svndump') |
| 55 authormap = open(self.authors, 'w') | 54 authormap = open(self.authors, 'w') |
| 56 authormap.write("evil=Testy <test@test>") | 55 authormap.write("evil=Testy <test@test>") |
| 57 authormap.close() | 56 authormap.close() |
| 58 ui = self.ui(stupid) | 57 ui = self.ui() |
| 59 ui.setconfig('hgsubversion', 'authormap', self.authors) | 58 ui.setconfig('hgsubversion', 'authormap', self.authors) |
| 60 commands.clone(ui, test_util.fileurl(repo_path), | 59 commands.clone(ui, test_util.fileurl(repo_path), |
| 61 self.wc_path, authors=self.authors) | 60 self.wc_path, authors=self.authors) |
| 62 self.assertEqual(self.repo[0].user(), | 61 self.assertEqual(self.repo[0].user(), |
| 63 'Augie@5b65bade-98f3-4993-a01f-b7a6710da339') | 62 'Augie@5b65bade-98f3-4993-a01f-b7a6710da339') |
| 64 self.assertEqual(self.repo['tip'].user(), | 63 self.assertEqual(self.repo['tip'].user(), |
| 65 'Testy <test@test>') | 64 'Testy <test@test>') |
| 66 | 65 |
| 67 def test_author_map_closing_author_stupid(self): | 66 def test_author_map_no_author(self): |
| 68 self.test_author_map_closing_author(True) | 67 repo, repo_path = self.load_and_fetch('no-author.svndump') |
| 69 | |
| 70 def test_author_map_no_author(self, stupid=False): | |
| 71 repo, repo_path = self.load_and_fetch('no-author.svndump', | |
| 72 stupid=stupid) | |
| 73 users = set(self.repo[r].user() for r in self.repo) | 68 users = set(self.repo[r].user() for r in self.repo) |
| 74 expected_users = ['(no author)@%s' % self.repo.svnmeta().uuid] | 69 expected_users = ['(no author)@%s' % self.repo.svnmeta().uuid] |
| 75 self.assertEqual(sorted(users), expected_users) | 70 self.assertEqual(sorted(users), expected_users) |
| 76 test_util.rmtree(self.wc_path) | 71 test_util.rmtree(self.wc_path) |
| 77 | 72 |
| 78 authormap = open(self.authors, 'w') | 73 authormap = open(self.authors, 'w') |
| 79 authormap.write("(no author)=Testy <test@example.com>") | 74 authormap.write("(no author)=Testy <test@example.com>") |
| 80 authormap.close() | 75 authormap.close() |
| 81 ui = self.ui(stupid) | 76 ui = self.ui() |
| 82 ui.setconfig('hgsubversion', 'authormap', self.authors) | 77 ui.setconfig('hgsubversion', 'authormap', self.authors) |
| 83 commands.clone(ui, test_util.fileurl(repo_path), | 78 commands.clone(ui, test_util.fileurl(repo_path), |
| 84 self.wc_path, authors=self.authors) | 79 self.wc_path, authors=self.authors) |
| 85 users = set(self.repo[r].user() for r in self.repo) | 80 users = set(self.repo[r].user() for r in self.repo) |
| 86 expected_users = ['Testy <test@example.com>'] | 81 expected_users = ['Testy <test@example.com>'] |
| 87 self.assertEqual(sorted(users), expected_users) | 82 self.assertEqual(sorted(users), expected_users) |
| 88 | |
| 89 def test_author_map_no_author_stupid(self): | |
| 90 self.test_author_map_no_author(True) | |
| 91 | 83 |
| 92 def test_author_map_no_overwrite(self): | 84 def test_author_map_no_overwrite(self): |
| 93 cwd = os.path.dirname(__file__) | 85 cwd = os.path.dirname(__file__) |
| 94 orig = os.path.join(cwd, 'fixtures', 'author-map-test.txt') | 86 orig = os.path.join(cwd, 'fixtures', 'author-map-test.txt') |
| 95 new = open(self.authors, 'w') | 87 new = open(self.authors, 'w') |
| 99 fromself = set(test) | 91 fromself = set(test) |
| 100 test.load(orig) | 92 test.load(orig) |
| 101 all_tests = set(test) | 93 all_tests = set(test) |
| 102 self.assertEqual(fromself.symmetric_difference(all_tests), set()) | 94 self.assertEqual(fromself.symmetric_difference(all_tests), set()) |
| 103 | 95 |
| 104 def _loadwithfilemap(self, svndump, filemapcontent, stupid=False, | 96 def _loadwithfilemap(self, svndump, filemapcontent, |
| 105 failonmissing=True): | 97 failonmissing=True): |
| 106 repo_path = self.load_svndump(svndump) | 98 repo_path = self.load_svndump(svndump) |
| 107 filemap = open(self.filemap, 'w') | 99 filemap = open(self.filemap, 'w') |
| 108 filemap.write(filemapcontent) | 100 filemap.write(filemapcontent) |
| 109 filemap.close() | 101 filemap.close() |
| 110 ui = self.ui(stupid) | 102 ui = self.ui() |
| 111 ui.setconfig('hgsubversion', 'filemap', self.filemap) | 103 ui.setconfig('hgsubversion', 'filemap', self.filemap) |
| 112 ui.setconfig('hgsubversion', 'failoninvalidreplayfile', 'true') | 104 ui.setconfig('hgsubversion', 'failoninvalidreplayfile', 'true') |
| 113 ui.setconfig('hgsubversion', 'failonmissing', failonmissing) | 105 ui.setconfig('hgsubversion', 'failonmissing', failonmissing) |
| 114 commands.clone(ui, test_util.fileurl(repo_path), | 106 commands.clone(ui, test_util.fileurl(repo_path), |
| 115 self.wc_path, filemap=self.filemap) | 107 self.wc_path, filemap=self.filemap) |
| 116 return self.repo | 108 return self.repo |
| 117 | 109 |
| 118 def test_file_map(self, stupid=False): | 110 @test_util.requiresreplay |
| 111 def test_file_map(self): | |
| 119 repo = self._loadwithfilemap('replace_trunk_with_branch.svndump', | 112 repo = self._loadwithfilemap('replace_trunk_with_branch.svndump', |
| 120 "include alpha\n", stupid) | 113 "include alpha\n") |
| 121 self.assertEqual(node.hex(repo[0].node()), '88e2c7492d83e4bf30fbb2dcbf6aa24d60ac688d') | 114 self.assertEqual(node.hex(repo[0].node()), '88e2c7492d83e4bf30fbb2dcbf6aa24d60ac688d') |
| 122 self.assertEqual(node.hex(repo['default'].node()), 'e524296152246b3837fe9503c83b727075835155') | 115 self.assertEqual(node.hex(repo['default'].node()), 'e524296152246b3837fe9503c83b727075835155') |
| 123 | 116 |
| 124 def test_file_map_stupid(self): | 117 @test_util.requiresreplay |
| 125 # TODO: re-enable test if we ever reinstate this feature | 118 def test_file_map_exclude(self): |
| 126 self.assertRaises(hgutil.Abort, self.test_file_map, True) | |
| 127 | |
| 128 def test_file_map_exclude(self, stupid=False): | |
| 129 repo = self._loadwithfilemap('replace_trunk_with_branch.svndump', | 119 repo = self._loadwithfilemap('replace_trunk_with_branch.svndump', |
| 130 "exclude alpha\n", stupid) | 120 "exclude alpha\n") |
| 131 self.assertEqual(node.hex(repo[0].node()), '2c48f3525926ab6c8b8424bcf5eb34b149b61841') | 121 self.assertEqual(node.hex(repo[0].node()), '2c48f3525926ab6c8b8424bcf5eb34b149b61841') |
| 132 self.assertEqual(node.hex(repo['default'].node()), 'b37a3c0297b71f989064d9b545b5a478bbed7cc1') | 122 self.assertEqual(node.hex(repo['default'].node()), 'b37a3c0297b71f989064d9b545b5a478bbed7cc1') |
| 133 | 123 |
| 134 def test_file_map_exclude_stupid(self): | 124 @test_util.requiresreplay |
| 135 # TODO: re-enable test if we ever reinstate this feature | |
| 136 self.assertRaises(hgutil.Abort, self.test_file_map_exclude, True) | |
| 137 | |
| 138 def test_file_map_rule_order(self): | 125 def test_file_map_rule_order(self): |
| 139 repo = self._loadwithfilemap('replace_trunk_with_branch.svndump', | 126 repo = self._loadwithfilemap('replace_trunk_with_branch.svndump', |
| 140 "exclude alpha\ninclude .\nexclude gamma\n") | 127 "exclude alpha\ninclude .\nexclude gamma\n") |
| 141 # The exclusion of alpha is overridden by the later rule to | 128 # The exclusion of alpha is overridden by the later rule to |
| 142 # include all of '.', whereas gamma should remain excluded | 129 # include all of '.', whereas gamma should remain excluded |
| 144 self.assertEqual(self.repo[0].manifest().keys(), | 131 self.assertEqual(self.repo[0].manifest().keys(), |
| 145 ['alpha', 'beta']) | 132 ['alpha', 'beta']) |
| 146 self.assertEqual(self.repo['default'].manifest().keys(), | 133 self.assertEqual(self.repo['default'].manifest().keys(), |
| 147 ['alpha', 'beta']) | 134 ['alpha', 'beta']) |
| 148 | 135 |
| 136 @test_util.requiresreplay | |
| 149 def test_file_map_copy(self): | 137 def test_file_map_copy(self): |
| 150 # Exercise excluding files copied from a non-excluded directory. | 138 # Exercise excluding files copied from a non-excluded directory. |
| 151 # There will be missing files as we are copying from an excluded | 139 # There will be missing files as we are copying from an excluded |
| 152 # directory. | 140 # directory. |
| 153 repo = self._loadwithfilemap('copies.svndump', "exclude dir2\n", | 141 repo = self._loadwithfilemap('copies.svndump', "exclude dir2\n", |
| 154 failonmissing=False) | 142 failonmissing=False) |
| 155 self.assertEqual(['dir/a', 'dir3/a'], list(repo[2])) | 143 self.assertEqual(['dir/a', 'dir3/a'], list(repo[2])) |
| 156 | 144 |
| 145 @test_util.requiresreplay | |
| 157 def test_file_map_exclude_copy_source_and_dest(self): | 146 def test_file_map_exclude_copy_source_and_dest(self): |
| 158 # dir3 is excluded and copied from dir2 which is also excluded. | 147 # dir3 is excluded and copied from dir2 which is also excluded. |
| 159 # dir3 files should not be marked as missing and fetched. | 148 # dir3 files should not be marked as missing and fetched. |
| 160 repo = self._loadwithfilemap('copies.svndump', | 149 repo = self._loadwithfilemap('copies.svndump', |
| 161 "exclude dir2\nexclude dir3\n") | 150 "exclude dir2\nexclude dir3\n") |
| 162 self.assertEqual(['dir/a'], list(repo[2])) | 151 self.assertEqual(['dir/a'], list(repo[2])) |
| 163 | 152 |
| 153 @test_util.requiresreplay | |
| 164 def test_file_map_include_file_exclude_dir(self): | 154 def test_file_map_include_file_exclude_dir(self): |
| 165 # dir3 is excluded but we want dir3/a, which is also copied from | 155 # dir3 is excluded but we want dir3/a, which is also copied from |
| 166 # an exluded dir2. dir3/a should be fetched. | 156 # an exluded dir2. dir3/a should be fetched. |
| 167 repo = self._loadwithfilemap('copies.svndump', | 157 repo = self._loadwithfilemap('copies.svndump', |
| 168 "include .\nexclude dir2\nexclude dir3\ninclude dir3/a\n", | 158 "include .\nexclude dir2\nexclude dir3\ninclude dir3/a\n", |
| 169 failonmissing=False) | 159 failonmissing=False) |
| 170 self.assertEqual(['dir/a', 'dir3/a'], list(repo[2])) | 160 self.assertEqual(['dir/a', 'dir3/a'], list(repo[2])) |
| 171 | 161 |
| 162 @test_util.requiresreplay | |
| 172 def test_file_map_delete_dest(self): | 163 def test_file_map_delete_dest(self): |
| 173 repo = self._loadwithfilemap('copies.svndump', 'exclude dir3\n') | 164 repo = self._loadwithfilemap('copies.svndump', 'exclude dir3\n') |
| 174 self.assertEqual(['dir/a', 'dir2/a'], list(repo[3])) | 165 self.assertEqual(['dir/a', 'dir2/a'], list(repo[3])) |
| 175 | 166 |
| 176 def test_branchmap(self, stupid=False): | 167 def test_branchmap(self): |
| 177 repo_path = self.load_svndump('branchmap.svndump') | 168 repo_path = self.load_svndump('branchmap.svndump') |
| 178 branchmap = open(self.branchmap, 'w') | 169 branchmap = open(self.branchmap, 'w') |
| 179 branchmap.write("badname = good-name # stuffy\n") | 170 branchmap.write("badname = good-name # stuffy\n") |
| 180 branchmap.write("feature = default\n") | 171 branchmap.write("feature = default\n") |
| 181 branchmap.close() | 172 branchmap.close() |
| 182 ui = self.ui(stupid) | 173 ui = self.ui() |
| 183 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) | 174 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) |
| 184 commands.clone(ui, test_util.fileurl(repo_path), | 175 commands.clone(ui, test_util.fileurl(repo_path), |
| 185 self.wc_path, branchmap=self.branchmap) | 176 self.wc_path, branchmap=self.branchmap) |
| 186 branches = set(self.repo[i].branch() for i in self.repo) | 177 branches = set(self.repo[i].branch() for i in self.repo) |
| 187 self.assert_('badname' not in branches) | 178 self.assert_('badname' not in branches) |
| 188 self.assert_('good-name' in branches) | 179 self.assert_('good-name' in branches) |
| 189 self.assertEquals(self.repo[2].branch(), 'default') | 180 self.assertEquals(self.repo[2].branch(), 'default') |
| 190 | 181 |
| 191 def test_branchmap_stupid(self): | 182 def test_branchmap_tagging(self): |
| 192 self.test_branchmap(True) | |
| 193 | |
| 194 def test_branchmap_tagging(self, stupid=False): | |
| 195 '''test tagging a renamed branch, which used to raise an exception''' | 183 '''test tagging a renamed branch, which used to raise an exception''' |
| 196 repo_path = self.load_svndump('commit-to-tag.svndump') | 184 repo_path = self.load_svndump('commit-to-tag.svndump') |
| 197 branchmap = open(self.branchmap, 'w') | 185 branchmap = open(self.branchmap, 'w') |
| 198 branchmap.write("magic = art\n") | 186 branchmap.write("magic = art\n") |
| 199 branchmap.close() | 187 branchmap.close() |
| 200 ui = self.ui(stupid) | 188 ui = self.ui() |
| 201 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) | 189 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) |
| 202 commands.clone(ui, test_util.fileurl(repo_path), | 190 commands.clone(ui, test_util.fileurl(repo_path), |
| 203 self.wc_path, branchmap=self.branchmap) | 191 self.wc_path, branchmap=self.branchmap) |
| 204 branches = set(self.repo[i].branch() for i in self.repo) | 192 branches = set(self.repo[i].branch() for i in self.repo) |
| 205 self.assertEquals(sorted(branches), ['art', 'closeme']) | 193 self.assertEquals(sorted(branches), ['art', 'closeme']) |
| 206 | 194 |
| 207 def test_branchmap_tagging_stupid(self): | 195 def test_branchmap_empty_commit(self): |
| 208 self.test_branchmap_tagging(True) | |
| 209 | |
| 210 def test_branchmap_empty_commit(self, stupid=False): | |
| 211 '''test mapping an empty commit on a renamed branch''' | 196 '''test mapping an empty commit on a renamed branch''' |
| 212 repo_path = self.load_svndump('propset-branch.svndump') | 197 repo_path = self.load_svndump('propset-branch.svndump') |
| 213 branchmap = open(self.branchmap, 'w') | 198 branchmap = open(self.branchmap, 'w') |
| 214 branchmap.write("the-branch = bob\n") | 199 branchmap.write("the-branch = bob\n") |
| 215 branchmap.close() | 200 branchmap.close() |
| 216 ui = self.ui(stupid) | 201 ui = self.ui() |
| 217 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) | 202 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) |
| 218 commands.clone(ui, test_util.fileurl(repo_path), | 203 commands.clone(ui, test_util.fileurl(repo_path), |
| 219 self.wc_path, branchmap=self.branchmap) | 204 self.wc_path, branchmap=self.branchmap) |
| 220 branches = set(self.repo[i].branch() for i in self.repo) | 205 branches = set(self.repo[i].branch() for i in self.repo) |
| 221 self.assertEquals(sorted(branches), ['bob', 'default']) | 206 self.assertEquals(sorted(branches), ['bob', 'default']) |
| 222 | 207 |
| 223 def test_branchmap_empty_commit_stupid(self): | 208 def test_branchmap_combine(self): |
| 224 '''test mapping an empty commit on a renamed branch (stupid)''' | |
| 225 self.test_branchmap_empty_commit(True) | |
| 226 | |
| 227 def test_branchmap_combine(self, stupid=False): | |
| 228 '''test combining two branches, but retaining heads''' | 209 '''test combining two branches, but retaining heads''' |
| 229 repo_path = self.load_svndump('branchmap.svndump') | 210 repo_path = self.load_svndump('branchmap.svndump') |
| 230 branchmap = open(self.branchmap, 'w') | 211 branchmap = open(self.branchmap, 'w') |
| 231 branchmap.write("badname = default\n") | 212 branchmap.write("badname = default\n") |
| 232 branchmap.write("feature = default\n") | 213 branchmap.write("feature = default\n") |
| 233 branchmap.close() | 214 branchmap.close() |
| 234 ui = self.ui(stupid) | 215 ui = self.ui() |
| 235 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) | 216 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) |
| 236 commands.clone(ui, test_util.fileurl(repo_path), | 217 commands.clone(ui, test_util.fileurl(repo_path), |
| 237 self.wc_path, branchmap=self.branchmap) | 218 self.wc_path, branchmap=self.branchmap) |
| 238 branches = set(self.repo[i].branch() for i in self.repo) | 219 branches = set(self.repo[i].branch() for i in self.repo) |
| 239 self.assertEquals(sorted(branches), ['default']) | 220 self.assertEquals(sorted(branches), ['default']) |
| 243 # test that the mapping does not affect branch info | 224 # test that the mapping does not affect branch info |
| 244 branches = self.repo.svnmeta().branches | 225 branches = self.repo.svnmeta().branches |
| 245 self.assertEquals(sorted(branches.keys()), | 226 self.assertEquals(sorted(branches.keys()), |
| 246 [None, 'badname', 'feature']) | 227 [None, 'badname', 'feature']) |
| 247 | 228 |
| 248 def test_branchmap_combine_stupid(self): | 229 def test_branchmap_rebuildmeta(self): |
| 249 '''test combining two branches, but retaining heads (stupid)''' | |
| 250 self.test_branchmap_combine(True) | |
| 251 | |
| 252 def test_branchmap_rebuildmeta(self, stupid=False): | |
| 253 '''test rebuildmeta on a branchmapped clone''' | 230 '''test rebuildmeta on a branchmapped clone''' |
| 254 repo_path = self.load_svndump('branchmap.svndump') | 231 repo_path = self.load_svndump('branchmap.svndump') |
| 255 branchmap = open(self.branchmap, 'w') | 232 branchmap = open(self.branchmap, 'w') |
| 256 branchmap.write("badname = dit\n") | 233 branchmap.write("badname = dit\n") |
| 257 branchmap.write("feature = dah\n") | 234 branchmap.write("feature = dah\n") |
| 258 branchmap.close() | 235 branchmap.close() |
| 259 ui = self.ui(stupid) | 236 ui = self.ui() |
| 260 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) | 237 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) |
| 261 commands.clone(ui, test_util.fileurl(repo_path), | 238 commands.clone(ui, test_util.fileurl(repo_path), |
| 262 self.wc_path, branchmap=self.branchmap) | 239 self.wc_path, branchmap=self.branchmap) |
| 263 originfo = self.repo.svnmeta().branches | 240 originfo = self.repo.svnmeta().branches |
| 264 | 241 |
| 265 # clone & rebuild | 242 # clone & rebuild |
| 266 ui = self.ui(stupid) | 243 ui = self.ui() |
| 267 src, dest = test_util.hgclone(ui, self.wc_path, self.wc_path + '_clone', | 244 src, dest = test_util.hgclone(ui, self.wc_path, self.wc_path + '_clone', |
| 268 update=False) | 245 update=False) |
| 269 src = test_util.getlocalpeer(src) | 246 src = test_util.getlocalpeer(src) |
| 270 dest = test_util.getlocalpeer(dest) | 247 dest = test_util.getlocalpeer(dest) |
| 271 svncommands.rebuildmeta(ui, dest, | 248 svncommands.rebuildmeta(ui, dest, |
| 274 # just check the keys; assume the contents are unaffected by the branch | 251 # just check the keys; assume the contents are unaffected by the branch |
| 275 # map and thus properly tested by other tests | 252 # map and thus properly tested by other tests |
| 276 self.assertEquals(sorted(src.svnmeta().branches), | 253 self.assertEquals(sorted(src.svnmeta().branches), |
| 277 sorted(dest.svnmeta().branches)) | 254 sorted(dest.svnmeta().branches)) |
| 278 | 255 |
| 279 def test_branchmap_rebuildmeta_stupid(self): | 256 def test_branchmap_verify(self): |
| 280 '''test rebuildmeta on a branchmapped clone (stupid)''' | |
| 281 self.test_branchmap_rebuildmeta(True) | |
| 282 | |
| 283 def test_branchmap_verify(self, stupid=False): | |
| 284 '''test verify on a branchmapped clone''' | 257 '''test verify on a branchmapped clone''' |
| 285 repo_path = self.load_svndump('branchmap.svndump') | 258 repo_path = self.load_svndump('branchmap.svndump') |
| 286 branchmap = open(self.branchmap, 'w') | 259 branchmap = open(self.branchmap, 'w') |
| 287 branchmap.write("badname = dit\n") | 260 branchmap.write("badname = dit\n") |
| 288 branchmap.write("feature = dah\n") | 261 branchmap.write("feature = dah\n") |
| 289 branchmap.close() | 262 branchmap.close() |
| 290 ui = self.ui(stupid) | 263 ui = self.ui() |
| 291 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) | 264 ui.setconfig('hgsubversion', 'branchmap', self.branchmap) |
| 292 commands.clone(ui, test_util.fileurl(repo_path), | 265 commands.clone(ui, test_util.fileurl(repo_path), |
| 293 self.wc_path, branchmap=self.branchmap) | 266 self.wc_path, branchmap=self.branchmap) |
| 294 repo = self.repo | 267 repo = self.repo |
| 295 | 268 |
| 296 for r in repo: | 269 for r in repo: |
| 297 self.assertEquals(verify.verify(ui, repo, rev=r), 0) | 270 self.assertEquals(verify.verify(ui, repo, rev=r), 0) |
| 298 | |
| 299 def test_branchmap_verify_stupid(self): | |
| 300 '''test verify on a branchmapped clone (stupid)''' | |
| 301 self.test_branchmap_verify(True) | |
| 302 | 271 |
| 303 def test_branchmap_no_replacement(self): | 272 def test_branchmap_no_replacement(self): |
| 304 ''' | 273 ''' |
| 305 test that empty mappings are rejected | 274 test that empty mappings are rejected |
| 306 | 275 |
| 313 branchmap.write("closeme =\n") | 282 branchmap.write("closeme =\n") |
| 314 branchmap.close() | 283 branchmap.close() |
| 315 self.assertRaises(hgutil.Abort, | 284 self.assertRaises(hgutil.Abort, |
| 316 maps.BranchMap, self.ui(), self.branchmap) | 285 maps.BranchMap, self.ui(), self.branchmap) |
| 317 | 286 |
| 318 def test_tagmap(self, stupid=False): | 287 def test_tagmap(self): |
| 319 repo_path = self.load_svndump('basic_tag_tests.svndump') | 288 repo_path = self.load_svndump('basic_tag_tests.svndump') |
| 320 tagmap = open(self.tagmap, 'w') | 289 tagmap = open(self.tagmap, 'w') |
| 321 tagmap.write("tag_r3 = 3.x # stuffy\n") | 290 tagmap.write("tag_r3 = 3.x # stuffy\n") |
| 322 tagmap.write("copied_tag = \n") | 291 tagmap.write("copied_tag = \n") |
| 323 tagmap.close() | 292 tagmap.close() |
| 324 | 293 |
| 325 ui = self.ui(stupid) | 294 ui = self.ui() |
| 326 ui.setconfig('hgsubversion', 'tagmap', self.tagmap) | 295 ui.setconfig('hgsubversion', 'tagmap', self.tagmap) |
| 327 commands.clone(ui, test_util.fileurl(repo_path), | 296 commands.clone(ui, test_util.fileurl(repo_path), |
| 328 self.wc_path, tagmap=self.tagmap) | 297 self.wc_path, tagmap=self.tagmap) |
| 329 tags = self.repo.tags() | 298 tags = self.repo.tags() |
| 330 assert 'tag_r3' not in tags | 299 assert 'tag_r3' not in tags |
| 331 assert '3.x' in tags | 300 assert '3.x' in tags |
| 332 assert 'copied_tag' not in tags | 301 assert 'copied_tag' not in tags |
| 333 | 302 |
| 334 def test_tagmap_stupid(self): | 303 def test_tagren_changed(self): |
| 335 self.test_tagmap(True) | |
| 336 | |
| 337 def test_tagren_changed(self, stupid=False): | |
| 338 repo_path = self.load_svndump('commit-to-tag.svndump') | 304 repo_path = self.load_svndump('commit-to-tag.svndump') |
| 339 tagmap = open(self.tagmap, 'w') | 305 tagmap = open(self.tagmap, 'w') |
| 340 tagmap.write("edit-at-create = edit-past\n") | 306 tagmap.write("edit-at-create = edit-past\n") |
| 341 tagmap.write("also-edit = \n") | 307 tagmap.write("also-edit = \n") |
| 342 tagmap.write("will-edit = edit-future\n") | 308 tagmap.write("will-edit = edit-future\n") |
| 343 tagmap.close() | 309 tagmap.close() |
| 344 | 310 |
| 345 ui = self.ui(stupid) | 311 ui = self.ui() |
| 346 ui.setconfig('hgsubversion', 'tagmap', self.tagmap) | 312 ui.setconfig('hgsubversion', 'tagmap', self.tagmap) |
| 347 commands.clone(ui, test_util.fileurl(repo_path), | 313 commands.clone(ui, test_util.fileurl(repo_path), |
| 348 self.wc_path, tagmap=self.tagmap) | 314 self.wc_path, tagmap=self.tagmap) |
| 349 tags = self.repo.tags() | 315 tags = self.repo.tags() |
| 350 | 316 |
| 351 def test_tagren_changed_stupid(self): | 317 def test_empty_log_message(self): |
| 352 self.test_tagren_changed(True) | 318 repo, repo_path = self.load_and_fetch('empty-log-message.svndump') |
| 353 | |
| 354 def test_empty_log_message(self, stupid=False): | |
| 355 repo, repo_path = self.load_and_fetch('empty-log-message.svndump', | |
| 356 stupid=stupid) | |
| 357 | 319 |
| 358 self.assertEqual(repo['tip'].description(), '') | 320 self.assertEqual(repo['tip'].description(), '') |
| 359 | 321 |
| 360 test_util.rmtree(self.wc_path) | 322 test_util.rmtree(self.wc_path) |
| 361 | 323 |
| 362 ui = self.ui(stupid) | 324 ui = self.ui() |
| 363 ui.setconfig('hgsubversion', 'defaultmessage', 'blyf') | 325 ui.setconfig('hgsubversion', 'defaultmessage', 'blyf') |
| 364 commands.clone(ui, test_util.fileurl(repo_path), self.wc_path) | 326 commands.clone(ui, test_util.fileurl(repo_path), self.wc_path) |
| 365 | 327 |
| 366 self.assertEqual(self.repo['tip'].description(), 'blyf') | 328 self.assertEqual(self.repo['tip'].description(), 'blyf') |
| 367 | 329 |
| 368 | 330 |
| 369 def test_empty_log_message_stupid(self): | |
| 370 self.test_empty_log_message(True) |
