Mercurial > hgsubversion
annotate tests/test_fetch_branches.py @ 1236:f367a4462191
push: update to branch tip instead of tip
We previously updated to the repository tip after pushing a revision,
presumably on the assumption that tip would be the last revision we
just pushed. This assumption is flawed for high traffic repositories.
In particular, you previsouly would sometimes end up on a completley
unrelated commit if someone else commits to a different branch in
between the time we push a revision and pull it back from the server.
This changes to instead update to the branch tip of the branch we were
on at the beginning of the push. This should be either the revision
we just pushed or a linear descendent of the revision we just pushed,
with a fair degree of reliability.
author | David Schleimer <dschleimer@fb.com> |
---|---|
date | Sat, 30 Aug 2014 09:23:31 -0700 |
parents | ba8485b9fee0 |
children | a36e87ae2380 |
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 |
1103
6e1dbf6cbc92
compathacks: new module to collect hacks to work around hg internals changing
Augie Fackler <raf@durin42.com>
parents:
1094
diff
changeset
|
9 from hgsubversion import compathacks |
6e1dbf6cbc92
compathacks: new module to collect hacks to work around hg internals changing
Augie Fackler <raf@durin42.com>
parents:
1094
diff
changeset
|
10 |
117
3afe404042a3
Add a disabled test for unrelated branches
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
11 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
|
12 stupid_mode_tests = True |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
13 |
284
f8f9a2993705
Implement parseurl support (#revision in repository urls)
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
14 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
|
15 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
|
16 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
|
17 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
|
18 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
|
19 |
815
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
20 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
|
21 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
|
22 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
|
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 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
|
25 ctx.extra().get('close', None) == '1') |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
26 return sorted(openbranches), sorted(closedbranches) |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
27 |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
28 def openbranches(self, repo): |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
29 return self.branches(repo)[0] |
372
a62965b179c1
Test for open branches in the pull result.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
344
diff
changeset
|
30 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
31 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
|
32 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
|
33 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
|
34 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
|
35 # 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
|
36 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
|
37 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
38 def test_unrelatedbranch(self): |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
39 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
|
40 heads = [repo[n] for n in repo.heads()] |
3afe404042a3
Add a disabled test for unrelated branches
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
41 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
|
42 # 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
|
43 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
|
44 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
|
45 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
46 def test_unorderedbranch(self): |
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
47 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
|
48 r = repo['branch'] |
4d42dbbb5127
hg_delta_editor: fix parent revision detection on branch copy
Patrick Mezard <pmezard@gmail.com>
parents:
120
diff
changeset
|
49 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
|
50 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
|
51 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
52 def test_renamed_branch_to_trunk(self): |
1232
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1103
diff
changeset
|
53 repo = self._load_fixture_and_fetch('branch_rename_to_trunk.svndump') |
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 |
1232
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1103
diff
changeset
|
74 def test_copyafterclose(self): |
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1103
diff
changeset
|
75 repo = self._load_fixture_and_fetch('copyafterclose.svndump') |
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1103
diff
changeset
|
76 self.assertEqual(repo['tip'].branch(), 'test') |
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1103
diff
changeset
|
77 self.assert_('file' in repo['test']) |
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1103
diff
changeset
|
78 self.assertEqual(repo['test']['file'].data(), 'trunk2\n') |
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1103
diff
changeset
|
79 self.assert_('dir/file' in repo['test']) |
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1103
diff
changeset
|
80 self.assertEqual(repo['test']['dir/file'].data(), 'trunk2\n') |
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1103
diff
changeset
|
81 |
ba8485b9fee0
editor: correctly import copies of directories from non-tracked or closed branches
David Schleimer <dschleimer@fb.com>
parents:
1103
diff
changeset
|
82 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
83 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
|
84 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
|
85 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
|
86 ['alpha', 'beta', 'iota', 'gamma', ]) |
c0063328587f
Fix and test for directory deletes during branch creation.
Augie Fackler <durin42@gmail.com>
parents:
201
diff
changeset
|
87 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
88 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
|
89 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
|
90 noupdate=False) |
278
60acc38eac96
clone: prefer tip of default to overall tip when updating
Martijn Pieters <mj@zopatista.com>
parents:
232
diff
changeset
|
91 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
|
92 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
|
93 |
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
|
94 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
|
95 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
|
96 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
|
97 'unorderedbranch.svndump', 'NaN') |
284
f8f9a2993705
Implement parseurl support (#revision in repository urls)
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
98 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
|
99 'unorderedbranch.svndump', '4') |
1103
6e1dbf6cbc92
compathacks: new module to collect hacks to work around hg internals changing
Augie Fackler <raf@durin42.com>
parents:
1094
diff
changeset
|
100 self.assertTrue('c' not in compathacks.branchset(repo)) |
278
60acc38eac96
clone: prefer tip of default to overall tip when updating
Martijn Pieters <mj@zopatista.com>
parents:
232
diff
changeset
|
101 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
102 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
|
103 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
|
104 subdir='project') |
942f198b8ff5
hg_delta_editor: detect new branches issued from non-branch directories
Patrick Mezard <pmezard@gmail.com>
parents:
284
diff
changeset
|
105 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
|
106 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
|
107 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
|
108 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
|
109 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
|
110 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
|
111 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
112 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
|
113 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
|
114 openb, closedb = self.branches(repo) |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
115 self.assertEqual(openb, []) |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
116 self.assertEqual(closedb, ['dev_branch']) |
e62e84a9464b
test_fetch_branches: stop comparing converted nodeids
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
117 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
|
118 |
1061
b8142bbf6656
test_fetch_branches: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1048
diff
changeset
|
119 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
|
120 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
|
121 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
|
122 # 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
|
123 ctx = repo['tip'] |
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
124 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
|
125 self.assertEqual('branch1', ctx.branch()) |
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
126 # 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
|
127 ctx = repo[5] |
588
2723152c8111
stupid: fix getcopies() logic
Patrick Mezard <pmezard@gmail.com>
parents:
587
diff
changeset
|
128 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
|
129 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
|
130 self.assertEqual('branch1', ctx.branch()) |
44c56a7727c4
editor: fix issamefile() and copy detection in replay mode
Patrick Mezard <pmezard@gmail.com>
parents:
576
diff
changeset
|
131 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
|
132 self.assertEqual('d\n', ctx['a'].data()) |
587
c06f59441f8e
editor: fix replaced directory copies
Patrick Mezard <pmezard@gmail.com>
parents:
585
diff
changeset
|
133 self.assertEqual('e\n', ctx['dir/e'].data()) |
c06f59441f8e
editor: fix replaced directory copies
Patrick Mezard <pmezard@gmail.com>
parents:
585
diff
changeset
|
134 self.assertEqual('e\n', ctx['dir2/e'].data()) |
588
2723152c8111
stupid: fix getcopies() logic
Patrick Mezard <pmezard@gmail.com>
parents:
587
diff
changeset
|
135 self.assertEqual('f\n', ctx['f'].data()) |
2723152c8111
stupid: fix getcopies() logic
Patrick Mezard <pmezard@gmail.com>
parents:
587
diff
changeset
|
136 self.assertEqual('g\n', ctx['g'].data()) |
2723152c8111
stupid: fix getcopies() logic
Patrick Mezard <pmezard@gmail.com>
parents:
587
diff
changeset
|
137 for f in ctx: |
2723152c8111
stupid: fix getcopies() logic
Patrick Mezard <pmezard@gmail.com>
parents:
587
diff
changeset
|
138 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
|
139 |
1093
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
140 def test_misspelled_branches_tags(self): |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
141 config = { |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
142 'hgsubversion.branchdir': 'branchez', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
143 'hgsubversion.tagpaths': 'tagz', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
144 } |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
145 '''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
|
146 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
|
147 layout='standard', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
148 config=config) |
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 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
|
151 expected_heads = set(['default', 'branch']) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
152 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
153 self.assertEqual(heads, expected_heads) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
154 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
155 tags = set(repo.tags()) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
156 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
|
157 self.assertEqual(tags, expected_tags) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
158 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
159 def test_subdir_branches_tags(self): |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
160 '''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
|
161 config = { |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
162 'hgsubversion.branchdir': 'bran/ches', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
163 'hgsubversion.tagpaths': 'ta/gs', |
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 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
|
166 layout='standard', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
167 config=config) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
168 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
169 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
|
170 expected_heads = set(['default', 'branch']) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
171 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
172 self.assertEqual(heads, expected_heads) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
173 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
174 tags = set(repo.tags()) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
175 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
|
176 self.assertEqual(tags, expected_tags) |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
177 |
1094
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
178 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
|
179 config = { |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
180 '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
|
181 } |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
182 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
|
183 layout='standard', |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
184 config=config) |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
185 |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
186 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
|
187 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
|
188 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
|
189 |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
190 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
|
191 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
|
192 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
|
193 |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
194 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
|
195 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
|
196 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
|
197 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
|
198 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
|
199 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
|
200 |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
201 |
1093
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
202 def suite(): |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
203 all_tests = [unittest.TestLoader().loadTestsFromTestCase(TestFetchBranches), |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
204 ] |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1061
diff
changeset
|
205 return unittest.TestSuite(all_tests) |