37
37
self.build_tree(['hello.txt'])
38
38
self.runbzr("commit -m empty", retcode=3)
40
def test_commit_with_path(self):
41
"""Commit tree with path of root specified"""
42
self.run_bzr('init', 'a')
43
self.build_tree(['a/a_file'])
44
self.run_bzr('add', 'a/a_file')
45
self.run_bzr('commit', '-m', 'first commit', 'a')
47
self.run_bzr('branch', 'a', 'b')
48
self.build_tree_contents([('b/a_file', 'changes in b')])
49
self.run_bzr('commit', '-m', 'first commit in b', 'b')
51
self.build_tree_contents([('a/a_file', 'new contents')])
52
self.run_bzr('commit', '-m', 'change in a', 'a')
55
self.run_bzr('merge', '../a', retcode=1) # will conflict
57
self.run_bzr('resolved', 'b/a_file')
58
self.run_bzr('commit', '-m', 'merge into b', 'b')
40
61
def test_10_verbose_commit(self):
41
62
"""Add one file and examine verbose commit output"""
42
63
self.runbzr("init")
73
94
wt.rename_one('hello.txt', 'gutentag.txt')
74
95
out, err = self.run_bzr("commit", "-m", "renamed")
75
96
self.assertEqual('', out)
76
self.assertEqual('renamed gutentag.txt\n'
97
self.assertEqual('renamed hello.txt => gutentag.txt\n'
77
98
'Committed revision 2.\n',
86
107
out, err = self.run_bzr("commit", "-m", "renamed")
87
108
self.assertEqual('', out)
88
109
self.assertEqualDiff('added subdir\n'
89
'renamed subdir/hello.txt\n'
110
'renamed hello.txt => subdir/hello.txt\n'
90
111
'Committed revision 2.\n',
102
123
'Committed revision 1.\n',
105
def test_16_verbose_commit_with_unchanged(self):
126
def test_verbose_commit_with_unchanged(self):
106
127
"""Unchanged files should not be listed by default in verbose output"""
107
128
self.runbzr("init")
108
129
self.build_tree(['hello.txt', 'unchanged.txt'])
115
136
'Committed revision 2.\n',
139
def test_commit_merge_reports_all_modified_files(self):
140
# the commit command should show all the files that are shown by
141
# bzr diff or bzr status when committing, even when they were not
142
# changed by the user but rather through doing a merge.
143
this_tree = self.make_branch_and_tree('this')
144
# we need a bunch of files and dirs, to perform one action on each.
147
'this/dirtoreparent/',
150
'this/filetoreparent',
167
this_tree.commit('create_files')
168
other_dir = this_tree.bzrdir.sprout('other')
169
other_tree = other_dir.open_workingtree()
170
other_tree.lock_write()
171
# perform the needed actions on the files and dirs.
173
other_tree.rename_one('dirtorename', 'renameddir')
174
other_tree.rename_one('dirtoreparent', 'renameddir/reparenteddir')
175
other_tree.rename_one('filetorename', 'renamedfile')
176
other_tree.rename_one('filetoreparent', 'renameddir/reparentedfile')
177
other_tree.remove(['dirtoremove', 'filetoremove'])
178
self.build_tree_contents([
180
('other/filetomodify', 'new content'),
181
('other/newfile', 'new file content')])
182
other_tree.add('newfile')
183
other_tree.add('newdir/')
184
other_tree.commit('modify all sample files and dirs.')
187
self.merge(other_tree.branch, this_tree)
189
out,err = self.run_bzr("commit", "-m", "added")
191
self.assertEqual('', out)
192
self.assertEqualDiff(
193
'modified filetomodify\n'
196
'renamed dirtorename => renameddir\n'
197
'renamed dirtoreparent => renameddir/reparenteddir\n'
198
'renamed filetoreparent => renameddir/reparentedfile\n'
199
'renamed filetorename => renamedfile\n'
200
'deleted dirtoremove\n'
201
'deleted filetoremove\n'
202
'Committed revision 2.\n',
118
205
def test_empty_commit_message(self):
119
206
self.runbzr("init")
120
207
file('foo.c', 'wt').write('int main() {}')
165
252
self.assertEqualDiff('', out)
166
253
self.assertEqualDiff('bzr: ERROR: Cannot perform local-only commits '
167
254
'on unbound branches.\n', err)
256
def test_commit_a_text_merge_in_a_checkout(self):
257
# checkouts perform multiple actions in a transaction across bond
258
# branches and their master, and have been observed to fail in the
259
# past. This is a user story reported to fail in bug #43959 where
260
# a merge done in a checkout (using the update command) failed to
262
self.run_bzr('init', 'trunk')
264
self.run_bzr('checkout', 'trunk', 'u1')
265
self.build_tree_contents([('u1/hosts', 'initial contents')])
266
self.run_bzr('add', 'u1/hosts')
267
self.run_bzr('commit', '-m', 'add hosts', 'u1')
269
self.run_bzr('checkout', 'trunk', 'u2')
270
self.build_tree_contents([('u2/hosts', 'altered in u2')])
271
self.run_bzr('commit', '-m', 'checkin from u2', 'u2')
273
# make an offline commits
274
self.build_tree_contents([('u1/hosts', 'first offline change in u1')])
275
self.run_bzr('commit', '-m', 'checkin offline', '--local', 'u1')
277
# now try to pull in online work from u2, and then commit our offline
279
# retcode 1 as we expect a text conflict
280
self.run_bzr('update', 'u1', retcode=1)
281
self.run_bzr('resolved', 'u1/hosts')
282
# add a text change here to represent resolving the merge conflicts in
283
# favour of a new version of the file not identical to either the u1
284
# version or the u2 version.
285
self.build_tree_contents([('u1/hosts', 'merge resolution\n')])
286
self.run_bzr('commit', '-m', 'checkin merge of the offline work from u1', 'u1')