/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_too_much.py

  • Committer: Robert Collins
  • Date: 2008-08-20 02:07:36 UTC
  • mfrom: (3640 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3682.
  • Revision ID: robertc@robertcollins.net-20080820020736-g2xe4921zzxtymle
Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005 by Canonical Ltd
2
 
# -*- coding: utf-8 -*-
3
 
 
 
1
# Copyright (C) 2005, 2007 Canonical Ltd
 
2
#
4
3
# This program is free software; you can redistribute it and/or modify
5
4
# it under the terms of the GNU General Public License as published by
6
5
# the Free Software Foundation; either version 2 of the License, or
7
6
# (at your option) any later version.
8
 
 
 
7
#
9
8
# This program is distributed in the hope that it will be useful,
10
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
11
# GNU General Public License for more details.
13
 
 
 
12
#
14
13
# You should have received a copy of the GNU General Public License
15
14
# along with this program; if not, write to the Free Software
16
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
40
39
import sys
41
40
 
42
41
import bzrlib
 
42
from bzrlib import (
 
43
    osutils,
 
44
    )
43
45
from bzrlib.branch import Branch
44
 
import bzrlib.bzrdir as bzrdir
45
46
from bzrlib.errors import BzrCommandError
46
47
from bzrlib.osutils import (
47
48
    has_symlinks,
48
49
    pathjoin,
49
 
    rmtree,
50
50
    terminal_width,
51
51
    )
52
 
from bzrlib.tests.HTTPTestUtil import TestCaseWithWebserver
 
52
from bzrlib.tests.http_utils import TestCaseWithWebserver
53
53
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
54
54
from bzrlib.tests.blackbox import ExternalBase
55
55
from bzrlib.workingtree import WorkingTree
57
57
 
58
58
class TestCommands(ExternalBase):
59
59
 
60
 
    def test_whoami(self):
61
 
        # this should always identify something, if only "john@localhost"
62
 
        self.runbzr("whoami")
63
 
        self.runbzr("whoami --email")
64
 
 
65
 
        self.assertEquals(self.runbzr("whoami --email",
66
 
                                      backtick=True).count('@'), 1)
67
 
        
68
 
    def test_whoami_branch(self):
69
 
        """branch specific user identity works."""
70
 
        self.runbzr('init')
71
 
        b = bzrlib.branch.Branch.open('.')
72
 
        b.control_files.put_utf8('email', 'Branch Identity <branch@identi.ty>')
73
 
        bzr_email = os.environ.get('BZREMAIL')
74
 
        if bzr_email is not None:
75
 
            del os.environ['BZREMAIL']
76
 
        whoami = self.runbzr("whoami",backtick=True)
77
 
        whoami_email = self.runbzr("whoami --email",backtick=True)
78
 
        self.assertTrue(whoami.startswith('Branch Identity <branch@identi.ty>'))
79
 
        self.assertTrue(whoami_email.startswith('branch@identi.ty'))
80
 
        # Verify that the environment variable overrides the value 
81
 
        # in the file
82
 
        os.environ['BZREMAIL'] = 'Different ID <other@environ.ment>'
83
 
        whoami = self.runbzr("whoami",backtick=True)
84
 
        whoami_email = self.runbzr("whoami --email",backtick=True)
85
 
        self.assertTrue(whoami.startswith('Different ID <other@environ.ment>'))
86
 
        self.assertTrue(whoami_email.startswith('other@environ.ment'))
87
 
        if bzr_email is not None:
88
 
            os.environ['BZREMAIL'] = bzr_email
89
 
 
90
 
    def test_nick_command(self):
91
 
        """bzr nick for viewing, setting nicknames"""
92
 
        os.mkdir('me.dev')
93
 
        os.chdir('me.dev')
94
 
        self.runbzr('init')
95
 
        nick = self.runbzr("nick",backtick=True)
96
 
        self.assertEqual(nick, 'me.dev\n')
97
 
        nick = self.runbzr("nick moo")
98
 
        nick = self.runbzr("nick",backtick=True)
99
 
        self.assertEqual(nick, 'moo\n')
100
 
 
101
60
    def test_invalid_commands(self):
102
 
        self.runbzr("pants", retcode=3)
103
 
        self.runbzr("--pants off", retcode=3)
104
 
        self.runbzr("diff --message foo", retcode=3)
105
 
 
106
 
    def test_ignore_patterns(self):
107
 
        self.runbzr('init')
108
 
        self.assertEquals(self.capture('unknowns'), '')
109
 
 
110
 
        file('foo.tmp', 'wt').write('tmp files are ignored')
111
 
        self.assertEquals(self.capture('unknowns'), '')
112
 
 
113
 
        file('foo.c', 'wt').write('int main() {}')
114
 
        self.assertEquals(self.capture('unknowns'), 'foo.c\n')
115
 
 
116
 
        self.runbzr(['add', 'foo.c'])
117
 
        self.assertEquals(self.capture('unknowns'), '')
118
 
 
119
 
        # 'ignore' works when creating the .bzignore file
120
 
        file('foo.blah', 'wt').write('blah')
121
 
        self.assertEquals(self.capture('unknowns'), 'foo.blah\n')
122
 
        self.runbzr('ignore *.blah')
123
 
        self.assertEquals(self.capture('unknowns'), '')
124
 
        self.assertEquals(file('.bzrignore', 'rU').read(), '*.blah\n')
125
 
 
126
 
        # 'ignore' works when then .bzrignore file already exists
127
 
        file('garh', 'wt').write('garh')
128
 
        self.assertEquals(self.capture('unknowns'), 'garh\n')
129
 
        self.runbzr('ignore garh')
130
 
        self.assertEquals(self.capture('unknowns'), '')
131
 
        self.assertEquals(file('.bzrignore', 'rU').read(), '*.blah\ngarh\n')
 
61
        self.run_bzr("pants", retcode=3)
 
62
        self.run_bzr("--pants off", retcode=3)
 
63
        self.run_bzr("diff --message foo", retcode=3)
132
64
 
133
65
    def test_revert(self):
134
 
        self.runbzr('init')
 
66
        self.run_bzr('init')
135
67
 
136
68
        file('hello', 'wt').write('foo')
137
 
        self.runbzr('add hello')
138
 
        self.runbzr('commit -m setup hello')
 
69
        self.run_bzr('add hello')
 
70
        self.run_bzr('commit -m setup hello')
139
71
 
140
72
        file('goodbye', 'wt').write('baz')
141
 
        self.runbzr('add goodbye')
142
 
        self.runbzr('commit -m setup goodbye')
 
73
        self.run_bzr('add goodbye')
 
74
        self.run_bzr('commit -m setup goodbye')
143
75
 
144
76
        file('hello', 'wt').write('bar')
145
77
        file('goodbye', 'wt').write('qux')
146
 
        self.runbzr('revert hello')
 
78
        self.run_bzr('revert hello')
147
79
        self.check_file_contents('hello', 'foo')
148
80
        self.check_file_contents('goodbye', 'qux')
149
 
        self.runbzr('revert')
 
81
        self.run_bzr('revert')
150
82
        self.check_file_contents('goodbye', 'baz')
151
83
 
152
84
        os.mkdir('revertdir')
153
 
        self.runbzr('add revertdir')
154
 
        self.runbzr('commit -m f')
 
85
        self.run_bzr('add revertdir')
 
86
        self.run_bzr('commit -m f')
155
87
        os.rmdir('revertdir')
156
 
        self.runbzr('revert')
 
88
        self.run_bzr('revert')
157
89
 
158
90
        if has_symlinks():
159
91
            os.symlink('/unlikely/to/exist', 'symlink')
160
 
            self.runbzr('add symlink')
161
 
            self.runbzr('commit -m f')
 
92
            self.run_bzr('add symlink')
 
93
            self.run_bzr('commit -m f')
162
94
            os.unlink('symlink')
163
 
            self.runbzr('revert')
 
95
            self.run_bzr('revert')
164
96
            self.failUnlessExists('symlink')
165
97
            os.unlink('symlink')
166
98
            os.symlink('a-different-path', 'symlink')
167
 
            self.runbzr('revert')
 
99
            self.run_bzr('revert')
168
100
            self.assertEqual('/unlikely/to/exist',
169
101
                             os.readlink('symlink'))
170
102
        else:
171
103
            self.log("skipping revert symlink tests")
172
104
        
173
105
        file('hello', 'wt').write('xyz')
174
 
        self.runbzr('commit -m xyz hello')
175
 
        self.runbzr('revert -r 1 hello')
 
106
        self.run_bzr('commit -m xyz hello')
 
107
        self.run_bzr('revert -r 1 hello')
176
108
        self.check_file_contents('hello', 'foo')
177
 
        self.runbzr('revert hello')
 
109
        self.run_bzr('revert hello')
178
110
        self.check_file_contents('hello', 'xyz')
179
111
        os.chdir('revertdir')
180
 
        self.runbzr('revert')
 
112
        self.run_bzr('revert')
181
113
        os.chdir('..')
182
114
 
183
 
    def test_mv_modes(self):
184
 
        """Test two modes of operation for mv"""
185
 
        self.runbzr('init')
186
 
        self.build_tree(['a', 'c', 'subdir/'])
187
 
        self.run_bzr_captured(['add', self.test_dir])
188
 
        self.run_bzr_captured(['mv', 'a', 'b'])
189
 
        self.run_bzr_captured(['mv', 'b', 'subdir'])
190
 
        self.run_bzr_captured(['mv', 'subdir/b', 'a'])
191
 
        self.run_bzr_captured(['mv', 'a', 'c', 'subdir'])
192
 
        self.run_bzr_captured(['mv', 'subdir/a', 'subdir/newa'])
193
 
 
194
115
    def test_main_version(self):
195
116
        """Check output from version command and master option is reasonable"""
196
117
        # output is intentionally passed through to stdout so that we
197
118
        # can see the version being tested
198
 
        output = self.runbzr('version', backtick=1)
 
119
        output = self.run_bzr('version')[0]
199
120
        self.log('bzr version output:')
200
121
        self.log(output)
201
 
        self.assert_(output.startswith('bzr (bazaar-ng) '))
 
122
        self.assert_(output.startswith('Bazaar (bzr) '))
202
123
        self.assertNotEqual(output.index('Canonical'), -1)
203
124
        # make sure --version is consistent
204
 
        tmp_output = self.runbzr('--version', backtick=1)
205
 
        self.log('bzr --version output:')
206
 
        self.log(tmp_output)
 
125
        tmp_output = self.run_bzr('--version')[0]
207
126
        self.assertEquals(output, tmp_output)
208
127
 
209
128
    def example_branch(test):
210
 
        test.runbzr('init')
 
129
        test.run_bzr('init')
211
130
        file('hello', 'wt').write('foo')
212
 
        test.runbzr('add hello')
213
 
        test.runbzr('commit -m setup hello')
 
131
        test.run_bzr('add hello')
 
132
        test.run_bzr('commit -m setup hello')
214
133
        file('goodbye', 'wt').write('baz')
215
 
        test.runbzr('add goodbye')
216
 
        test.runbzr('commit -m setup goodbye')
217
 
 
218
 
    def test_export(self):
219
 
        os.mkdir('branch')
220
 
        os.chdir('branch')
221
 
        self.example_branch()
222
 
        self.runbzr('export ../latest')
223
 
        self.assertEqual(file('../latest/goodbye', 'rt').read(), 'baz')
224
 
        self.runbzr('export ../first -r 1')
225
 
        self.assert_(not os.path.exists('../first/goodbye'))
226
 
        self.assertEqual(file('../first/hello', 'rt').read(), 'foo')
227
 
        self.runbzr('export ../first.gz -r 1')
228
 
        self.assertEqual(file('../first.gz/hello', 'rt').read(), 'foo')
229
 
        self.runbzr('export ../first.bz2 -r 1')
230
 
        self.assertEqual(file('../first.bz2/hello', 'rt').read(), 'foo')
231
 
 
232
 
        from tarfile import TarFile
233
 
        self.runbzr('export ../first.tar -r 1')
234
 
        self.assert_(os.path.isfile('../first.tar'))
235
 
        tf = TarFile('../first.tar')
236
 
        self.assert_('first/hello' in tf.getnames(), tf.getnames())
237
 
        self.assertEqual(tf.extractfile('first/hello').read(), 'foo')
238
 
        self.runbzr('export ../first.tar.gz -r 1')
239
 
        self.assert_(os.path.isfile('../first.tar.gz'))
240
 
        self.runbzr('export ../first.tbz2 -r 1')
241
 
        self.assert_(os.path.isfile('../first.tbz2'))
242
 
        self.runbzr('export ../first.tar.bz2 -r 1')
243
 
        self.assert_(os.path.isfile('../first.tar.bz2'))
244
 
        self.runbzr('export ../first.tar.tbz2 -r 1')
245
 
        self.assert_(os.path.isfile('../first.tar.tbz2'))
246
 
 
247
 
        from bz2 import BZ2File
248
 
        tf = TarFile('../first.tar.tbz2', 
249
 
                     fileobj=BZ2File('../first.tar.tbz2', 'r'))
250
 
        self.assert_('first.tar/hello' in tf.getnames(), tf.getnames())
251
 
        self.assertEqual(tf.extractfile('first.tar/hello').read(), 'foo')
252
 
        self.runbzr('export ../first2.tar -r 1 --root pizza')
253
 
        tf = TarFile('../first2.tar')
254
 
        self.assert_('pizza/hello' in tf.getnames(), tf.getnames())
255
 
 
256
 
        from zipfile import ZipFile
257
 
        self.runbzr('export ../first.zip -r 1')
258
 
        self.failUnlessExists('../first.zip')
259
 
        zf = ZipFile('../first.zip')
260
 
        self.assert_('first/hello' in zf.namelist(), zf.namelist())
261
 
        self.assertEqual(zf.read('first/hello'), 'foo')
262
 
 
263
 
        self.runbzr('export ../first2.zip -r 1 --root pizza')
264
 
        zf = ZipFile('../first2.zip')
265
 
        self.assert_('pizza/hello' in zf.namelist(), zf.namelist())
266
 
        
267
 
        self.runbzr('export ../first-zip --format=zip -r 1')
268
 
        zf = ZipFile('../first-zip')
269
 
        self.assert_('first-zip/hello' in zf.namelist(), zf.namelist())
270
 
 
271
 
    def test_inventory(self):
272
 
        bzr = self.runbzr
273
 
        def output_equals(value, *args):
274
 
            out = self.runbzr(['inventory'] + list(args), backtick=True)
275
 
            self.assertEquals(out, value)
276
 
 
277
 
        bzr('init')
278
 
        open('a', 'wb').write('hello\n')
279
 
        os.mkdir('b')
280
 
 
281
 
        bzr('add a b')
282
 
        bzr('commit -m add')
283
 
 
284
 
        output_equals('a\n', '--kind', 'file')
285
 
        output_equals('b\n', '--kind', 'directory')        
286
 
 
287
 
    def test_ls(self):
288
 
        """Test the abilities of 'bzr ls'"""
289
 
        bzr = self.runbzr
290
 
        def bzrout(*args, **kwargs):
291
 
            kwargs['backtick'] = True
292
 
            return self.runbzr(*args, **kwargs)
293
 
 
294
 
        def ls_equals(value, *args):
295
 
            out = self.runbzr(['ls'] + list(args), backtick=True)
296
 
            self.assertEquals(out, value)
297
 
 
298
 
        bzr('init')
299
 
        open('a', 'wb').write('hello\n')
300
 
 
301
 
        # Can't supply both
302
 
        bzr('ls --verbose --null', retcode=3)
303
 
 
304
 
        ls_equals('a\n')
305
 
        ls_equals('?        a\n', '--verbose')
306
 
        ls_equals('a\n', '--unknown')
307
 
        ls_equals('', '--ignored')
308
 
        ls_equals('', '--versioned')
309
 
        ls_equals('a\n', '--unknown', '--ignored', '--versioned')
310
 
        ls_equals('', '--ignored', '--versioned')
311
 
        ls_equals('a\0', '--null')
312
 
 
313
 
        bzr('add a')
314
 
        ls_equals('V        a\n', '--verbose')
315
 
        bzr('commit -m add')
316
 
        
317
 
        os.mkdir('subdir')
318
 
        ls_equals('V        a\n'
319
 
                  '?        subdir/\n'
320
 
                  , '--verbose')
321
 
        open('subdir/b', 'wb').write('b\n')
322
 
        bzr('add')
323
 
        ls_equals('V        a\n'
324
 
                  'V        subdir/\n'
325
 
                  'V        subdir/b\n'
326
 
                  , '--verbose')
327
 
        bzr('commit -m subdir')
328
 
 
329
 
        ls_equals('a\n'
330
 
                  'subdir\n'
331
 
                  , '--non-recursive')
332
 
 
333
 
        ls_equals('V        a\n'
334
 
                  'V        subdir/\n'
335
 
                  , '--verbose', '--non-recursive')
336
 
 
337
 
        # Check what happens in a sub-directory
338
 
        os.chdir('subdir')
339
 
        ls_equals('b\n')
340
 
        ls_equals('b\0'
341
 
                  , '--null')
342
 
        ls_equals('a\n'
343
 
                  'subdir\n'
344
 
                  'subdir/b\n'
345
 
                  , '--from-root')
346
 
        ls_equals('a\0'
347
 
                  'subdir\0'
348
 
                  'subdir/b\0'
349
 
                  , '--from-root', '--null')
350
 
        ls_equals('a\n'
351
 
                  'subdir\n'
352
 
                  , '--from-root', '--non-recursive')
353
 
 
354
 
        os.chdir('..')
355
 
 
356
 
        # Check what happens when we supply a specific revision
357
 
        ls_equals('a\n', '--revision', '1')
358
 
        ls_equals('V        a\n'
359
 
                  , '--verbose', '--revision', '1')
360
 
 
361
 
        os.chdir('subdir')
362
 
        ls_equals('', '--revision', '1')
363
 
 
364
 
        # Now try to do ignored files.
365
 
        os.chdir('..')
366
 
        open('blah.py', 'wb').write('unknown\n')
367
 
        open('blah.pyo', 'wb').write('ignored\n')
368
 
        ls_equals('a\n'
369
 
                  'blah.py\n'
370
 
                  'blah.pyo\n'
371
 
                  'subdir\n'
372
 
                  'subdir/b\n')
373
 
        ls_equals('V        a\n'
374
 
                  '?        blah.py\n'
375
 
                  'I        blah.pyo\n'
376
 
                  'V        subdir/\n'
377
 
                  'V        subdir/b\n'
378
 
                  , '--verbose')
379
 
        ls_equals('blah.pyo\n'
380
 
                  , '--ignored')
381
 
        ls_equals('blah.py\n'
382
 
                  , '--unknown')
383
 
        ls_equals('a\n'
384
 
                  'subdir\n'
385
 
                  'subdir/b\n'
386
 
                  , '--versioned')
387
 
 
388
 
    def test_cat(self):
389
 
        self.runbzr('init')
390
 
        file("myfile", "wb").write("My contents\n")
391
 
        self.runbzr('add')
392
 
        self.runbzr('commit -m myfile')
393
 
        self.run_bzr_captured('cat -r 1 myfile'.split(' '))
 
134
        test.run_bzr('add goodbye')
 
135
        test.run_bzr('commit -m setup goodbye')
394
136
 
395
137
    def test_pull_verbose(self):
396
138
        """Pull changes from one branch to another and watch the output."""
398
140
        os.mkdir('a')
399
141
        os.chdir('a')
400
142
 
401
 
        bzr = self.runbzr
402
143
        self.example_branch()
403
144
 
404
145
        os.chdir('..')
405
 
        bzr('branch a b')
 
146
        self.run_bzr('branch a b')
406
147
        os.chdir('b')
407
148
        open('b', 'wb').write('else\n')
408
 
        bzr('add b')
409
 
        bzr(['commit', '-m', 'added b'])
 
149
        self.run_bzr('add b')
 
150
        self.run_bzr(['commit', '-m', 'added b'])
410
151
 
411
152
        os.chdir('../a')
412
 
        out = bzr('pull --verbose ../b', backtick=True)
 
153
        out = self.run_bzr('pull --verbose ../b')[0]
413
154
        self.failIfEqual(out.find('Added Revisions:'), -1)
414
155
        self.failIfEqual(out.find('message:\n  added b'), -1)
415
156
        self.failIfEqual(out.find('added b'), -1)
416
157
 
417
158
        # Check that --overwrite --verbose prints out the removed entries
418
 
        bzr('commit -m foo --unchanged')
 
159
        self.run_bzr('commit -m foo --unchanged')
419
160
        os.chdir('../b')
420
 
        bzr('commit -m baz --unchanged')
421
 
        bzr('pull ../a', retcode=3)
422
 
        out = bzr('pull --overwrite --verbose ../a', backtick=1)
 
161
        self.run_bzr('commit -m baz --unchanged')
 
162
        self.run_bzr('pull ../a', retcode=3)
 
163
        out = self.run_bzr('pull --overwrite --verbose ../a')[0]
423
164
 
424
165
        remove_loc = out.find('Removed Revisions:')
425
166
        self.failIfEqual(remove_loc, -1)
438
179
        """Using and remembering different locations"""
439
180
        os.mkdir('a')
440
181
        os.chdir('a')
441
 
        self.runbzr('init')
442
 
        self.runbzr('commit -m unchanged --unchanged')
443
 
        self.runbzr('pull', retcode=3)
444
 
        self.runbzr('merge', retcode=3)
445
 
        self.runbzr('branch . ../b')
 
182
        self.run_bzr('init')
 
183
        self.run_bzr('commit -m unchanged --unchanged')
 
184
        self.run_bzr('pull', retcode=3)
 
185
        self.run_bzr('merge', retcode=3)
 
186
        self.run_bzr('branch . ../b')
446
187
        os.chdir('../b')
447
 
        self.runbzr('pull')
448
 
        self.runbzr('branch . ../c')
449
 
        self.runbzr('pull ../c')
450
 
        self.runbzr('merge')
 
188
        self.run_bzr('pull')
 
189
        self.run_bzr('branch . ../c')
 
190
        self.run_bzr('pull ../c')
 
191
        self.run_bzr('merge')
451
192
        os.chdir('../a')
452
 
        self.runbzr('pull ../b')
453
 
        self.runbzr('pull')
454
 
        self.runbzr('pull ../c')
455
 
        self.runbzr('branch ../c ../d')
456
 
        rmtree('../c')
457
 
        self.runbzr('pull')
 
193
        self.run_bzr('pull ../b')
 
194
        self.run_bzr('pull')
 
195
        self.run_bzr('pull ../c')
 
196
        self.run_bzr('branch ../c ../d')
 
197
        osutils.rmtree('../c')
 
198
        self.run_bzr('pull')
458
199
        os.chdir('../b')
459
 
        self.runbzr('pull')
 
200
        self.run_bzr('pull')
460
201
        os.chdir('../d')
461
 
        self.runbzr('pull', retcode=3)
462
 
        self.runbzr('pull ../a --remember')
463
 
        self.runbzr('pull')
 
202
        self.run_bzr('pull', retcode=3)
 
203
        self.run_bzr('pull ../a --remember')
 
204
        self.run_bzr('pull')
464
205
        
465
206
    def test_unknown_command(self):
466
207
        """Handling of unknown command."""
467
 
        out, err = self.run_bzr_captured(['fluffy-badger'],
468
 
                                         retcode=3)
 
208
        out, err = self.run_bzr('fluffy-badger', retcode=3)
469
209
        self.assertEquals(out, '')
470
210
        err.index('unknown command')
471
211
 
475
215
        os.chdir('base')
476
216
        file('hello', 'wb').write("hi world")
477
217
        file('answer', 'wb').write("42")
478
 
        self.runbzr('init')
479
 
        self.runbzr('add')
480
 
        self.runbzr('commit -m base')
481
 
        self.runbzr('branch . ../other')
482
 
        self.runbzr('branch . ../this')
 
218
        self.run_bzr('init')
 
219
        self.run_bzr('add')
 
220
        self.run_bzr('commit -m base')
 
221
        self.run_bzr('branch . ../other')
 
222
        self.run_bzr('branch . ../this')
483
223
        os.chdir('../other')
484
224
        file('hello', 'wb').write("Hello.")
485
225
        file('answer', 'wb').write("Is anyone there?")
486
 
        self.runbzr('commit -m other')
 
226
        self.run_bzr('commit -m other')
487
227
        os.chdir('../this')
488
228
        file('hello', 'wb').write("Hello, world")
489
 
        self.runbzr('mv answer question')
 
229
        self.run_bzr('mv answer question')
490
230
        file('question', 'wb').write("What do you get when you multiply six"
491
231
                                   "times nine?")
492
 
        self.runbzr('commit -m this')
493
 
 
494
 
    def test_remerge(self):
495
 
        """Remerge command works as expected"""
496
 
        self.create_conflicts()
497
 
        self.runbzr('merge ../other --show-base', retcode=1)
498
 
        conflict_text = file('hello').read()
499
 
        assert '|||||||' in conflict_text
500
 
        assert 'hi world' in conflict_text
501
 
        self.runbzr('remerge', retcode=1)
502
 
        conflict_text = file('hello').read()
503
 
        assert '|||||||' not in conflict_text
504
 
        assert 'hi world' not in conflict_text
505
 
        os.unlink('hello.OTHER')
506
 
        os.unlink('question.OTHER')
507
 
        self.runbzr('remerge jello --merge-type weave', retcode=3)
508
 
        self.runbzr('remerge hello --merge-type weave', retcode=1)
509
 
        assert os.path.exists('hello.OTHER')
510
 
        self.assertIs(False, os.path.exists('question.OTHER'))
511
 
        file_id = self.runbzr('file-id hello')
512
 
        file_id = self.runbzr('file-id hello.THIS', retcode=3)
513
 
        self.runbzr('remerge --merge-type weave', retcode=1)
514
 
        assert os.path.exists('hello.OTHER')
515
 
        assert not os.path.exists('hello.BASE')
516
 
        assert '|||||||' not in conflict_text
517
 
        assert 'hi world' not in conflict_text
518
 
        self.runbzr('remerge . --merge-type weave --show-base', retcode=3)
519
 
        self.runbzr('remerge . --show-base --reprocess', retcode=3)
520
 
        self.runbzr('remerge . --merge-type weave --reprocess', retcode=1)
521
 
        self.runbzr('remerge hello --show-base', retcode=1)
522
 
        self.runbzr('remerge hello --reprocess', retcode=1)
523
 
        self.runbzr('resolve --all')
524
 
        self.runbzr('commit -m done',)
525
 
        self.runbzr('remerge', retcode=3)
 
232
        self.run_bzr('commit -m this')
526
233
 
527
234
    def test_status(self):
528
235
        os.mkdir('branch1')
529
236
        os.chdir('branch1')
530
 
        self.runbzr('init')
531
 
        self.runbzr('commit --unchanged --message f')
532
 
        self.runbzr('branch . ../branch2')
533
 
        self.runbzr('branch . ../branch3')
534
 
        self.runbzr('commit --unchanged --message peter')
 
237
        self.run_bzr('init')
 
238
        self.run_bzr('commit --unchanged --message f')
 
239
        self.run_bzr('branch . ../branch2')
 
240
        self.run_bzr('branch . ../branch3')
 
241
        self.run_bzr('commit --unchanged --message peter')
535
242
        os.chdir('../branch2')
536
 
        self.runbzr('merge ../branch1')
537
 
        self.runbzr('commit --unchanged --message pumpkin')
 
243
        self.run_bzr('merge ../branch1')
 
244
        self.run_bzr('commit --unchanged --message pumpkin')
538
245
        os.chdir('../branch3')
539
 
        self.runbzr('merge ../branch2')
540
 
        message = self.capture('status')
 
246
        self.run_bzr('merge ../branch2')
 
247
        message = self.run_bzr('status')[0]
541
248
 
542
249
 
543
250
    def test_conflicts(self):
544
251
        """Handling of merge conflicts"""
545
252
        self.create_conflicts()
546
 
        self.runbzr('merge ../other --show-base', retcode=1)
 
253
        self.run_bzr('merge ../other --show-base', retcode=1)
547
254
        conflict_text = file('hello').read()
548
255
        self.assert_('<<<<<<<' in conflict_text)
549
256
        self.assert_('>>>>>>>' in conflict_text)
550
257
        self.assert_('=======' in conflict_text)
551
258
        self.assert_('|||||||' in conflict_text)
552
259
        self.assert_('hi world' in conflict_text)
553
 
        self.runbzr('revert')
554
 
        self.runbzr('resolve --all')
555
 
        self.runbzr('merge ../other', retcode=1)
 
260
        self.run_bzr('revert')
 
261
        self.run_bzr('resolve --all')
 
262
        self.run_bzr('merge ../other', retcode=1)
556
263
        conflict_text = file('hello').read()
557
264
        self.assert_('|||||||' not in conflict_text)
558
265
        self.assert_('hi world' not in conflict_text)
559
 
        result = self.runbzr('conflicts', backtick=1)
 
266
        result = self.run_bzr('conflicts')[0]
560
267
        self.assertEquals(result, "Text conflict in hello\nText conflict in"
561
268
                                  " question\n")
562
 
        result = self.runbzr('status', backtick=1)
 
269
        result = self.run_bzr('status')[0]
563
270
        self.assert_("conflicts:\n  Text conflict in hello\n"
564
271
                     "  Text conflict in question\n" in result, result)
565
 
        self.runbzr('resolve hello')
566
 
        result = self.runbzr('conflicts', backtick=1)
 
272
        self.run_bzr('resolve hello')
 
273
        result = self.run_bzr('conflicts')[0]
567
274
        self.assertEquals(result, "Text conflict in question\n")
568
 
        self.runbzr('commit -m conflicts', retcode=3)
569
 
        self.runbzr('resolve --all')
570
 
        result = self.runbzr('conflicts', backtick=1)
571
 
        self.runbzr('commit -m conflicts')
 
275
        self.run_bzr('commit -m conflicts', retcode=3)
 
276
        self.run_bzr('resolve --all')
 
277
        result = self.run_bzr('conflicts')[0]
 
278
        self.run_bzr('commit -m conflicts')
572
279
        self.assertEquals(result, "")
573
280
 
574
281
    def test_push(self):
578
285
        self.example_branch()
579
286
 
580
287
        # with no push target, fail
581
 
        self.runbzr('push', retcode=3)
 
288
        self.run_bzr('push', retcode=3)
582
289
        # with an explicit target work
583
 
        self.runbzr('push ../output-branch')
 
290
        self.run_bzr('push ../output-branch')
584
291
        # with an implicit target work
585
 
        self.runbzr('push')
 
292
        self.run_bzr('push')
586
293
        # nothing missing
587
 
        self.runbzr('missing ../output-branch')
 
294
        self.run_bzr('missing ../output-branch')
588
295
        # advance this branch
589
 
        self.runbzr('commit --unchanged -m unchanged')
 
296
        self.run_bzr('commit --unchanged -m unchanged')
590
297
 
591
298
        os.chdir('../output-branch')
592
299
        # There is no longer a difference as long as we have
593
300
        # access to the working tree
594
 
        self.runbzr('diff')
 
301
        self.run_bzr('diff')
595
302
 
596
303
        # But we should be missing a revision
597
 
        self.runbzr('missing ../my-branch', retcode=1)
 
304
        self.run_bzr('missing ../my-branch', retcode=1)
598
305
 
599
306
        # diverge the branches
600
 
        self.runbzr('commit --unchanged -m unchanged')
 
307
        self.run_bzr('commit --unchanged -m unchanged')
601
308
        os.chdir('../my-branch')
602
309
        # cannot push now
603
 
        self.runbzr('push', retcode=3)
 
310
        self.run_bzr('push', retcode=3)
604
311
        # and there are difference
605
 
        self.runbzr('missing ../output-branch', retcode=1)
606
 
        self.runbzr('missing --verbose ../output-branch', retcode=1)
 
312
        self.run_bzr('missing ../output-branch', retcode=1)
 
313
        self.run_bzr('missing --verbose ../output-branch', retcode=1)
607
314
        # but we can force a push
608
 
        self.runbzr('push --overwrite')
 
315
        self.run_bzr('push --overwrite')
609
316
        # nothing missing
610
 
        self.runbzr('missing ../output-branch')
 
317
        self.run_bzr('missing ../output-branch')
611
318
        
612
319
        # pushing to a new dir with no parent should fail
613
 
        self.runbzr('push ../missing/new-branch', retcode=3)
 
320
        self.run_bzr('push ../missing/new-branch', retcode=3)
614
321
        # unless we provide --create-prefix
615
 
        self.runbzr('push --create-prefix ../missing/new-branch')
 
322
        self.run_bzr('push --create-prefix ../missing/new-branch')
616
323
        # nothing missing
617
 
        self.runbzr('missing ../missing/new-branch')
 
324
        self.run_bzr('missing ../missing/new-branch')
618
325
 
619
326
    def test_external_command(self):
620
327
        """Test that external commands can be run by setting the path
627
334
        if sys.platform == 'win32':
628
335
            cmd_name += '.bat'
629
336
        oldpath = os.environ.get('BZRPATH', None)
630
 
        bzr = self.capture
631
337
        try:
632
 
            if os.environ.has_key('BZRPATH'):
 
338
            if 'BZRPATH' in os.environ:
633
339
                del os.environ['BZRPATH']
634
340
 
635
341
            f = file(cmd_name, 'wb')
643
349
 
644
350
            # It should not find the command in the local 
645
351
            # directory by default, since it is not in my path
646
 
            bzr(cmd_name, retcode=3)
 
352
            self.run_bzr(cmd_name, retcode=3)
647
353
 
648
354
            # Now put it into my path
649
355
            os.environ['BZRPATH'] = '.'
650
356
 
651
 
            bzr(cmd_name)
 
357
            self.run_bzr(cmd_name)
652
358
 
653
359
            # Make sure empty path elements are ignored
654
360
            os.environ['BZRPATH'] = os.pathsep
655
361
 
656
 
            bzr(cmd_name, retcode=3)
 
362
            self.run_bzr(cmd_name, retcode=3)
657
363
 
658
364
        finally:
659
365
            if oldpath:
673
379
        from os import chdir, mkdir
674
380
        from os.path import exists
675
381
 
676
 
        runbzr = self.runbzr
677
 
        capture = self.capture
678
382
        progress = self.log
679
383
 
680
384
        progress("basic branch creation")
681
385
        mkdir('branch1')
682
386
        chdir('branch1')
683
 
        runbzr('init')
 
387
        self.run_bzr('init')
684
388
 
685
 
        self.assertEquals(capture('root').rstrip(),
686
 
                          pathjoin(self.test_dir, 'branch1'))
 
389
        self.assertIsSameRealPath(self.run_bzr('root')[0].rstrip(),
 
390
                                  pathjoin(self.test_dir, 'branch1'))
687
391
 
688
392
        progress("status of new file")
689
393
 
691
395
        f.write('hello world!\n')
692
396
        f.close()
693
397
 
694
 
        self.assertEquals(capture('unknowns'), 'test.txt\n')
 
398
        self.assertEquals(self.run_bzr('unknowns')[0], 'test.txt\n')
695
399
 
696
 
        out = capture("status")
 
400
        out = self.run_bzr("status")[0]
697
401
        self.assertEquals(out, 'unknown:\n  test.txt\n')
698
402
 
699
 
        out = capture("status --all")
700
 
        self.assertEquals(out, "unknown:\n  test.txt\n")
701
 
 
702
 
        out = capture("status test.txt --all")
703
 
        self.assertEquals(out, "unknown:\n  test.txt\n")
704
 
 
705
403
        f = file('test2.txt', 'wt')
706
404
        f.write('goodbye cruel world...\n')
707
405
        f.close()
708
406
 
709
 
        out = capture("status test.txt")
 
407
        out = self.run_bzr("status test.txt")[0]
710
408
        self.assertEquals(out, "unknown:\n  test.txt\n")
711
409
 
712
 
        out = capture("status")
 
410
        out = self.run_bzr("status")[0]
713
411
        self.assertEquals(out, ("unknown:\n" "  test.txt\n" "  test2.txt\n"))
714
412
 
715
413
        os.unlink('test2.txt')
716
414
 
717
415
        progress("command aliases")
718
 
        out = capture("st --all")
 
416
        out = self.run_bzr("st")[0]
719
417
        self.assertEquals(out, ("unknown:\n" "  test.txt\n"))
720
418
 
721
 
        out = capture("stat")
 
419
        out = self.run_bzr("stat")[0]
722
420
        self.assertEquals(out, ("unknown:\n" "  test.txt\n"))
723
421
 
724
422
        progress("command help")
725
 
        runbzr("help st")
726
 
        runbzr("help")
727
 
        runbzr("help commands")
728
 
        runbzr("help slartibartfast", 3)
729
 
 
730
 
        out = capture("help ci")
731
 
        out.index('aliases: ')
732
 
 
733
 
        progress("can't rename unversioned file")
734
 
        runbzr("rename test.txt new-test.txt", 3)
735
 
 
736
 
        progress("adding a file")
737
 
 
738
 
        runbzr("add test.txt")
739
 
        self.assertEquals(capture("unknowns"), '')
740
 
        self.assertEquals(capture("status --all"), ("added:\n" "  test.txt\n"))
741
 
 
742
 
        progress("rename newly-added file")
743
 
        runbzr("rename test.txt hello.txt")
744
 
        self.assert_(os.path.exists("hello.txt"))
745
 
        self.assert_(not os.path.exists("test.txt"))
746
 
 
747
 
        self.assertEquals(capture("revno"), '0\n')
748
 
 
749
 
        progress("add first revision")
750
 
        runbzr(['commit', '-m', 'add first revision'])
751
 
 
752
 
        progress("more complex renames")
753
 
        os.mkdir("sub1")
754
 
        runbzr("rename hello.txt sub1", 3)
755
 
        runbzr("rename hello.txt sub1/hello.txt", 3)
756
 
        runbzr("move hello.txt sub1", 3)
757
 
 
758
 
        runbzr("add sub1")
759
 
        runbzr("rename sub1 sub2")
760
 
        runbzr("move hello.txt sub2")
761
 
        self.assertEqual(capture("relpath sub2/hello.txt"),
762
 
                         pathjoin("sub2", "hello.txt\n"))
763
 
 
764
 
        self.assert_(exists("sub2"))
765
 
        self.assert_(exists("sub2/hello.txt"))
766
 
        self.assert_(not exists("sub1"))
767
 
        self.assert_(not exists("hello.txt"))
768
 
 
769
 
        runbzr(['commit', '-m', 'commit with some things moved to subdirs'])
770
 
 
771
 
        mkdir("sub1")
772
 
        runbzr('add sub1')
773
 
        runbzr('move sub2/hello.txt sub1')
774
 
        self.assert_(not exists('sub2/hello.txt'))
775
 
        self.assert_(exists('sub1/hello.txt'))
776
 
        runbzr('move sub2 sub1')
777
 
        self.assert_(not exists('sub2'))
778
 
        self.assert_(exists('sub1/sub2'))
779
 
 
780
 
        runbzr(['commit', '-m', 'rename nested subdirectories'])
781
 
 
782
 
        chdir('sub1/sub2')
783
 
        self.assertEquals(capture('root')[:-1],
784
 
                          pathjoin(self.test_dir, 'branch1'))
785
 
        runbzr('move ../hello.txt .')
786
 
        self.assert_(exists('./hello.txt'))
787
 
        self.assertEquals(capture('relpath hello.txt'),
788
 
                          pathjoin('sub1', 'sub2', 'hello.txt') + '\n')
789
 
        self.assertEquals(capture('relpath ../../sub1/sub2/hello.txt'), pathjoin('sub1', 'sub2', 'hello.txt\n'))
790
 
        runbzr(['commit', '-m', 'move to parent directory'])
791
 
        chdir('..')
792
 
        self.assertEquals(capture('relpath sub2/hello.txt'), pathjoin('sub1', 'sub2', 'hello.txt\n'))
793
 
 
794
 
        runbzr('move sub2/hello.txt .')
795
 
        self.assert_(exists('hello.txt'))
 
423
        self.run_bzr("help st")
 
424
        self.run_bzr("help")
 
425
        self.run_bzr("help commands")
 
426
        self.run_bzr("help slartibartfast", retcode=3)
 
427
 
 
428
        out = self.run_bzr("help ci")[0]
 
429
        out.index('Aliases:  ci, checkin\n')
796
430
 
797
431
        f = file('hello.txt', 'wt')
798
432
        f.write('some nice new content\n')
799
433
        f.close()
800
434
 
 
435
        self.run_bzr("add hello.txt")
 
436
        
801
437
        f = file('msg.tmp', 'wt')
802
438
        f.write('this is my new commit\nand it has multiple lines, for fun')
803
439
        f.close()
804
440
 
805
 
        runbzr('commit -F msg.tmp')
806
 
 
807
 
        self.assertEquals(capture('revno'), '5\n')
808
 
        runbzr('export -r 5 export-5.tmp')
809
 
        runbzr('export export.tmp')
810
 
 
811
 
        runbzr('log')
812
 
        runbzr('log -v')
813
 
        runbzr('log -v --forward')
814
 
        runbzr('log -m', retcode=3)
815
 
        log_out = capture('log -m commit')
 
441
        self.run_bzr('commit -F msg.tmp')
 
442
 
 
443
        self.assertEquals(self.run_bzr('revno')[0], '1\n')
 
444
        self.run_bzr('export -r 1 export-1.tmp')
 
445
        self.run_bzr('export export.tmp')
 
446
 
 
447
        self.run_bzr('log')
 
448
        self.run_bzr('log -v')
 
449
        self.run_bzr('log -v --forward')
 
450
        self.run_bzr('log -m', retcode=3)
 
451
        log_out = self.run_bzr('log -m commit')[0]
816
452
        self.assert_("this is my new commit\n  and" in log_out)
817
453
        self.assert_("rename nested" not in log_out)
818
454
        self.assert_('revision-id' not in log_out)
819
 
        self.assert_('revision-id' in capture('log --show-ids -m commit'))
 
455
        self.assert_('revision-id' in self.run_bzr('log --show-ids -m commit')[0])
820
456
 
821
 
        log_out = capture('log --line')
 
457
        log_out = self.run_bzr('log --line')[0]
822
458
        # determine the widest line we want
823
459
        max_width = terminal_width() - 1
824
460
        for line in log_out.splitlines():
829
465
        progress("file with spaces in name")
830
466
        mkdir('sub directory')
831
467
        file('sub directory/file with spaces ', 'wt').write('see how this works\n')
832
 
        runbzr('add .')
833
 
        runbzr('diff', retcode=1)
834
 
        runbzr('commit -m add-spaces')
835
 
        runbzr('check')
836
 
 
837
 
        runbzr('log')
838
 
        runbzr('log --forward')
839
 
 
840
 
        runbzr('info')
 
468
        self.run_bzr('add .')
 
469
        self.run_bzr('diff', retcode=1)
 
470
        self.run_bzr('commit -m add-spaces')
 
471
        self.run_bzr('check')
 
472
 
 
473
        self.run_bzr('log')
 
474
        self.run_bzr('log --forward')
 
475
 
 
476
        self.run_bzr('info')
841
477
 
842
478
        if has_symlinks():
843
479
            progress("symlinks")
844
480
            mkdir('symlinks')
845
481
            chdir('symlinks')
846
 
            runbzr('init')
 
482
            self.run_bzr('init')
847
483
            os.symlink("NOWHERE1", "link1")
848
 
            runbzr('add link1')
849
 
            self.assertEquals(self.capture('unknowns'), '')
850
 
            runbzr(['commit', '-m', '1: added symlink link1'])
851
 
    
 
484
            self.run_bzr('add link1')
 
485
            self.assertEquals(self.run_bzr('unknowns')[0], '')
 
486
            self.run_bzr(['commit', '-m', '1: added symlink link1'])
 
487
 
852
488
            mkdir('d1')
853
 
            runbzr('add d1')
854
 
            self.assertEquals(self.capture('unknowns'), '')
 
489
            self.run_bzr('add d1')
 
490
            self.assertEquals(self.run_bzr('unknowns')[0], '')
855
491
            os.symlink("NOWHERE2", "d1/link2")
856
 
            self.assertEquals(self.capture('unknowns'), 'd1/link2\n')
 
492
            self.assertEquals(self.run_bzr('unknowns')[0], 'd1/link2\n')
857
493
            # is d1/link2 found when adding d1
858
 
            runbzr('add d1')
859
 
            self.assertEquals(self.capture('unknowns'), '')
 
494
            self.run_bzr('add d1')
 
495
            self.assertEquals(self.run_bzr('unknowns')[0], '')
860
496
            os.symlink("NOWHERE3", "d1/link3")
861
 
            self.assertEquals(self.capture('unknowns'), 'd1/link3\n')
862
 
            runbzr(['commit', '-m', '2: added dir, symlink'])
863
 
    
864
 
            runbzr('rename d1 d2')
865
 
            runbzr('move d2/link2 .')
866
 
            runbzr('move link1 d2')
 
497
            self.assertEquals(self.run_bzr('unknowns')[0], 'd1/link3\n')
 
498
            self.run_bzr(['commit', '-m', '2: added dir, symlink'])
 
499
 
 
500
            self.run_bzr('rename d1 d2')
 
501
            self.run_bzr('move d2/link2 .')
 
502
            self.run_bzr('move link1 d2')
867
503
            self.assertEquals(os.readlink("./link2"), "NOWHERE2")
868
504
            self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
869
 
            runbzr('add d2/link3')
870
 
            runbzr('diff', retcode=1)
871
 
            runbzr(['commit', '-m', '3: rename of dir, move symlinks, add link3'])
872
 
    
 
505
            self.run_bzr('add d2/link3')
 
506
            self.run_bzr('diff', retcode=1)
 
507
            self.run_bzr(['commit', '-m',
 
508
                          '3: rename of dir, move symlinks, add link3'])
 
509
 
873
510
            os.unlink("link2")
874
511
            os.symlink("TARGET 2", "link2")
875
512
            os.unlink("d2/link1")
876
513
            os.symlink("TARGET 1", "d2/link1")
877
 
            runbzr('diff', retcode=1)
878
 
            self.assertEquals(self.capture("relpath d2/link1"), "d2/link1\n")
879
 
            runbzr(['commit', '-m', '4: retarget of two links'])
880
 
    
881
 
            runbzr('remove d2/link1')
882
 
            self.assertEquals(self.capture('unknowns'), 'd2/link1\n')
883
 
            runbzr(['commit', '-m', '5: remove d2/link1'])
 
514
            self.run_bzr('diff', retcode=1)
 
515
            self.assertEquals(self.run_bzr("relpath d2/link1")[0], "d2/link1\n")
 
516
            self.run_bzr(['commit', '-m', '4: retarget of two links'])
 
517
 
 
518
            self.run_bzr('remove --keep d2/link1')
 
519
            self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
 
520
            self.run_bzr(['commit', '-m', '5: remove d2/link1'])
884
521
            # try with the rm alias
885
 
            runbzr('add d2/link1')
886
 
            runbzr(['commit', '-m', '6: add d2/link1'])
887
 
            runbzr('rm d2/link1')
888
 
            self.assertEquals(self.capture('unknowns'), 'd2/link1\n')
889
 
            runbzr(['commit', '-m', '7: remove d2/link1'])
890
 
    
 
522
            self.run_bzr('add d2/link1')
 
523
            self.run_bzr(['commit', '-m', '6: add d2/link1'])
 
524
            self.run_bzr('rm --keep d2/link1')
 
525
            self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
 
526
            self.run_bzr(['commit', '-m', '7: remove d2/link1'])
 
527
 
891
528
            os.mkdir("d1")
892
 
            runbzr('add d1')
893
 
            runbzr('rename d2/link3 d1/link3new')
894
 
            self.assertEquals(self.capture('unknowns'), 'd2/link1\n')
895
 
            runbzr(['commit', '-m', '8: remove d2/link1, move/rename link3'])
896
 
            
897
 
            runbzr(['check'])
898
 
            
899
 
            runbzr(['export', '-r', '1', 'exp1.tmp'])
 
529
            self.run_bzr('add d1')
 
530
            self.run_bzr('rename d2/link3 d1/link3new')
 
531
            self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
 
532
            self.run_bzr(['commit', '-m',
 
533
                          '8: remove d2/link1, move/rename link3'])
 
534
 
 
535
            self.run_bzr('check')
 
536
 
 
537
            self.run_bzr('export -r 1 exp1.tmp')
900
538
            chdir("exp1.tmp")
901
539
            self.assertEquals(listdir_sorted("."), [ "link1" ])
902
540
            self.assertEquals(os.readlink("link1"), "NOWHERE1")
903
541
            chdir("..")
904
 
            
905
 
            runbzr(['export', '-r', '2', 'exp2.tmp'])
 
542
 
 
543
            self.run_bzr('export -r 2 exp2.tmp')
906
544
            chdir("exp2.tmp")
907
545
            self.assertEquals(listdir_sorted("."), [ "d1", "link1" ])
908
546
            chdir("..")
909
 
            
910
 
            runbzr(['export', '-r', '3', 'exp3.tmp'])
 
547
 
 
548
            self.run_bzr('export -r 3 exp3.tmp')
911
549
            chdir("exp3.tmp")
912
550
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
913
551
            self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
914
552
            self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
915
553
            self.assertEquals(os.readlink("link2")   , "NOWHERE2")
916
554
            chdir("..")
917
 
            
918
 
            runbzr(['export', '-r', '4', 'exp4.tmp'])
 
555
 
 
556
            self.run_bzr('export -r 4 exp4.tmp')
919
557
            chdir("exp4.tmp")
920
558
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
921
559
            self.assertEquals(os.readlink("d2/link1"), "TARGET 1")
922
560
            self.assertEquals(os.readlink("link2")   , "TARGET 2")
923
561
            self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
924
562
            chdir("..")
925
 
            
926
 
            runbzr(['export', '-r', '5', 'exp5.tmp'])
 
563
 
 
564
            self.run_bzr('export -r 5 exp5.tmp')
927
565
            chdir("exp5.tmp")
928
566
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
929
567
            self.assert_(os.path.islink("link2"))
930
568
            self.assert_(listdir_sorted("d2")== [ "link3" ])
931
569
            chdir("..")
932
 
            
933
 
            runbzr(['export', '-r', '8', 'exp6.tmp'])
 
570
 
 
571
            self.run_bzr('export -r 8 exp6.tmp')
934
572
            chdir("exp6.tmp")
935
573
            self.assertEqual(listdir_sorted("."), [ "d1", "d2", "link2"])
936
574
            self.assertEquals(listdir_sorted("d1"), [ "link3new" ])
950
588
        branch = wt.branch
951
589
        wt.commit('empty commit for nonsense', allow_pointless=True)
952
590
        url = self.get_readonly_url('from')
953
 
        self.run_bzr('branch', url, 'to')
 
591
        self.run_bzr(['branch', url, 'to'])
954
592
        branch = Branch.open('to')
955
593
        self.assertEqual(1, len(branch.revision_history()))
956
594
        # the branch should be set in to to from
958
596
 
959
597
    def test_log(self):
960
598
        self.build_tree(['branch/', 'branch/file'])
961
 
        self.capture('init branch')
962
 
        self.capture('add branch/file')
963
 
        self.capture('commit -m foo branch')
 
599
        self.run_bzr('init branch')[0]
 
600
        self.run_bzr('add branch/file')[0]
 
601
        self.run_bzr('commit -m foo branch')[0]
964
602
        url = self.get_readonly_url('branch/file')
965
 
        output = self.capture('log %s' % url)
 
603
        output = self.run_bzr('log %s' % url)[0]
966
604
        self.assertEqual(8, len(output.split('\n')))
967
605
        
968
606
    def test_check(self):
969
607
        self.build_tree(['branch/', 'branch/file'])
970
 
        self.capture('init branch')
971
 
        self.capture('add branch/file')
972
 
        self.capture('commit -m foo branch')
 
608
        self.run_bzr('init branch')[0]
 
609
        self.run_bzr('add branch/file')[0]
 
610
        self.run_bzr('commit -m foo branch')[0]
973
611
        url = self.get_readonly_url('branch/')
974
 
        self.run_bzr('check', url)
 
612
        self.run_bzr(['check', url])
975
613
    
976
614
    def test_push(self):
977
615
        # create a source branch
979
617
        os.chdir('my-branch')
980
618
        self.run_bzr('init')
981
619
        file('hello', 'wt').write('foo')
982
 
        self.run_bzr('add', 'hello')
983
 
        self.run_bzr('commit', '-m', 'setup')
 
620
        self.run_bzr('add hello')
 
621
        self.run_bzr('commit -m setup')
984
622
 
985
623
        # with an explicit target work
986
 
        self.run_bzr('push', self.get_url('output-branch'))
 
624
        self.run_bzr(['push', self.get_url('output-branch')])
987
625
 
988
626
    
989
627
class HTTPTests(TestCaseWithWebserver, RemoteTests):