Mercurial > hgsubversion
annotate tests/test_tags.py @ 430:2851b81c65ce
maps: make sure AuthorMaps don't overwrite themselves, fix overriding
Author maps for the Python repo got truncated because of the author map stupidly
writing upon itself. This patch implements a better and faster scenario, where
entries will only be written to the saved author map if they're not coming from that
file. They're also now streamed into the file directly, instead of having to re-open
the file on every entry, and formatting is preserved.
author | Dirkjan Ochtman <dirkjan@ochtman.nl> |
---|---|
date | Mon, 15 Jun 2009 16:09:27 +0200 |
parents | f5222d021665 |
children | 0d3b5acb1d51 |
rev | line source |
---|---|
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
1 import unittest |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
2 |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
3 from mercurial import hg |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
4 from mercurial import node |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
5 from mercurial import ui |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
6 |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
7 import test_util |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
8 |
337
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
9 from hgsubversion import svnrepo |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
10 |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
11 class TestTags(test_util.TestBase): |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
12 def _load_fixture_and_fetch(self, fixture_name, stupid=False): |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
13 return test_util.load_fixture_and_fetch(fixture_name, self.repo_path, |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
14 self.wc_path, stupid=stupid) |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
15 |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
16 def test_tags(self, stupid=False): |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
17 repo = self._load_fixture_and_fetch('basic_tag_tests.svndump', |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
18 stupid=stupid) |
376
9327e9325645
Use tbdelta to push added tags into .hgtags.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
19 self.assertEqual(sorted(repo.tags()), ['copied_tag', 'tag_r3', 'tip']) |
9327e9325645
Use tbdelta to push added tags into .hgtags.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
20 self.assertEqual(repo['tag_r3'], repo['copied_tag']) |
9327e9325645
Use tbdelta to push added tags into .hgtags.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
21 self.assertEqual(repo['tag_r3'].rev(), 1) |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
22 |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
23 def test_tags_stupid(self): |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
24 self.test_tags(stupid=True) |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
25 |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
26 def test_remove_tag(self, stupid=False): |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
27 repo = self._load_fixture_and_fetch('remove_tag_test.svndump', |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
28 stupid=stupid) |
376
9327e9325645
Use tbdelta to push added tags into .hgtags.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
29 self.assertEqual(repo['tag_r3'].rev(), 1) |
9327e9325645
Use tbdelta to push added tags into .hgtags.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
30 self.assert_('copied_tag' not in repo.tags()) |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
31 |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
32 def test_remove_tag_stupid(self): |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
33 self.test_remove_tag(stupid=True) |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
34 |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
35 def test_rename_tag(self, stupid=False): |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
36 repo = self._load_fixture_and_fetch('rename_tag_test.svndump', |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
37 stupid=stupid) |
376
9327e9325645
Use tbdelta to push added tags into .hgtags.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
38 self.assertEqual(repo['tag_r3'], repo['other_tag_r3']) |
9327e9325645
Use tbdelta to push added tags into .hgtags.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
39 self.assert_('copied_tag' not in repo.tags()) |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
40 |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
41 def test_rename_tag_stupid(self): |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
42 self.test_rename_tag(stupid=True) |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
43 |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
44 def test_branch_from_tag(self, stupid=False): |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
45 repo = self._load_fixture_and_fetch('branch_from_tag.svndump', |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
46 stupid=stupid) |
376
9327e9325645
Use tbdelta to push added tags into .hgtags.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
47 self.assert_('branch_from_tag' in repo.branchtags()) |
9327e9325645
Use tbdelta to push added tags into .hgtags.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
48 self.assertEqual(repo[1], repo['tag_r3']) |
9327e9325645
Use tbdelta to push added tags into .hgtags.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
49 self.assertEqual(repo['branch_from_tag'].parents()[0], repo['copied_tag']) |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
50 |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
51 def test_branch_from_tag_stupid(self): |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
52 self.test_branch_from_tag(stupid=True) |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
53 |
37
2d319e162598
Add a test that proves renaming a branch to make a tag works properly.
Augie Fackler <durin42@gmail.com>
parents:
28
diff
changeset
|
54 def test_tag_by_renaming_branch(self, stupid=False): |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
55 repo = self._load_fixture_and_fetch('tag_by_rename_branch.svndump', |
37
2d319e162598
Add a test that proves renaming a branch to make a tag works properly.
Augie Fackler <durin42@gmail.com>
parents:
28
diff
changeset
|
56 stupid=stupid) |
425
f5222d021665
tests: fix for new branch heads change in upstream hg.
Augie Fackler <durin42@gmail.com>
parents:
399
diff
changeset
|
57 branches = set(repo[h] for h in repo.heads()) |
375
af9fc01299b4
Make branch closing more Mercurial-like.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
337
diff
changeset
|
58 self.assert_('dummy' not in branches) |
399
94f7e8c53c36
tags: end branch while tagging instead of creating extra changeset
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
389
diff
changeset
|
59 self.assertEqual(repo['dummy'], repo['tip'].parents()[0]) |
375
af9fc01299b4
Make branch closing more Mercurial-like.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
337
diff
changeset
|
60 extra = repo['tip'].extra().copy() |
af9fc01299b4
Make branch closing more Mercurial-like.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
337
diff
changeset
|
61 extra.pop('convert_revision', None) |
af9fc01299b4
Make branch closing more Mercurial-like.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
337
diff
changeset
|
62 self.assertEqual(extra, {'branch': 'dummy', 'close': '1'}) |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
63 |
37
2d319e162598
Add a test that proves renaming a branch to make a tag works properly.
Augie Fackler <durin42@gmail.com>
parents:
28
diff
changeset
|
64 def test_tag_by_renaming_branch_stupid(self): |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
65 self.test_tag_by_renaming_branch(stupid=True) |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
66 |
379
e1b23a6ca093
test_tags: Add a test that verifies tags get deleted properly even in the presence of somewhat odd branching.
Augie Fackler <durin42@gmail.com>
parents:
376
diff
changeset
|
67 def test_deletion_of_tag_on_trunk_after_branching(self): |
e1b23a6ca093
test_tags: Add a test that verifies tags get deleted properly even in the presence of somewhat odd branching.
Augie Fackler <durin42@gmail.com>
parents:
376
diff
changeset
|
68 repo = self._load_fixture_and_fetch('tag_deletion_tag_branch.svndump') |
425
f5222d021665
tests: fix for new branch heads change in upstream hg.
Augie Fackler <durin42@gmail.com>
parents:
399
diff
changeset
|
69 branches = set(repo[h].extra()['branch'] for h in repo.heads()) |
379
e1b23a6ca093
test_tags: Add a test that verifies tags get deleted properly even in the presence of somewhat odd branching.
Augie Fackler <durin42@gmail.com>
parents:
376
diff
changeset
|
70 self.assertEqual(branches, set(['default', 'from_2', ])) |
e1b23a6ca093
test_tags: Add a test that verifies tags get deleted properly even in the presence of somewhat odd branching.
Augie Fackler <durin42@gmail.com>
parents:
376
diff
changeset
|
71 self.assertEqual( |
e1b23a6ca093
test_tags: Add a test that verifies tags get deleted properly even in the presence of somewhat odd branching.
Augie Fackler <durin42@gmail.com>
parents:
376
diff
changeset
|
72 repo.tags(), |
e1b23a6ca093
test_tags: Add a test that verifies tags get deleted properly even in the presence of somewhat odd branching.
Augie Fackler <durin42@gmail.com>
parents:
376
diff
changeset
|
73 {'tip': 'g\xdd\xcd\x93\x03g\x1e\x7f\xa6-[V%\x99\x07\xd3\x9d>(\x94', |
e1b23a6ca093
test_tags: Add a test that verifies tags get deleted properly even in the presence of somewhat odd branching.
Augie Fackler <durin42@gmail.com>
parents:
376
diff
changeset
|
74 'new_tag': '=\xb8^\xb5\x18\xa9M\xdb\xf9\xb62Z\xa0\xb5R6+\xfe6.'}) |
e1b23a6ca093
test_tags: Add a test that verifies tags get deleted properly even in the presence of somewhat odd branching.
Augie Fackler <durin42@gmail.com>
parents:
376
diff
changeset
|
75 |
381
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
76 def test_tags_in_unusual_location(self): |
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
77 repo = self._load_fixture_and_fetch('unusual_tags.svndump') |
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
78 branches = set(repo[h].extra()['branch'] |
425
f5222d021665
tests: fix for new branch heads change in upstream hg.
Augie Fackler <durin42@gmail.com>
parents:
399
diff
changeset
|
79 for h in repo.heads()) |
381
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
80 self.assertEqual(branches, set(['default', 'dev_branch'])) |
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
81 tags = repo.tags() |
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
82 del tags['tip'] |
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
83 self.assertEqual( |
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
84 tags, |
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
85 {'blah/trunktag': '\xd3$@\xd7\xd8Nu\xce\xa6%\xf1u\xd9b\x1a\xb2\x81\xc2\xb0\xb1', |
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
86 'versions/branch_version': 'I\x89\x1c>z#\xfc._K#@:\xd6\x1f\x96\xd6\x83\x1b|', |
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
87 }) |
a441ba143ac8
tags: fix handling for certain nonstandard tag layouts.
Augie Fackler <durin42@gmail.com>
parents:
379
diff
changeset
|
88 |
379
e1b23a6ca093
test_tags: Add a test that verifies tags get deleted properly even in the presence of somewhat odd branching.
Augie Fackler <durin42@gmail.com>
parents:
376
diff
changeset
|
89 |
389
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
90 def test_tags_in_unusual_location(self): |
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
91 repo = self._load_fixture_and_fetch('tag_name_same_as_branch.svndump') |
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
92 self.assertEqual(len(repo.heads()), 1) |
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
93 branches = set(repo[h].extra()['branch'] |
425
f5222d021665
tests: fix for new branch heads change in upstream hg.
Augie Fackler <durin42@gmail.com>
parents:
399
diff
changeset
|
94 for h in repo.heads()) |
389
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
95 self.assertEqual(branches, set(['magic', ])) |
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
96 tags = repo.tags() |
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
97 del tags['tip'] |
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
98 self.assertEqual( |
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
99 tags, |
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
100 {'magic': '\xa2b\xb9\x03\xc6\xbd\x903\x95\xf5\x0f\x94\xcey\xc4E\xfaE6\xaa', |
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
101 'magic2': '\xa3\xa2D\x86aM\xc0v\xb9\xb0\x18\x14\xad\xacwBUi}\xe2', |
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
102 }) |
a8811c84e3ee
tags: Fix an improper parent calculation.
Augie Fackler <durin42@gmail.com>
parents:
381
diff
changeset
|
103 |
23
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
104 def suite(): |
1f8854804795
Add tests for tags and fix a bug in the tag-finding code that was found by the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
105 return unittest.TestLoader().loadTestsFromTestCase(TestTags) |