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)