bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
| 
1731.2.1
by Aaron Bentley
 Initial subsume implementation  | 
1  | 
# Copyright (C) 2006 Canonical Ltd
 | 
2  | 
#
 | 
|
3  | 
# This program is free software; you can redistribute it and/or modify
 | 
|
4  | 
# it under the terms of the GNU General Public License as published by
 | 
|
5  | 
# the Free Software Foundation; either version 2 of the License, or
 | 
|
6  | 
# (at your option) any later version.
 | 
|
7  | 
#
 | 
|
8  | 
# This program is distributed in the hope that it will be useful,
 | 
|
9  | 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
|
10  | 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
|
11  | 
# GNU General Public License for more details.
 | 
|
12  | 
#
 | 
|
13  | 
# You should have received a copy of the GNU General Public License
 | 
|
14  | 
# along with this program; if not, write to the Free Software
 | 
|
15  | 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
|
16  | 
||
| 
1731.2.6
by Aaron Bentley
 Ensure subsume data survives reopening the tree  | 
17  | 
from bzrlib import bzrdir, errors, repository, workingtree, tests  | 
| 
1731.2.1
by Aaron Bentley
 Initial subsume implementation  | 
18  | 
|
19  | 
||
| 
1731.2.4
by Aaron Bentley
 Ensure subsume works with Knit2 repos  | 
20  | 
class TestWorkingTree(tests.TestCaseWithTransport):  | 
21  | 
||
22  | 
def make_branch_and_tree(self, relpath, format=None):  | 
|
23  | 
if format is None:  | 
|
| 
2255.2.194
by Robert Collins
 [BROKEN] Many updates to stop using experimental formats in tests.  | 
24  | 
format = 'dirstate-with-subtree'  | 
| 
3316.2.3
by Robert Collins
 Remove manual notification of transaction finishing on versioned files.  | 
25  | 
return tests.TestCaseWithTransport.make_branch_and_tree(self, relpath,  | 
| 
2100.3.17
by Aaron Bentley
 Remove get_format_*, make FormatRegistry.register_metadir vary working tree  | 
26  | 
format)  | 
| 
1731.2.4
by Aaron Bentley
 Ensure subsume works with Knit2 repos  | 
27  | 
|
| 
1731.2.5
by Aaron Bentley
 Ensure versionedfile will be produced for subsumed tree root  | 
28  | 
def make_trees(self, format=None, same_root=False):  | 
| 
2255.2.194
by Robert Collins
 [BROKEN] Many updates to stop using experimental formats in tests.  | 
29  | 
self.build_tree(['tree/',  | 
| 
1731.2.2
by Aaron Bentley
 Test subsume failure modes  | 
30  | 
'tree/file',  | 
31  | 
'tree/subtree/',  | 
|
| 
1731.2.1
by Aaron Bentley
 Initial subsume implementation  | 
32  | 
'tree/subtree/file2'])  | 
| 
1731.2.5
by Aaron Bentley
 Ensure versionedfile will be produced for subsumed tree root  | 
33  | 
base_tree = self.make_branch_and_tree('tree', format=format)  | 
| 
1731.2.1
by Aaron Bentley
 Initial subsume implementation  | 
34  | 
base_tree.add('file', 'file-id')  | 
35  | 
base_tree.commit('first commit', rev_id='tree-1')  | 
|
| 
2255.2.194
by Robert Collins
 [BROKEN] Many updates to stop using experimental formats in tests.  | 
36  | 
sub_tree = self.make_branch_and_tree('tree/subtree',  | 
37  | 
format='dirstate-with-subtree')  | 
|
| 
1731.2.5
by Aaron Bentley
 Ensure versionedfile will be produced for subsumed tree root  | 
38  | 
if same_root is True:  | 
39  | 
sub_tree.set_root_id(base_tree.get_root_id())  | 
|
| 
1731.2.1
by Aaron Bentley
 Initial subsume implementation  | 
40  | 
sub_tree.add('file2', 'file2-id')  | 
41  | 
sub_tree.commit('first commit', rev_id='subtree-1')  | 
|
| 
1731.2.2
by Aaron Bentley
 Test subsume failure modes  | 
42  | 
return base_tree, sub_tree  | 
43  | 
||
| 
1731.2.5
by Aaron Bentley
 Ensure versionedfile will be produced for subsumed tree root  | 
