56
56
def test_merge_directive(self):
57
57
self.prepare_merge_directive()
58
md_text = self.run_bzr('merge-directive', '../tree2')[0]
58
md_text = self.run_bzr('merge-directive ../tree2')[0]
59
59
self.assertContainsRe(md_text, "\\+e")
60
md_text = self.run_bzr('merge-directive', '-r', '-2', '../tree2')[0]
60
md_text = self.run_bzr('merge-directive -r -2 ../tree2')[0]
61
61
self.assertNotContainsRe(md_text, "\\+e")
62
md_text = self.run_bzr('merge-directive', '-r',
63
'-1..-2', '../tree2')[0]
62
md_text = self.run_bzr('merge-directive -r -1..-2 ../tree2')[0]
64
63
md2 = merge_directive.MergeDirective.from_lines(
65
64
md_text.splitlines(True))
66
65
self.assertEqual('foo-id', md2.revision_id)
69
68
def test_submit_branch(self):
70
69
self.prepare_merge_directive()
71
70
self.run_bzr_error(('No submit branch',), 'merge-directive', retcode=3)
72
self.run_bzr('merge-directive', '../tree2')
71
self.run_bzr('merge-directive ../tree2')
74
73
def test_public_branch(self):
75
74
self.prepare_merge_directive()
76
self.run_bzr_error(('No public branch',), 'merge-directive', '--diff',
77
'../tree2', retcode=3)
78
md_text = self.run_bzr('merge-directive', '../tree2')[0]
75
self.run_bzr_error(('No public branch',),
76
'merge-directive --diff ../tree2', retcode=3)
77
md_text = self.run_bzr('merge-directive ../tree2')[0]
79
78
self.assertNotContainsRe(md_text, 'source_branch:')
80
self.run_bzr('merge-directive', '--diff', '../tree2', '.')
81
self.run_bzr('merge-directive', '--diff')[0]
79
self.run_bzr('merge-directive --diff ../tree2 .')
80
self.run_bzr('merge-directive --diff')[0]
82
81
self.assertNotContainsRe(md_text, 'source_branch:')
84
83
def test_patch_types(self):
85
84
self.prepare_merge_directive()
86
md_text = self.run_bzr('merge-directive', '../tree2')[0]
85
md_text = self.run_bzr('merge-directive ../tree2')[0]
87
86
self.assertContainsRe(md_text, "# Begin bundle")
88
87
self.assertContainsRe(md_text, "\\+e")
89
md_text = self.run_bzr('merge-directive', '../tree2', '--diff', '.')[0]
88
md_text = self.run_bzr('merge-directive ../tree2 --diff .')[0]
90
89
self.assertNotContainsRe(md_text, "# Begin bundle")
91
90
self.assertContainsRe(md_text, "\\+e")
92
md_text = self.run_bzr('merge-directive', '--plain')[0]
91
md_text = self.run_bzr('merge-directive --plain')[0]
93
92
self.assertNotContainsRe(md_text, "\\+e")
95
94
def test_message(self):
96
95
self.prepare_merge_directive()
97
md_text = self.run_bzr('merge-directive', '../tree2')[0]
96
md_text = self.run_bzr('merge-directive ../tree2')[0]
98
97
self.assertNotContainsRe(md_text, 'message: Message for merge')
99
md_text = self.run_bzr('merge-directive', '-m', 'Message for merge')[0]
100
self.assertContainsRe(md_text, 'message: Message for merge')
98
md_text = self.run_bzr('merge-directive -m Message_for_merge')[0]
99
self.assertContainsRe(md_text, 'message: Message_for_merge')
102
101
def test_signing(self):
103
102
self.prepare_merge_directive()
104
103
old_strategy = gpg.GPGStrategy
105
104
gpg.GPGStrategy = gpg.LoopbackGPGStrategy
107
md_text = self.run_bzr('merge-directive', '--sign', '../tree2')[0]
106
md_text = self.run_bzr('merge-directive --sign ../tree2')[0]
109
108
gpg.GPGStrategy = old_strategy
110
109
self.assertContainsRe(md_text, '^-----BEGIN PSEUDO-SIGNED CONTENT')
135
134
def test_mail_default(self):
136
135
tree1, tree2 = self.prepare_merge_directive()
137
136
md_text, errr, connect_calls, sendmail_calls =\
138
self.run_bzr_fakemail('merge-directive', '--mail-to',
139
'pqm@example.com', '--plain', '../tree2',
137
self.run_bzr_fakemail(['merge-directive', '--mail-to',
138
'pqm@example.com', '--plain', '../tree2',
141
140
self.assertEqual('', md_text)
142
141
self.assertEqual(1, len(connect_calls))
143
142
call = connect_calls[0]
151
150
def test_pull_raw(self):
152
151
self.prepare_merge_directive()
153
152
self.tree1.commit('baz', rev_id='baz-id')
154
md_text = self.run_bzr('merge-directive', self.tree2.basedir,
155
'-r', '2', self.tree1.basedir, '--plain')[0]
153
md_text = self.run_bzr(['merge-directive', self.tree2.basedir,
154
'-r', '2', self.tree1.basedir, '--plain'])[0]
156
155
self.build_tree_contents([('../directive', md_text)])
157
156
os.chdir('../tree2')
158
self.run_bzr('pull', '../directive')
157
self.run_bzr('pull ../directive')
159
158
wt = workingtree.WorkingTree.open('.')
160
159
self.assertEqual('bar-id', wt.last_revision())
163
162
"""If the user supplies -r, an error is emitted"""
164
163
self.prepare_merge_directive()
165
164
self.tree1.commit('baz', rev_id='baz-id')
166
md_text = self.run_bzr('merge-directive', self.tree2.basedir,
167
self.tree1.basedir, '--plain')[0]
165
md_text = self.run_bzr(['merge-directive', self.tree2.basedir,
166
self.tree1.basedir, '--plain'])[0]
168
167
self.build_tree_contents([('../directive', md_text)])
169
168
os.chdir('../tree2')
170
169
self.run_bzr_error(
171
170
('Cannot use -r with merge directives or bundles',),
172
'pull', '-r', '2', '../directive')
171
'pull -r 2 ../directive')
174
173
def test_pull_bundle(self):
175
174
self.prepare_merge_directive()
176
175
self.tree1.commit('baz', rev_id='baz-id')
177
md_text = self.run_bzr('merge-directive', self.tree2.basedir,
178
'-r', '2', '/dev/null', '--bundle')[0]
176
md_text = self.run_bzr(['merge-directive', self.tree2.basedir,
177
'-r', '2', '/dev/null', '--bundle'])[0]
179
178
self.build_tree_contents([('../directive', md_text)])
180
179
os.chdir('../tree2')
181
self.run_bzr('pull', '../directive')
180
self.run_bzr('pull ../directive')
182
181
wt = workingtree.WorkingTree.open('.')
183
182
self.assertEqual('bar-id', wt.last_revision())
185
184
def test_merge_raw(self):
186
185
self.prepare_merge_directive()
187
186
self.tree1.commit('baz', rev_id='baz-id')
188
md_text = self.run_bzr('merge-directive', self.tree2.basedir,
189
'-r', '2', self.tree1.basedir, '--plain')[0]
187
md_text = self.run_bzr(['merge-directive', self.tree2.basedir,
188
'-r', '2', self.tree1.basedir, '--plain'])[0]
190
189
self.build_tree_contents([('../directive', md_text)])
191
190
os.chdir('../tree2')
192
self.run_bzr('merge', '../directive')
191
self.run_bzr('merge ../directive')
193
192
wt = workingtree.WorkingTree.open('.')
194
193
self.assertEqual('bar-id', wt.get_parent_ids()[1])
197
196
"""If the user supplies -r, an error is emitted"""
198
197
self.prepare_merge_directive()
199
198
self.tree1.commit('baz', rev_id='baz-id')
200
md_text = self.run_bzr('merge-directive', self.tree2.basedir,
201
self.tree1.basedir, '--plain')[0]
199
md_text = self.run_bzr(['merge-directive', self.tree2.basedir,
200
self.tree1.basedir, '--plain'])[0]
202
201
self.build_tree_contents([('../directive', md_text)])
203
202
os.chdir('../tree2')
204
203
self.run_bzr_error(
205
204
('Cannot use -r with merge directives or bundles',),
206
'merge', '-r', '2', '../directive')
205
'merge -r 2 ../directive')
208
207
def test_merge_bundle(self):
209
208
self.prepare_merge_directive()
210
209
self.tree1.commit('baz', rev_id='baz-id')
211
md_text = self.run_bzr('merge-directive', self.tree2.basedir,
212
'-r', '2', '/dev/null', '--bundle')[0]
210
md_text = self.run_bzr(['merge-directive', self.tree2.basedir,
211
'-r', '2', '/dev/null', '--bundle'])[0]
213
212
self.build_tree_contents([('../directive', md_text)])
214
213
os.chdir('../tree2')
215
self.run_bzr('merge', '../directive')
214
self.run_bzr('merge ../directive')
216
215
wt = workingtree.WorkingTree.open('.')
217
216
self.assertEqual('bar-id', wt.get_parent_ids()[1])
220
219
tree1, tree2 = self.prepare_merge_directive()
221
220
tree1.branch.get_config().set_user_option('smtp_server', 'bogushost')
222
221
md_text, errr, connect_calls, sendmail_calls =\
223
self.run_bzr_fakemail('merge-directive', '--mail-to',
224
'pqm@example.com', '--plain', '../tree2',
222
self.run_bzr_fakemail('merge-directive --mail-to'
223
' pqm@example.com --plain ../tree2 .')
226
224
call = connect_calls[0]
227
225
self.assertEqual(('bogushost', 0), call[1:3])
231
229
foo.commit('rev1')
232
230
bar = self.make_branch_and_tree('bar')
234
self.run_bzr('merge-directive', '../bar')
232
self.run_bzr('merge-directive ../bar')
236
234
def test_no_commits(self):
237
235
foo = self.make_branch_and_tree('foo')
238
236
bar = self.make_branch_and_tree('bar')
240
238
self.run_bzr_error(('No revisions to bundle.', ),
241
'merge-directive', '../bar')
239
'merge-directive ../bar')
243
241
def test_encoding_exact(self):
244
242
tree1, tree2 = self.prepare_merge_directive()
245
243
tree1.commit(u'messag\xe9')
246
self.run_bzr('merge-directive', '../tree2') # no exception raised
244
self.run_bzr('merge-directive ../tree2') # no exception raised