Mercurial > hgsubversion
annotate tests/test_fetch_branches.py @ 1099:c6f7a8cfeca9
pull: correctly handle replacing the root of a branch with a non-copied directory
Prior to this diff, we would either crash, or continue past the
replacement without actually recording the change. This could lead to
later failing varify if the state before and after weren't identical.
author | David Schleimer <dschleimer@fb.com> |
---|---|
date | Sat, 16 Nov 2013 16:16:59 -0800 |
parents | 9a7e3dbd0f6e |
children | 6e1dbf6cbc92 |
rev | line source |
---|---|
643
d2ef7220a079
tests: import test_util as the first module in all relevant tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
588
diff
changeset
|
1 import test_util |
d2ef7220a079
tests: import test_util as the first module in all relevant tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
588
diff
changeset
|
2 |
117
3afe404042a3
Add a disabled test for unrelated branches
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
3 import unittest |
3afe404042a3
Add a disabled test for unrelated branches
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
4 |
1039
3df6ed4e7561
drop support for pre-2.0 versions of Mercurial
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
950
diff
changeset
|
5 from mercurial import error |
284
f8f9a2993705
Implement parseurl support (#revision in repository urls)
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
6 from mercurial import hg |
133
2242dd1163c6
hg_delta_editor: fix bad parent revision calculation in the case of a branch
Augie Fackler <durin42@gmail.com>
parents:
131
diff
changeset
|
7 from mercurial import node |
2242dd1163c6
hg_delta_editor: fix bad parent revision calculation in the case of a branch
Augie Fackler <durin42@gmail.com>
parents:
131
diff
changeset
|
8 |
117
3afe404042a3
Add a disabled test for unrelated branches
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
9 class TestFetchBranches(test_util.TestBase): |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
10 stupid_mode_tests = True |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
11 |
284
f8f9a2993705
Implement parseurl support (#revision in repository urls)
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
12 def _load_fixture_and_fetch_with_anchor(self, fixture_name, anchor): |
866
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
13 repo_path = self.load_svndump(fixture_name) |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
14 source = '%s#%s' % (test_util.fileurl(repo_path), anchor) |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
815
diff
changeset
|
15 test_util.hgclone(self.ui(), source, self.wc_path) |
576
d96aa92d9ad9
tests: silence test suite by using quiet UIs everywhere
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
551
diff
changeset
|
16 return hg.repository(self.ui(), self.wc_path) |
284
f8f9a2993705
Implement parseurl support (#revision in repository urls)
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
17 |
815
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
18 def branches(self, repo): |
425
f5222d021665
tests: fix for new branch heads change in upstream hg.
Augie Fackler <durin42@gmail.com>
parents:
397
diff
changeset
|
19 hctxs = [repo[hn] for hn in repo.heads()] |
815
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
20 openbranches = set(ctx.branch() for ctx in hctxs if |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
21 ctx.extra().get('close', None) != '1') |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
22 closedbranches = set(ctx.branch() for ctx in hctxs if |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
23 ctx.extra().get('close', None) == '1') |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
24 return sorted(openbranches), sorted(closedbranches) |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
25 |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
26 def openbranches(self, repo): |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
27 return self.branches(repo)[0] |
372
a62965b179c1
Test for open branches in the pull result.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
344
diff
changeset
|
28 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
29 def test_rename_branch_parent(self): |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
30 repo = self._load_fixture_and_fetch('rename_branch_parent_dir.svndump') |
551
d17cec76e769
replay: correctly handle renaming the parent dir of a branch
Augie Fackler <durin42@gmail.com>
parents:
473
diff
changeset
|
31 heads = [repo[n] for n in repo.heads()] |
d17cec76e769
replay: correctly handle renaming the parent dir of a branch
Augie Fackler <durin42@gmail.com>
parents:
473
diff
changeset
|
32 heads = dict([(ctx.branch(), ctx) for ctx in heads]) |
d17cec76e769
replay: correctly handle renaming the parent dir of a branch
Augie Fackler <durin42@gmail.com>
parents:
473
diff
changeset
|
33 # Let these tests disabled yet as the fix is not obvious |
d17cec76e769
replay: correctly handle renaming the parent dir of a branch
Augie Fackler <durin42@gmail.com>
parents:
473
diff
changeset
|
34 self.assertEqual(['dev_branch'], self.openbranches(repo)) |
d17cec76e769
replay: correctly handle renaming the parent dir of a branch
Augie Fackler <durin42@gmail.com>
parents:
473
diff
changeset
|
35 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
36 def test_unrelatedbranch(self): |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
37 repo = self._load_fixture_and_fetch('unrelatedbranch.svndump') |
117
3afe404042a3
Add a disabled test for unrelated branches
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
38 heads = [repo[n] for n in repo.heads()] |
3afe404042a3
Add a disabled test for unrelated branches
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
39 heads = dict([(ctx.branch(), ctx) for ctx in heads]) |
3afe404042a3
Add a disabled test for unrelated branches
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
40 # Let these tests disabled yet as the fix is not obvious |
120
f508c1fa19a5
hg_delta_editor: do not assume branches are copied from trunk by default
Patrick Mezard <pmezard@gmail.com>
parents:
117
diff
changeset
|
41 self.assertEqual(heads['branch1'].manifest().keys(), ['b']) |
f508c1fa19a5
hg_delta_editor: do not assume branches are copied from trunk by default
Patrick Mezard <pmezard@gmail.com>
parents:
117
diff
changeset
|
42 self.assertEqual(heads['branch2'].manifest().keys(), ['a', 'b']) |
117
3afe404042a3
Add a disabled test for unrelated branches
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
43 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
44 def test_unorderedbranch(self): |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
45 repo = self._load_fixture_and_fetch('unorderedbranch.svndump') |
131
4d42dbbb5127
hg_delta_editor: fix parent revision detection on branch copy
Patrick Mezard <pmezard@gmail.com>
parents:
120
diff
changeset
|
46 r = repo['branch'] |
4d42dbbb5127
hg_delta_editor: fix parent revision detection on branch copy
Patrick Mezard <pmezard@gmail.com>
parents:
120
diff
changeset
|
47 self.assertEqual(0, r.parents()[0].rev()) |
4d42dbbb5127
hg_delta_editor: fix parent revision detection on branch copy
Patrick Mezard <pmezard@gmail.com>
parents:
120
diff
changeset
|
48 self.assertEqual(['a', 'c', 'z'], sorted(r.manifest())) |
4d42dbbb5127
hg_delta_editor: fix parent revision detection on branch copy
Patrick Mezard <pmezard@gmail.com>
parents:
120
diff
changeset
|
49 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
50 def test_renamed_branch_to_trunk(self): |
950
a80b01ceb1fc
editor: relax copyfrom dir checks to avoid extra missing entries
Patrick Mezard <patrick@mezard.eu>
parents:
866
diff
changeset
|
51 config = {'hgsubversion.failonmissing': 'true'} |
147
22162380c4b9
Improve branch closing in the case of a single-rev replacement of one branch
Augie Fackler <durin42@gmail.com>
parents:
133
diff
changeset
|
52 repo = self._load_fixture_and_fetch('branch_rename_to_trunk.svndump', |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
53 config=config) |
201
883976b654b6
Be more explicit about which branch I'm checking.
Augie Fackler <durin42@gmail.com>
parents:
158
diff
changeset
|
54 self.assertEqual(repo['default'].parents()[0].branch(), 'dev_branch') |
815
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
55 self.assert_('iota' in repo['default']) |
133
2242dd1163c6
hg_delta_editor: fix bad parent revision calculation in the case of a branch
Augie Fackler <durin42@gmail.com>
parents:
131
diff
changeset
|
56 self.assertEqual(repo['old_trunk'].parents()[0].branch(), 'default') |
815
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
57 self.assert_('iota' not in repo['old_trunk']) |
372
a62965b179c1
Test for open branches in the pull result.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
344
diff
changeset
|
58 expected = ['default', 'old_trunk'] |
a62965b179c1
Test for open branches in the pull result.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
344
diff
changeset
|
59 self.assertEqual(self.openbranches(repo), expected) |
133
2242dd1163c6
hg_delta_editor: fix bad parent revision calculation in the case of a branch
Augie Fackler <durin42@gmail.com>
parents:
131
diff
changeset
|
60 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
61 def test_replace_trunk_with_branch(self): |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
62 repo = self._load_fixture_and_fetch('replace_trunk_with_branch.svndump') |
147
22162380c4b9
Improve branch closing in the case of a single-rev replacement of one branch
Augie Fackler <durin42@gmail.com>
parents:
133
diff
changeset
|
63 self.assertEqual(repo['default'].parents()[0].branch(), 'test') |
375
af9fc01299b4
Make branch closing more Mercurial-like.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
372
diff
changeset
|
64 self.assertEqual(repo['tip'].branch(), 'default') |
af9fc01299b4
Make branch closing more Mercurial-like.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
372
diff
changeset
|
65 self.assertEqual(repo['tip'].extra().get('close'), '1') |
372
a62965b179c1
Test for open branches in the pull result.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
344
diff
changeset
|
66 self.assertEqual(self.openbranches(repo), ['default']) |
147
22162380c4b9
Improve branch closing in the case of a single-rev replacement of one branch
Augie Fackler <durin42@gmail.com>
parents:
133
diff
changeset
|
67 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
68 def test_copybeforeclose(self): |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
69 repo = self._load_fixture_and_fetch('copybeforeclose.svndump') |
397
1b9d004a8c0a
branches: correctly deal with branch closing directly after copy/rename
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
70 self.assertEqual(repo['tip'].branch(), 'test') |
1b9d004a8c0a
branches: correctly deal with branch closing directly after copy/rename
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
71 self.assertEqual(repo['test'].extra().get('close'), '1') |
1b9d004a8c0a
branches: correctly deal with branch closing directly after copy/rename
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
72 self.assertEqual(repo['test']['b'].data(), 'a\n') |
1b9d004a8c0a
branches: correctly deal with branch closing directly after copy/rename
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
375
diff
changeset
|
73 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
74 def test_branch_create_with_dir_delete_works(self): |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
75 repo = self._load_fixture_and_fetch('branch_create_with_dir_delete.svndump') |
232
c0063328587f
Fix and test for directory deletes during branch creation.
Augie Fackler <durin42@gmail.com>
parents:
201
diff
changeset
|
76 self.assertEqual(repo['tip'].manifest().keys(), |
c0063328587f
Fix and test for directory deletes during branch creation.
Augie Fackler <durin42@gmail.com>
parents:
201
diff
changeset
|
77 ['alpha', 'beta', 'iota', 'gamma', ]) |
c0063328587f
Fix and test for directory deletes during branch creation.
Augie Fackler <durin42@gmail.com>
parents:
201
diff
changeset
|
78 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
79 def test_branch_tip_update_to_default(self): |
278
60acc38eac96
clone: prefer tip of default to overall tip when updating
Martijn Pieters <mj@zopatista.com>
parents:
232
diff
changeset
|
80 repo = self._load_fixture_and_fetch('unorderedbranch.svndump', |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
81 noupdate=False) |
278
60acc38eac96
clone: prefer tip of default to overall tip when updating
Martijn Pieters <mj@zopatista.com>
parents:
232
diff
changeset
|
82 self.assertEqual(repo[None].branch(), 'default') |
60acc38eac96
clone: prefer tip of default to overall tip when updating
Martijn Pieters <mj@zopatista.com>
parents:
232
diff
changeset
|
83 self.assertTrue('tip' not in repo[None].tags()) |
337
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
326
diff
changeset
|
84 |
344
4dfab1b8b7be
Mention what failed when given a non-numeric revision to clone/pull.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
85 def test_branch_pull_anchor(self): |
1039
3df6ed4e7561
drop support for pre-2.0 versions of Mercurial
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
950
diff
changeset
|
86 self.assertRaises(error.RepoLookupError, |
344
4dfab1b8b7be
Mention what failed when given a non-numeric revision to clone/pull.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
87 self._load_fixture_and_fetch_with_anchor, |
4dfab1b8b7be
Mention what failed when given a non-numeric revision to clone/pull.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
88 'unorderedbranch.svndump', 'NaN') |
284
f8f9a2993705
Implement parseurl support (#revision in repository urls)
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
89 repo = self._load_fixture_and_fetch_with_anchor( |
344
4dfab1b8b7be
Mention what failed when given a non-numeric revision to clone/pull.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
90 'unorderedbranch.svndump', '4') |
4dfab1b8b7be
Mention what failed when given a non-numeric revision to clone/pull.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
91 self.assertTrue('c' not in repo.branchtags()) |
278
60acc38eac96
clone: prefer tip of default to overall tip when updating
Martijn Pieters <mj@zopatista.com>
parents:
232
diff
changeset
|
92 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
93 def test_branches_weird_moves(self): |
865
04729f3a3d17
test_util: merge load_fixture_and_fetch() into TestBase method
Patrick Mezard <patrick@mezard.eu>
parents:
833
diff
changeset
|
94 repo = self._load_fixture_and_fetch('renamedproject.svndump', |
313
942f198b8ff5
hg_delta_editor: detect new branches issued from non-branch directories
Patrick Mezard <pmezard@gmail.com>
parents:
284
diff
changeset
|
95 subdir='project') |
942f198b8ff5
hg_delta_editor: detect new branches issued from non-branch directories
Patrick Mezard <pmezard@gmail.com>
parents:
284
diff
changeset
|
96 heads = [repo[n] for n in repo.heads()] |
942f198b8ff5
hg_delta_editor: detect new branches issued from non-branch directories
Patrick Mezard <pmezard@gmail.com>
parents:
284
diff
changeset
|
97 heads = dict((ctx.branch(), ctx) for ctx in heads) |
942f198b8ff5
hg_delta_editor: detect new branches issued from non-branch directories
Patrick Mezard <pmezard@gmail.com>
parents:
284
diff
changeset
|
98 mdefault = sorted(heads['default'].manifest().keys()) |
942f198b8ff5
hg_delta_editor: detect new branches issued from non-branch directories
Patrick Mezard <pmezard@gmail.com>
parents:
284
diff
changeset
|
99 mbranch = sorted(heads['branch'].manifest().keys()) |
942f198b8ff5
hg_delta_editor: detect new branches issued from non-branch directories
Patrick Mezard <pmezard@gmail.com>
parents:
284
diff
changeset
|
100 self.assertEqual(mdefault, ['a', 'b', 'd/a']) |
942f198b8ff5
hg_delta_editor: detect new branches issued from non-branch directories
Patrick Mezard <pmezard@gmail.com>
parents:
284
diff
changeset
|
101 self.assertEqual(mbranch, ['a']) |
942f198b8ff5
hg_delta_editor: detect new branches issued from non-branch directories
Patrick Mezard <pmezard@gmail.com>
parents:
284
diff
changeset
|
102 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
103 def test_branch_delete_parent_dir(self): |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
104 repo = self._load_fixture_and_fetch('branch_delete_parent_dir.svndump') |
815
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
105 openb, closedb = self.branches(repo) |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
106 self.assertEqual(openb, []) |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
107 self.assertEqual(closedb, ['dev_branch']) |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
108 self.assertEqual(list(repo['dev_branch']), ['foo']) |
473
45df4d9320fa
Fix 'parent dir of a branch is deleted' refactoring from 343da84.
Max Bowsher <maxb@f2s.com>
parents:
425
diff
changeset
|
109 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
110 def test_replace_branch_with_branch(self): |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
111 repo = self._load_fixture_and_fetch('replace_branch_with_branch.svndump') |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
112 self.assertEqual(7, test_util.repolen(repo)) |
582
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
113 # tip is former topological branch1 being closed |
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
114 ctx = repo['tip'] |
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
115 self.assertEqual('1', ctx.extra().get('close', '0')) |
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
116 self.assertEqual('branch1', ctx.branch()) |
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
117 # r5 is where the replacement takes place |
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
118 ctx = repo[5] |
588
2723152c8111
stupid: fix getcopies() logic
Patrick Mezard <pmezard@gmail.com>
parents:
587
diff
changeset
|
119 self.assertEqual(set(['a', 'c', 'dir/e', 'dir2/e', 'f', 'g']), set(ctx)) |
582
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
120 self.assertEqual('0', ctx.extra().get('close', '0')) |
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
121 self.assertEqual('branch1', ctx.branch()) |
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
122 self.assertEqual('c\n', ctx['c'].data()) |
585
c3ba4ca81d16
editor: fix replaced files content in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
582
diff
changeset
|
123 self.assertEqual('d\n', ctx['a'].data()) |
587
c06f59441f8e
editor: fix replaced directory copies
Patrick Mezard <pmezard@gmail.com>
parents:
585
diff
changeset
|
124 self.assertEqual('e\n', ctx['dir/e'].data()) |
c06f59441f8e
editor: fix replaced directory copies
Patrick Mezard <pmezard@gmail.com>
parents:
585
diff
changeset
|
125 self.assertEqual('e\n', ctx['dir2/e'].data()) |
588
2723152c8111
stupid: fix getcopies() logic
Patrick Mezard <pmezard@gmail.com>
parents:
587
diff
changeset
|
126 self.assertEqual('f\n', ctx['f'].data()) |
2723152c8111
stupid: fix getcopies() logic
Patrick Mezard <pmezard@gmail.com>
parents:
587
diff
changeset
|
127 self.assertEqual('g\n', ctx['g'].data()) |
2723152c8111
stupid: fix getcopies() logic
Patrick Mezard <pmezard@gmail.com>
parents:
587
diff
changeset
|
128 for f in ctx: |
2723152c8111
stupid: fix getcopies() logic
Patrick Mezard <pmezard@gmail.com>
parents:
587
diff
changeset
|
129 self.assertTrue(not ctx[f].renamed()) |
582
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
130 |
1093
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
131 def test_misspelled_branches_tags(self): |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
132 config = { |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
133 'hgsubversion.branchdir': 'branchez', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
134 'hgsubversion.tagpaths': 'tagz', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
135 } |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
136 '''Tests using the tags dir for branches and the branches dir for tags''' |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
137 repo = self._load_fixture_and_fetch('misspelled_branches_tags.svndump', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
138 layout='standard', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
139 config=config) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
140 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
141 heads = set([repo[n].branch() for n in repo.heads()]) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
142 expected_heads = set(['default', 'branch']) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
143 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
144 self.assertEqual(heads, expected_heads) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
145 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
146 tags = set(repo.tags()) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
147 expected_tags = set(['tip', 'tag_from_trunk', 'tag_from_branch']) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
148 self.assertEqual(tags, expected_tags) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
149 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
150 def test_subdir_branches_tags(self): |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
151 '''Tests using the tags dir for branches and the branches dir for tags''' |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
152 config = { |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
153 'hgsubversion.branchdir': 'bran/ches', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
154 'hgsubversion.tagpaths': 'ta/gs', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
155 } |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
156 repo = self._load_fixture_and_fetch('subdir_branches_tags.svndump', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
157 layout='standard', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
158 config=config) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
159 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
160 heads = set([repo[n].branch() for n in repo.heads()]) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
161 expected_heads = set(['default', 'branch']) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
162 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
163 self.assertEqual(heads, expected_heads) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
164 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
165 tags = set(repo.tags()) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
166 expected_tags = set(['tip', 'tag_from_trunk', 'tag_from_branch']) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
167 self.assertEqual(tags, expected_tags) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
168 |
1094
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
169 def test_subproject_fetch(self): |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
170 config = { |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
171 'hgsubversion.infix': 'project', |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
172 } |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
173 repo = self._load_fixture_and_fetch('subprojects.svndump', |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
174 layout='standard', |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
175 config=config) |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
176 |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
177 heads = set([repo[n].branch() for n in repo.heads()]) |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
178 expected_heads = set(['default', 'branch']) |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
179 self.assertEqual(heads, expected_heads) |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
180 |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
181 tags = set(repo.tags()) |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
182 expected_tags = set(['tip', 'tag_from_trunk', 'tag_from_branch']) |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
183 self.assertEqual(tags, expected_tags) |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
184 |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
185 for head in repo.heads(): |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
186 ctx = repo[head] |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
187 self.assertFalse('project/file' in ctx, 'failed to strip infix') |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
188 self.assertTrue('file' in ctx, 'failed to track a simple file') |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
189 self.assertFalse('other/phile' in ctx, 'pulled in other project') |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
190 self.assertFalse('phile' in ctx, 'merged other project in repo') |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
191 |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
192 |
1093
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
193 def suite(): |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
194 all_tests = [unittest.TestLoader().loadTestsFromTestCase(TestFetchBranches), |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
195 ] |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
196 return unittest.TestSuite(all_tests) |