Mercurial > hgsubversion
comparison tests/test_tags.py @ 1106:5cb6c95e0283 stable
Merge default and stable so I can do stable releases again.
| author | Augie Fackler <raf@durin42.com> |
|---|---|
| date | Tue, 11 Feb 2014 12:48:49 -0500 |
| parents | 6e1dbf6cbc92 |
| children | f06bb42bd2b2 |
comparison
equal
deleted
inserted
replaced
| 1020:b5b1fce26f1f | 1106:5cb6c95e0283 |
|---|---|
| 6 from mercurial import commands | 6 from mercurial import commands |
| 7 from mercurial import hg | 7 from mercurial import hg |
| 8 from mercurial import node | 8 from mercurial import node |
| 9 from mercurial import ui | 9 from mercurial import ui |
| 10 | 10 |
| 11 from hgsubversion import compathacks | |
| 11 from hgsubversion import svncommands | 12 from hgsubversion import svncommands |
| 12 from hgsubversion import svnrepo | 13 from hgsubversion import svnrepo |
| 13 | 14 |
| 14 class TestTags(test_util.TestBase): | 15 class TestTags(test_util.TestBase): |
| 15 def test_tags(self, stupid=False): | 16 stupid_mode_tests = True |
| 16 repo = self._load_fixture_and_fetch('basic_tag_tests.svndump', | 17 |
| 17 stupid=stupid) | 18 def test_tags(self): |
| 19 repo = self._load_fixture_and_fetch('basic_tag_tests.svndump') | |
| 18 self.assertEqual(sorted(repo.tags()), ['copied_tag', 'tag_r3', 'tip']) | 20 self.assertEqual(sorted(repo.tags()), ['copied_tag', 'tag_r3', 'tip']) |
| 19 self.assertEqual(repo['tag_r3'], repo['copied_tag']) | 21 self.assertEqual(repo['tag_r3'], repo['copied_tag']) |
| 20 self.assertEqual(repo['tag_r3'].rev(), 1) | 22 self.assertEqual(repo['tag_r3'].rev(), 1) |
| 21 | 23 |
| 22 def test_tags_stupid(self): | 24 def test_remove_tag(self): |
| 23 self.test_tags(stupid=True) | 25 repo = self._load_fixture_and_fetch('remove_tag_test.svndump') |
| 24 | |
| 25 def test_remove_tag(self, stupid=False): | |
| 26 repo = self._load_fixture_and_fetch('remove_tag_test.svndump', | |
| 27 stupid=stupid) | |
| 28 self.assertEqual(repo['tag_r3'].rev(), 1) | 26 self.assertEqual(repo['tag_r3'].rev(), 1) |
| 29 self.assert_('copied_tag' not in repo.tags()) | 27 self.assert_('copied_tag' not in repo.tags()) |
| 30 | 28 |
| 31 def test_remove_tag_stupid(self): | 29 def test_rename_tag(self): |
| 32 self.test_remove_tag(stupid=True) | |
| 33 | |
| 34 def test_rename_tag(self, stupid=False): | |
| 35 expected = """\ | 30 expected = """\ |
| 36 node: hg=default@2:svn=trunk@4 | 31 node: hg=default@2:svn=trunk@4 |
| 37 tagging r3 | 32 tagging r3 |
| 38 tag_r3: hg=default@1:svn=trunk@3 | 33 tag_r3: hg=default@1:svn=trunk@3 |
| 39 | 34 |
| 47 tag_r3: hg=default@1:svn=trunk@3 | 42 tag_r3: hg=default@1:svn=trunk@3 |
| 48 copied_tag: hg=default@1:svn=trunk@3 | 43 copied_tag: hg=default@1:svn=trunk@3 |
| 49 copied_tag: hg=default@-1:svn=unk@unk | 44 copied_tag: hg=default@-1:svn=unk@unk |
| 50 other_tag_r3: hg=default@1:svn=trunk@3 | 45 other_tag_r3: hg=default@1:svn=trunk@3 |
| 51 """ | 46 """ |
| 52 self._test_tags('rename_tag_test.svndump', expected, stupid) | 47 self._test_tags('rename_tag_test.svndump', expected) |
| 53 | 48 |
| 54 def test_rename_tag_stupid(self): | 49 def test_branch_from_tag(self): |
| 55 self.test_rename_tag(stupid=True) | 50 repo = self._load_fixture_and_fetch('branch_from_tag.svndump') |
| 56 | 51 self.assert_('branch_from_tag' in compathacks.branchset(repo)) |
| 57 def test_branch_from_tag(self, stupid=False): | |
| 58 repo = self._load_fixture_and_fetch('branch_from_tag.svndump', | |
| 59 stupid=stupid) | |
| 60 self.assert_('branch_from_tag' in repo.branchtags()) | |
| 61 self.assertEqual(repo[1], repo['tag_r3']) | 52 self.assertEqual(repo[1], repo['tag_r3']) |
| 62 self.assertEqual(repo['branch_from_tag'].parents()[0], repo['copied_tag']) | 53 self.assertEqual(repo['branch_from_tag'].parents()[0], repo['copied_tag']) |
| 63 | 54 |
| 64 def test_branch_from_tag_stupid(self): | 55 def test_tag_by_renaming_branch(self): |
| 65 self.test_branch_from_tag(stupid=True) | 56 repo = self._load_fixture_and_fetch('tag_by_rename_branch.svndump') |
| 66 | |
| 67 def test_tag_by_renaming_branch(self, stupid=False): | |
| 68 repo = self._load_fixture_and_fetch('tag_by_rename_branch.svndump', | |
| 69 stupid=stupid) | |
| 70 branches = set(repo[h] for h in repo.heads()) | 57 branches = set(repo[h] for h in repo.heads()) |
| 71 self.assert_('dummy' not in branches) | 58 self.assert_('dummy' not in branches) |
| 72 self.assertEqual(repo['dummy'], repo['tip'].parents()[0], | 59 self.assertEqual(repo['dummy'], repo['tip'].parents()[0], |
| 73 '%r != %r[0]' % (repo['dummy'], | 60 '%r != %r[0]' % (repo['dummy'], |
| 74 repo['tip'].parents())) | 61 repo['tip'].parents())) |
| 75 extra = repo['tip'].extra().copy() | 62 extra = repo['tip'].extra().copy() |
| 76 extra.pop('convert_revision', None) | 63 extra.pop('convert_revision', None) |
| 77 self.assertEqual(extra, {'branch': 'dummy', 'close': '1'}) | 64 self.assertEqual(extra, {'branch': 'dummy', 'close': '1'}) |
| 78 | |
| 79 def test_tag_by_renaming_branch_stupid(self): | |
| 80 self.test_tag_by_renaming_branch(stupid=True) | |
| 81 | 65 |
| 82 def test_deletion_of_tag_on_trunk_after_branching(self): | 66 def test_deletion_of_tag_on_trunk_after_branching(self): |
| 83 repo = self._load_fixture_and_fetch('tag_deletion_tag_branch.svndump') | 67 repo = self._load_fixture_and_fetch('tag_deletion_tag_branch.svndump') |
| 84 branches = set(repo[h].extra()['branch'] for h in repo.heads()) | 68 branches = set(repo[h].extra()['branch'] for h in repo.heads()) |
| 85 self.assertEqual(branches, set(['default', 'from_2', ])) | 69 self.assertEqual(branches, set(['default', 'from_2', ])) |
| 99 tags, | 83 tags, |
| 100 {'blah/trunktag': '\xd3$@\xd7\xd8Nu\xce\xa6%\xf1u\xd9b\x1a\xb2\x81\xc2\xb0\xb1', | 84 {'blah/trunktag': '\xd3$@\xd7\xd8Nu\xce\xa6%\xf1u\xd9b\x1a\xb2\x81\xc2\xb0\xb1', |
| 101 'versions/branch_version': 'I\x89\x1c>z#\xfc._K#@:\xd6\x1f\x96\xd6\x83\x1b|', | 85 'versions/branch_version': 'I\x89\x1c>z#\xfc._K#@:\xd6\x1f\x96\xd6\x83\x1b|', |
| 102 }) | 86 }) |
| 103 | 87 |
| 104 def test_most_recent_is_edited_stupid(self): | 88 def test_most_recent_is_edited(self): |
| 105 self.test_most_recent_is_edited(True) | 89 repo, repo_path = self.load_and_fetch('most-recent-is-edit-tag.svndump') |
| 106 | |
| 107 def test_most_recent_is_edited(self, stupid=False): | |
| 108 repo, repo_path = self.load_and_fetch('most-recent-is-edit-tag.svndump', | |
| 109 stupid=stupid) | |
| 110 self.repo.ui.status( | 90 self.repo.ui.status( |
| 111 "Note: this test failing may be because of a rebuildmeta failure.\n" | 91 "Note: this test failing may be because of a rebuildmeta failure.\n" |
| 112 "You should check that before assuming issues with this test.\n") | 92 "You should check that before assuming issues with this test.\n") |
| 113 wc2_path = self.wc_path + '2' | 93 wc2_path = self.wc_path + '2' |
| 114 src, dest = test_util.hgclone(repo.ui, self.wc_path, wc2_path, update=False) | 94 src, dest = test_util.hgclone(repo.ui, self.wc_path, wc2_path, update=False) |
| 115 dest = test_util.getlocalpeer(dest) | 95 dest = test_util.getlocalpeer(dest) |
| 116 svncommands.rebuildmeta(repo.ui, | 96 svncommands.rebuildmeta(repo.ui, |
| 117 dest, | 97 dest, |
| 118 args=[test_util.fileurl(repo_path), ]) | 98 args=[test_util.fileurl(repo_path), ]) |
| 119 commands.pull(self.repo.ui, self.repo, stupid=stupid) | 99 commands.pull(self.repo.ui, self.repo) |
| 120 dtags, srctags = dest.tags(), self.repo.tags() | 100 dtags, srctags = dest.tags(), self.repo.tags() |
| 121 dtags.pop('tip') | 101 dtags.pop('tip') |
| 122 srctags.pop('tip') | 102 srctags.pop('tip') |
| 123 self.assertEqual(dtags, srctags) | 103 self.assertEqual(dtags, srctags) |
| 124 self.assertEqual(dest.heads(), self.repo.heads()) | 104 self.assertEqual(dest.heads(), self.repo.heads()) |
| 125 | 105 |
| 126 def test_edited_tag_stupid(self): | 106 def test_edited_tag(self): |
| 127 self.test_edited_tag(True) | 107 repo = self._load_fixture_and_fetch('commit-to-tag.svndump') |
| 128 | |
| 129 def test_edited_tag(self, stupid=False): | |
| 130 repo = self._load_fixture_and_fetch('commit-to-tag.svndump', | |
| 131 stupid=stupid) | |
| 132 headcount = 6 | 108 headcount = 6 |
| 133 self.assertEqual(len(repo.heads()), headcount) | 109 self.assertEqual(len(repo.heads()), headcount) |
| 134 heads = repo.heads() | 110 heads = repo.heads() |
| 135 openheads = [h for h in heads if not repo[h].extra().get('close', False)] | 111 openheads = [h for h in heads if not repo[h].extra().get('close', False)] |
| 136 closedheads = set(heads) - set(openheads) | 112 closedheads = set(heads) - set(openheads) |
| 219 for line in ctx['.hgtags'].data().splitlines(False): | 195 for line in ctx['.hgtags'].data().splitlines(False): |
| 220 node, name = line.split(None, 1) | 196 node, name = line.split(None, 1) |
| 221 w(' %s: %s\n' % (name, formatnode(repo[node]))) | 197 w(' %s: %s\n' % (name, formatnode(repo[node]))) |
| 222 w('\n') | 198 w('\n') |
| 223 | 199 |
| 224 def _test_tags(self, testpath, expected, stupid=False): | 200 def _test_tags(self, testpath, expected): |
| 225 repo = self._load_fixture_and_fetch(testpath, stupid=stupid) | 201 repo = self._load_fixture_and_fetch(testpath) |
| 226 fp = cStringIO.StringIO() | 202 fp = cStringIO.StringIO() |
| 227 for r in repo: | 203 for r in repo: |
| 228 self._debug_print_tags(repo, repo[r], fp=fp) | 204 self._debug_print_tags(repo, repo[r], fp=fp) |
| 229 output = fp.getvalue().strip() | 205 output = fp.getvalue().strip() |
| 230 expected = expected.strip() | 206 expected = expected.strip() |
| 233 expected = expected.splitlines() | 209 expected = expected.splitlines() |
| 234 output = output.splitlines() | 210 output = output.splitlines() |
| 235 diff = difflib.unified_diff(expected, output, 'expected', 'output') | 211 diff = difflib.unified_diff(expected, output, 'expected', 'output') |
| 236 self.assert_(False, '\n' + '\n'.join(diff)) | 212 self.assert_(False, '\n' + '\n'.join(diff)) |
| 237 | 213 |
| 238 def test_tagging_into_tag(self, stupid=False): | 214 def test_tagging_into_tag(self): |
| 239 expected = """\ | 215 expected = """\ |
| 240 node: hg=test@2:svn=branches/test@4 | 216 node: hg=test@2:svn=branches/test@4 |
| 241 First tag. | 217 First tag. |
| 242 test-0.1: hg=test@1:svn=branches/test@3 | 218 test-0.1: hg=test@1:svn=branches/test@3 |
| 243 | 219 |
| 269 test-0.1-real: hg=test@1:svn=branches/test@3 | 245 test-0.1-real: hg=test@1:svn=branches/test@3 |
| 270 test-0.1: hg=default@-1:svn=unk@unk | 246 test-0.1: hg=default@-1:svn=unk@unk |
| 271 test-0.1-real: hg=default@-1:svn=unk@unk | 247 test-0.1-real: hg=default@-1:svn=unk@unk |
| 272 test-0.1: hg=test@1:svn=branches/test@3 | 248 test-0.1: hg=test@1:svn=branches/test@3 |
| 273 """ | 249 """ |
| 274 self._test_tags('renametagdir.svndump', expected, stupid=stupid) | 250 self._test_tags('renametagdir.svndump', expected) |
| 275 | |
| 276 def test_tagging_into_tag_stupid(self): | |
| 277 self.test_tagging_into_tag(True) | |
| 278 | |
| 279 | |
| 280 def suite(): | |
| 281 return unittest.TestLoader().loadTestsFromTestCase(TestTags) |
