1
# Copyright (C) 2005 Canonical Ltd
1
# Copyright (C) 2005 by Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
11
# GNU General Public License for more details.
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
91
93
self.failUnless(os.path.isdir('a/dir'))
92
94
self.failUnless(os.path.isdir('a/b/dir'))
94
wt = WorkingTree.open('.')
95
wt_a = WorkingTree.open('a')
96
wt_b = WorkingTree.open('a/b')
98
delta = wt.changes_from(wt.basis_tree())
99
self.assertEquals(len(delta.added), 1)
100
self.assertEquals(delta.added[0][0], 'dir')
101
self.failIf(delta.modified)
103
delta = wt_a.changes_from(wt_a.basis_tree())
104
self.assertEquals(len(delta.added), 1)
105
self.assertEquals(delta.added[0][0], 'dir')
106
self.failIf(delta.modified)
108
delta = wt_b.changes_from(wt_b.basis_tree())
109
self.assertEquals(len(delta.added), 1)
110
self.assertEquals(delta.added[0][0], 'dir')
111
self.failIf(delta.modified)
96
from bzrlib.diff import compare_trees
98
b_a = Branch.open('a')
99
b_b = Branch.open('a/b')
101
delta = compare_trees(b.basis_tree(), b.working_tree())
102
self.assertEquals(len(delta.added), 1)
103
self.assertEquals(delta.added[0][0], 'dir')
104
self.failIf(delta.modified)
106
delta = compare_trees(b_a.basis_tree(), b_a.working_tree())
107
self.assertEquals(len(delta.added), 1)
108
self.assertEquals(delta.added[0][0], 'dir')
109
self.failIf(delta.modified)
111
delta = compare_trees(b_b.basis_tree(), b_b.working_tree())
112
self.assertEquals(len(delta.added), 1)
113
self.assertEquals(delta.added[0][0], 'dir')
114
self.failIf(delta.modified)
116
def test_branch_add_in_unversioned(self):
117
"""Try to add a file in an unversioned directory.
119
"bzr add" adds the parent as necessary, but simple branch add
122
from bzrlib.branch import Branch
123
from bzrlib.errors import NotVersionedError
125
b = Branch.initialize('.')
127
self.build_tree(['foo/',
130
self.assertRaises(NotVersionedError,
136
def test_add_in_unversioned(self):
137
"""Try to add a file in an unversioned directory.
139
"bzr add" should add the parent(s) as necessary.
141
from bzrlib.branch import Branch
142
eq = self.assertEqual
144
b = Branch.initialize('.')
146
self.build_tree(['inertiatic/', 'inertiatic/esp'])
147
eq(list(b.unknowns()), ['inertiatic'])
148
self.run_bzr('add', 'inertiatic/esp')
149
eq(list(b.unknowns()), [])
151
# Multiple unversioned parents
152
self.build_tree(['veil/', 'veil/cerpin/', 'veil/cerpin/taxt'])
153
eq(list(b.unknowns()), ['veil'])
154
self.run_bzr('add', 'veil/cerpin/taxt')
155
eq(list(b.unknowns()), [])
157
# Check whacky paths work
158
self.build_tree(['cicatriz/', 'cicatriz/esp'])
159
eq(list(b.unknowns()), ['cicatriz'])
160
self.run_bzr('add', 'inertiatic/../cicatriz/esp')
161
eq(list(b.unknowns()), [])
163
def test_add_in_versioned(self):
164
"""Try to add a file in a versioned directory.
166
"bzr add" should do this happily.
168
from bzrlib.branch import Branch
169
eq = self.assertEqual
171
b = Branch.initialize('.')
173
self.build_tree(['inertiatic/', 'inertiatic/esp'])
174
eq(list(b.unknowns()), ['inertiatic'])
175
self.run_bzr('add', '--no-recurse', 'inertiatic')
176
eq(list(b.unknowns()), ['inertiatic'+os.sep+'esp'])
177
self.run_bzr('add', 'inertiatic/esp')
178
eq(list(b.unknowns()), [])
180
def test_subdir_add(self):
181
"""Add in subdirectory should add only things from there down"""
183
from bzrlib.branch import Branch
185
eq = self.assertEqual
189
b = Branch.initialize('.')
191
self.build_tree(['src/', 'README'])
193
eq(sorted(b.unknowns()),
196
self.run_bzr('add', 'src')
198
self.build_tree(['src/foo.c'])
203
eq(sorted(b.unknowns()),
205
eq(len(t.read_working_inventory()), 3)
209
eq(list(b.unknowns()), [])
113
213
def check_branch(self):
114
214
"""After all the above changes, run the check and upgrade commands.
116
216
The upgrade should be a no-op."""
117
b = Branch.open(u'.')
118
218
mutter('branch has %d revisions', b.revno())
120
220
mutter('check branch...')
157
257
# commit from here should do nothing
158
258
run_bzr('commit', '.', '-m', 'commit subdir only', '--unchanged')
159
v3 = b.repository.revision_tree(b.get_rev_id(3))
259
v3 = b.revision_tree(b.get_rev_id(3))
160
260
eq(v3.get_file_by_path('b/two').read(), 'old contents')
161
261
eq(v3.get_file_by_path('top').read(), 'old contents')
162
262
eq(v3.get_file_by_path('a/one').read(), 'new contents')
164
264
# commit in subdirectory commits whole tree
165
265
run_bzr('commit', '-m', 'commit whole tree from subdir')
166
v4 = b.repository.revision_tree(b.get_rev_id(4))
266
v4 = b.revision_tree(b.get_rev_id(4))
167
267
eq(v4.get_file_by_path('b/two').read(), 'new contents')
168
268
eq(v4.get_file_by_path('top').read(), 'new contents')