44  | 
def test_old_knit1_failure(self):  | 
45  | 
"""Ensure that BadSubsumeSource is raised.  | 
|
46  | 
||
47  | 
        SubsumeTargetNeedsUpgrade must not be raised, because upgrading the
 | 
|
48  | 
        target won't help.
 | 
|
49  | 
        """
 | 
|
| 
2100.3.17
by Aaron Bentley
 Remove get_format_*, make FormatRegistry.register_metadir vary working tree  | 
50  | 
base_tree, sub_tree = self.make_trees(format='knit',  | 
| 
1731.2.5
by Aaron Bentley
 Ensure versionedfile will be produced for subsumed tree root  | 
51  | 
same_root=True)  | 
52  | 
self.assertRaises(errors.BadSubsumeSource, base_tree.subsume,  | 
|
53  | 
sub_tree)  | 
|
54  | 
||
55  | 
def test_knit1_failure(self):  | 
|
| 
2100.3.17
by Aaron Bentley
 Remove get_format_*, make FormatRegistry.register_metadir vary working tree  | 
56  | 
base_tree, sub_tree = self.make_trees(format='knit')  | 
| 
1731.2.5
by Aaron Bentley
 Ensure versionedfile will be produced for subsumed tree root  | 
57  | 
self.assertRaises(errors.SubsumeTargetNeedsUpgrade, base_tree.subsume,  | 
58  | 
sub_tree)  | 
|
59  | 
||
| 
1731.2.2
by Aaron Bentley
 Test subsume failure modes  | 
60  | 
def test_subsume_tree(self):  | 
61  | 
base_tree, sub_tree = self.make_trees()  | 
|
| 
1731.2.5
by Aaron Bentley
 Ensure versionedfile will be produced for subsumed tree root  | 
62  | 
assert base_tree.get_root_id() != sub_tree.get_root_id()  | 
| 
1731.2.1
by Aaron Bentley
 Initial subsume implementation  | 
63  | 
sub_root_id = sub_tree.get_root_id()  | 
| 
2255.2.214
by Robert Collins
 Get _iter_changes on dirstate passing the subtree tests.  | 
64  | 
        # this test checks the subdir is removed, so it needs to know the
 | 
65  | 
        # control directory; that changes rarely so just hardcode (and check)
 | 
|
66  | 
        # it is correct.
 | 
|
67  | 
self.failUnlessExists('tree/subtree/.bzr')  | 
|
| 
1731.2.1
by Aaron Bentley
 Initial subsume implementation  | 
68  | 
base_tree.subsume(sub_tree)  | 
69  | 
self.assertEqual(['tree-1', 'subtree-1'], base_tree.get_parent_ids())  | 
|
70  | 
self.assertEqual(sub_root_id, base_tree.path2id('subtree'))  | 
|
71  | 
self.assertEqual('file2-id', base_tree.path2id('subtree/file2'))  | 
|
| 
2255.14.1
by Martin Pool
 Add BzrDir.retire_bzrdir and partly fix subsume  | 
72  | 
        # subsuming the tree removes the control directory, so you can't open
 | 
| 
2255.2.214
by Robert Collins
 Get _iter_changes on dirstate passing the subtree tests.  | 
73  | 
        # it.
 | 
| 
2255.14.1
by Martin Pool
 Add BzrDir.retire_bzrdir and partly fix subsume  | 
74  | 
self.failIfExists('tree/subtree/.bzr')  | 
| 
1731.2.4
by Aaron Bentley
 Ensure subsume works with Knit2 repos  | 
75  | 
file2 = open('tree/subtree/file2', 'rb')  | 
76  | 
try:  | 
|
77  | 
file2_contents = file2.read()  | 
|
78  | 
finally:  | 
|
79  | 
file2.close()  | 
|
| 
1731.2.6
by Aaron Bentley
 Ensure subsume data survives reopening the tree  | 
80  | 
base_tree = workingtree.WorkingTree.open('tree')  | 
| 
1731.2.4
by Aaron Bentley
 Ensure subsume works with Knit2 repos  | 
81  | 
base_tree.commit('combined', rev_id='combined-1')  | 
82  | 
self.assertEqual('file2-id', base_tree.path2id('subtree/file2'))  | 
|
83  | 
self.assertEqual('subtree/file2', base_tree.id2path('file2-id'))  | 
|
| 
2255.2.194
by Robert Collins
 [BROKEN] Many updates to stop using experimental formats in tests.  | 
