1
# Copyright (C) 2007, 2009-2012 Canonical Ltd
1
# Copyright (C) 2007 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
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
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
44
44
def prepare_merge_directive(self):
45
45
self.tree1 = self.make_branch_and_tree('tree1')
46
46
self.build_tree_contents([('tree1/file', 'a\nb\nc\nd\n')])
47
self.tree1.branch.get_config_stack().set(
48
'email', 'J. Random Hacker <jrandom@example.com>')
47
self.tree1.branch.get_config().set_user_option('email',
48
'J. Random Hacker <jrandom@example.com>')
49
49
self.tree1.add('file')
50
50
self.tree1.commit('foo', rev_id='foo-id')
51
51
self.tree2 = self.tree1.bzrdir.sprout('tree2').open_workingtree()
224
224
def test_mail_uses_config(self):
225
225
tree1, tree2 = self.prepare_merge_directive()
227
br.get_config_stack().set('smtp_server', 'bogushost')
226
tree1.branch.get_config().set_user_option('smtp_server', 'bogushost')
228
227
md_text, errr, connect_calls, sendmail_calls =\
229
228
self.run_bzr_fakemail('merge-directive --mail-to'
230
229
' pqm@example.com --plain ../tree2 .')
235
234
foo = self.make_branch_and_tree('foo')
236
235
foo.commit('rev1')
237
236
bar = self.make_branch_and_tree('bar')
238
self.run_bzr('merge-directive ../bar', working_dir='foo')
238
self.run_bzr('merge-directive ../bar')
240
240
def test_no_commits(self):
241
241
foo = self.make_branch_and_tree('foo')
242
242
bar = self.make_branch_and_tree('bar')
243
244
self.run_bzr_error(('No revisions to bundle.', ),
244
'merge-directive ../bar', working_dir='foo')
245
'merge-directive ../bar')
246
247
def test_encoding_exact(self):
247
248
tree1, tree2 = self.prepare_merge_directive()
248
249
tree1.commit(u'messag\xe9')
249
250
self.run_bzr('merge-directive ../tree2') # no exception raised
251
def test_merge_directive_directory(self):
252
"""Test --directory option"""
254
re_timestamp = re.compile(r'^# timestamp: .*', re.M)
255
self.prepare_merge_directive()
256
md1 = self.run_bzr('merge-directive ../tree2')[0]
257
md1 = re_timestamp.sub('# timestamp: XXX', md1)
259
md2 = self.run_bzr('merge-directive --directory tree1 tree2')[0]
260
md2 = re_timestamp.sub('# timestamp: XXX', md2)
261
self.assertEqualDiff(md1.replace('../tree2', 'tree2'), md2)