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