84  | 
self.assertEqualDiff(file2_contents,  | 
| 
1731.2.4
by Aaron Bentley
 Ensure subsume works with Knit2 repos  | 
85  | 
base_tree.get_file_text('file2-id'))  | 
86  | 
basis_tree = base_tree.basis_tree()  | 
|
| 
2255.2.194
by Robert Collins
 [BROKEN] Many updates to stop using experimental formats in tests.  | 
87  | 
basis_tree.lock_read()  | 
88  | 
self.addCleanup(basis_tree.unlock)  | 
|
89  | 
self.assertEqualDiff(file2_contents,  | 
|
| 
1731.2.4
by Aaron Bentley
 Ensure subsume works with Knit2 repos  | 
90  | 
base_tree.get_file_text('file2-id'))  | 
| 
2255.2.194
by Robert Collins
 [BROKEN] Many updates to stop using experimental formats in tests.  | 
91  | 
self.assertEqualDiff(file2_contents,  | 
| 
1731.2.4
by Aaron Bentley
 Ensure subsume works with Knit2 repos  | 
92  | 
basis_tree.get_file_text('file2-id'))  | 
| 
2255.2.194
by Robert Collins
 [BROKEN] Many updates to stop using experimental formats in tests.  | 
93  | 
self.assertEqual('subtree-1',  | 
| 
1731.2.4
by Aaron Bentley
 Ensure subsume works with Knit2 repos  | 
94  | 
basis_tree.inventory['file2-id'].revision)  | 
| 
2255.2.194
by Robert Collins
 [BROKEN] Many updates to stop using experimental formats in tests.  | 
95  | 
self.assertEqual('combined-1',  | 
| 
1731.2.4
by Aaron Bentley
 Ensure subsume works with Knit2 repos  | 
96  | 
basis_tree.inventory[sub_root_id].revision)  | 
| 
1731.2.2
by Aaron Bentley
 Test subsume failure modes  | 
97  | 
|
98  | 
def test_subsume_failure(self):  | 
|
99  | 
base_tree, sub_tree = self.make_trees()  | 
|
100  | 
if base_tree.get_root_id() == sub_tree.get_root_id():  | 
|
101  | 
raise tests.TestSkipped('This test requires unique roots')  | 
|
102  | 
sub_root_id = sub_tree.get_root_id()  | 
|
| 
1731.2.5
by Aaron Bentley
 Ensure versionedfile will be produced for subsumed tree root  | 
103  | 
self.assertRaises(errors.BadSubsumeSource, base_tree.subsume,  | 
| 
1731.2.2
by Aaron Bentley
 Test subsume failure modes  | 
104  | 
base_tree)  | 
| 
1731.2.5
by Aaron Bentley
 Ensure versionedfile will be produced for subsumed tree root  | 
105  | 
self.assertRaises(errors.BadSubsumeSource, sub_tree.subsume,  | 
| 
1731.2.2
by Aaron Bentley
 Test subsume failure modes  | 
106  | 
base_tree)  | 
107  | 
self.build_tree(['subtree2/'])  | 
|
108  | 
sub_tree2 = self.make_branch_and_tree('subtree2')  | 
|
| 
1731.2.5
by Aaron Bentley
 Ensure versionedfile will be produced for subsumed tree root  | 
109  | 
self.assertRaises(errors.BadSubsumeSource, sub_tree.subsume,  | 
| 
1731.2.2
by Aaron Bentley
 Test subsume failure modes  | 
110  | 
sub_tree2)  | 
| 
1731.2.3
by Aaron Bentley
 Handle unversioned parents during subsume  | 
111  | 
self.build_tree(['tree/subtree/subtree3/'])  | 
112  | 
sub_tree3 = self.make_branch_and_tree('tree/subtree/subtree3')  | 
|
| 
1731.2.5
by Aaron Bentley
 Ensure versionedfile will be produced for subsumed tree root  | 
113  | 
self.assertRaises(errors.BadSubsumeSource, base_tree.subsume,  | 
| 
1731.2.3
by Aaron Bentley
 Handle unversioned parents during subsume  | 
114  | 
sub_tree3)  |