/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
720 by Martin Pool
- start moving external tests into the testsuite framework
1
# Copyright (C) 2005 by Canonical Ltd
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
2
# -*- coding: utf-8 -*-
720 by Martin Pool
- start moving external tests into the testsuite framework
3
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; either version 2 of the License, or
7
# (at your option) any later version.
8
9
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13
14
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
18
19
"""Black-box tests for bzr.
20
21
These check that it behaves properly when it's invoked through the regular
22
command-line interface.
725 by Martin Pool
doc
23
24
This always reinvokes bzr through a new Python interpreter, which is a
25
bit inefficient but arguably tests in a way more representative of how
26
it's normally invoked.
720 by Martin Pool
- start moving external tests into the testsuite framework
27
"""
28
1185.1.25 by Robert Collins
merge David Clymer's patch for TestCaseInTestDir.runcmd
29
from cStringIO import StringIO
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
30
import os
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
31
import shutil
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
32
import sys
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
33
1141 by Martin Pool
- rename FunctionalTest to TestCaseInTempDir
34
from bzrlib.selftest import TestCaseInTempDir, BzrTestBase
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
35
from bzrlib.branch import Branch
36
898 by Martin Pool
- add new runbzr method for external tests
37
1141 by Martin Pool
- rename FunctionalTest to TestCaseInTempDir
38
class ExternalBase(TestCaseInTempDir):
1185.1.31 by Robert Collins
Change the use of run_bzr to run_bzr_captured in blackbox tests - inspired by David Clymers patch to change run_bzr usage to runbzr
39
1185.3.23 by Martin Pool
- run some previously external tests in process
40
    def runbzr(self, args, retcode=0, backtick=False):
898 by Martin Pool
- add new runbzr method for external tests
41
        if isinstance(args, basestring):
42
            args = args.split()
1074 by Martin Pool
- check for email address in BRANCH_ROOT/.bzr/email, so you can
43
44
        if backtick:
1185.3.23 by Martin Pool
- run some previously external tests in process
45
            return self.run_bzr_captured(args, retcode=retcode)[0]
1074 by Martin Pool
- check for email address in BRANCH_ROOT/.bzr/email, so you can
46
        else:
1185.3.23 by Martin Pool
- run some previously external tests in process
47
            return self.run_bzr_captured(args, retcode=retcode)
904 by Martin Pool
- more selftest external-command fixes
48
1142 by Martin Pool
- remove dead code from blackbox tests (pychecker)
49
1102 by Martin Pool
- merge test refactoring from robertc
50
class TestCommands(ExternalBase):
51
52
    def test_help_commands(self):
898 by Martin Pool
- add new runbzr method for external tests
53
        self.runbzr('--help')
54
        self.runbzr('help')
55
        self.runbzr('help commands')
56
        self.runbzr('help help')
57
        self.runbzr('commit -h')
727 by Martin Pool
- move more code to run external commands from testbzr to selftest
58
1102 by Martin Pool
- merge test refactoring from robertc
59
    def test_init_branch(self):
898 by Martin Pool
- add new runbzr method for external tests
60
        self.runbzr(['init'])
732 by Martin Pool
- move more tests into bzr selftest
61
1102 by Martin Pool
- merge test refactoring from robertc
62
    def test_whoami(self):
732 by Martin Pool
- move more tests into bzr selftest
63
        # this should always identify something, if only "john@localhost"
898 by Martin Pool
- add new runbzr method for external tests
64
        self.runbzr("whoami")
65
        self.runbzr("whoami --email")
1074 by Martin Pool
- check for email address in BRANCH_ROOT/.bzr/email, so you can
66
67
        self.assertEquals(self.runbzr("whoami --email",
68
                                      backtick=True).count('@'), 1)
69
        
1102 by Martin Pool
- merge test refactoring from robertc
70
    def test_whoami_branch(self):
71
        """branch specific user identity works."""
1074 by Martin Pool
- check for email address in BRANCH_ROOT/.bzr/email, so you can
72
        self.runbzr('init')
73
        f = file('.bzr/email', 'wt')
74
        f.write('Branch Identity <branch@identi.ty>')
75
        f.close()
1185.6.1 by John Arbash Meinel
Updated the whomai test to handle BZREMAIL
76
        bzr_email = os.environ.get('BZREMAIL')
77
        if bzr_email is not None:
78
            del os.environ['BZREMAIL']
1074 by Martin Pool
- check for email address in BRANCH_ROOT/.bzr/email, so you can
79
        whoami = self.runbzr("whoami",backtick=True)
80
        whoami_email = self.runbzr("whoami --email",backtick=True)
81
        self.assertTrue(whoami.startswith('Branch Identity <branch@identi.ty>'))
82
        self.assertTrue(whoami_email.startswith('branch@identi.ty'))
1185.6.1 by John Arbash Meinel
Updated the whomai test to handle BZREMAIL
83
        # Verify that the environment variable overrides the value 
84
        # in the file
85
        os.environ['BZREMAIL'] = 'Different ID <other@environ.ment>'
86
        whoami = self.runbzr("whoami",backtick=True)
87
        whoami_email = self.runbzr("whoami --email",backtick=True)
88
        self.assertTrue(whoami.startswith('Different ID <other@environ.ment>'))
89
        self.assertTrue(whoami_email.startswith('other@environ.ment'))
90
        if bzr_email is not None:
91
            os.environ['BZREMAIL'] = bzr_email
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
92
1102 by Martin Pool
- merge test refactoring from robertc
93
    def test_invalid_commands(self):
898 by Martin Pool
- add new runbzr method for external tests
94
        self.runbzr("pants", retcode=1)
95
        self.runbzr("--pants off", retcode=1)
96
        self.runbzr("diff --message foo", retcode=1)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
97
1102 by Martin Pool
- merge test refactoring from robertc
98
    def test_empty_commit(self):
898 by Martin Pool
- add new runbzr method for external tests
99
        self.runbzr("init")
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
100
        self.build_tree(['hello.txt'])
898 by Martin Pool
- add new runbzr method for external tests
101
        self.runbzr("commit -m empty", retcode=1)
102
        self.runbzr("add hello.txt")
103
        self.runbzr("commit -m added")
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
104
1102 by Martin Pool
- merge test refactoring from robertc
105
    def test_ignore_patterns(self):
906 by Martin Pool
- split out black-box ignore commands
106
        from bzrlib.branch import Branch
107
        
1185.2.9 by Lalo Martins
getting rid of everything that calls the Branch constructor directly
108
        b = Branch.initialize('.')
906 by Martin Pool
- split out black-box ignore commands
109
        self.assertEquals(list(b.unknowns()), [])
110
111
        file('foo.tmp', 'wt').write('tmp files are ignored')
112
        self.assertEquals(list(b.unknowns()), [])
1185.3.26 by Martin Pool
- remove remaining external executions of bzr
113
        assert self.capture('unknowns') == ''
906 by Martin Pool
- split out black-box ignore commands
114
115
        file('foo.c', 'wt').write('int main() {}')
116
        self.assertEquals(list(b.unknowns()), ['foo.c'])
1185.3.26 by Martin Pool
- remove remaining external executions of bzr
117
        assert self.capture('unknowns') == 'foo.c\n'
906 by Martin Pool
- split out black-box ignore commands
118
119
        self.runbzr(['add', 'foo.c'])
1185.3.26 by Martin Pool
- remove remaining external executions of bzr
120
        assert self.capture('unknowns') == ''
906 by Martin Pool
- split out black-box ignore commands
121
122
        # 'ignore' works when creating the .bzignore file
123
        file('foo.blah', 'wt').write('blah')
124
        self.assertEquals(list(b.unknowns()), ['foo.blah'])
125
        self.runbzr('ignore *.blah')
126
        self.assertEquals(list(b.unknowns()), [])
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
127
        assert file('.bzrignore', 'rU').read() == '*.blah\n'
906 by Martin Pool
- split out black-box ignore commands
128
129
        # 'ignore' works when then .bzrignore file already exists
130
        file('garh', 'wt').write('garh')
131
        self.assertEquals(list(b.unknowns()), ['garh'])
1185.3.26 by Martin Pool
- remove remaining external executions of bzr
132
        assert self.capture('unknowns') == 'garh\n'
906 by Martin Pool
- split out black-box ignore commands
133
        self.runbzr('ignore garh')
134
        self.assertEquals(list(b.unknowns()), [])
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
135
        assert file('.bzrignore', 'rU').read() == '*.blah\ngarh\n'
1102 by Martin Pool
- merge test refactoring from robertc
136
137
    def test_revert(self):
138
        self.runbzr('init')
139
140
        file('hello', 'wt').write('foo')
141
        self.runbzr('add hello')
142
        self.runbzr('commit -m setup hello')
143
144
        file('goodbye', 'wt').write('baz')
145
        self.runbzr('add goodbye')
146
        self.runbzr('commit -m setup goodbye')
1092.1.14 by Robert Collins
relace runTest with test_foo in blackbox tests
147
        
1102 by Martin Pool
- merge test refactoring from robertc
148
        file('hello', 'wt').write('bar')
149
        file('goodbye', 'wt').write('qux')
150
        self.runbzr('revert hello')
151
        self.check_file_contents('hello', 'foo')
152
        self.check_file_contents('goodbye', 'qux')
153
        self.runbzr('revert')
154
        self.check_file_contents('goodbye', 'baz')
155
156
        os.mkdir('revertdir')
157
        self.runbzr('add revertdir')
158
        self.runbzr('commit -m f')
159
        os.rmdir('revertdir')
160
        self.runbzr('revert')
161
1185.5.8 by John Arbash Meinel
Fixed bzr revert with the new RevisionSpec code.
162
        file('hello', 'wt').write('xyz')
163
        self.runbzr('commit -m xyz hello')
164
        self.runbzr('revert -r 1 hello')
165
        self.check_file_contents('hello', 'foo')
166
        self.runbzr('revert hello')
167
        self.check_file_contents('hello', 'xyz')
1185.8.5 by Aaron Bentley
Fixed non-tree-root bug in branch, revert, merge
168
        os.chdir('revertdir')
169
        self.runbzr('revert')
170
        os.chdir('..')
171
1185.5.8 by John Arbash Meinel
Fixed bzr revert with the new RevisionSpec code.
172
1185.1.8 by Robert Collins
David Clymers patch to use rename rather than mv for two argument non-directory target bzr mv calls.
173
    def test_mv_modes(self):
1102 by Martin Pool
- merge test refactoring from robertc
174
        """Test two modes of operation for mv"""
175
        from bzrlib.branch import Branch
1185.2.9 by Lalo Martins
getting rid of everything that calls the Branch constructor directly
176
        b = Branch.initialize('.')
1102 by Martin Pool
- merge test refactoring from robertc
177
        self.build_tree(['a', 'c', 'subdir/'])
1185.1.31 by Robert Collins
Change the use of run_bzr to run_bzr_captured in blackbox tests - inspired by David Clymers patch to change run_bzr usage to runbzr
178
        self.run_bzr_captured(['add', self.test_dir])
179
        self.run_bzr_captured(['mv', 'a', 'b'])
180
        self.run_bzr_captured(['mv', 'b', 'subdir'])
181
        self.run_bzr_captured(['mv', 'subdir/b', 'a'])
182
        self.run_bzr_captured(['mv', 'a', 'c', 'subdir'])
183
        self.run_bzr_captured(['mv', 'subdir/a', 'subdir/newa'])
1102 by Martin Pool
- merge test refactoring from robertc
184
1185.1.8 by Robert Collins
David Clymers patch to use rename rather than mv for two argument non-directory target bzr mv calls.
185
1102 by Martin Pool
- merge test refactoring from robertc
186
    def test_main_version(self):
187
        """Check output from version command and master option is reasonable"""
188
        # output is intentionally passed through to stdout so that we
189
        # can see the version being tested
190
        output = self.runbzr('version', backtick=1)
191
        self.log('bzr version output:')
192
        self.log(output)
193
        self.assert_(output.startswith('bzr (bazaar-ng) '))
194
        self.assertNotEqual(output.index('Canonical'), -1)
195
        # make sure --version is consistent
196
        tmp_output = self.runbzr('--version', backtick=1)
197
        self.log('bzr --version output:')
198
        self.log(tmp_output)
199
        self.assertEquals(output, tmp_output)
906 by Martin Pool
- split out black-box ignore commands
200
1092.1.39 by Robert Collins
merge from mpool
201
    def example_branch(test):
202
        test.runbzr('init')
203
        file('hello', 'wt').write('foo')
204
        test.runbzr('add hello')
205
        test.runbzr('commit -m setup hello')
206
        file('goodbye', 'wt').write('baz')
207
        test.runbzr('add goodbye')
208
        test.runbzr('commit -m setup goodbye')
209
1185.4.1 by Lalo Martins
blackbox tests for diff
210
    def test_diff(self):
211
        self.example_branch()
212
        file('hello', 'wt').write('hello world!')
213
        self.runbzr('commit -m fixing hello')
214
        output = self.runbzr('diff -r 2..3', backtick=1)
215
        self.assert_('\n+hello world!' in output)
216
        output = self.runbzr('diff -r last:3..last:1', backtick=1)
217
        self.assert_('\n+baz' in output)
218
1185.8.4 by Aaron Bentley
Fixed branch -r
219
    def test_branch(self):
220
        """Branch from one branch to another."""
221
        os.mkdir('a')
222
        os.chdir('a')
223
        self.example_branch()
224
        os.chdir('..')
225
        self.runbzr('branch a b')
226
        self.runbzr('branch a c -r 1')
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
227
        os.chdir('b')
228
        self.runbzr('commit -m foo --unchanged')
229
        os.chdir('..')
230
        shutil.rmtree('a/.bzr/revision-store')
1391 by Robert Collins
merge from integration
231
        # naughty - abstraction violations RBC 20050928  
232
        shutil.rmtree('a/.bzr/inventory-store', ignore_errors=True)
233
        shutil.rmtree('a/.bzr/text-store', ignore_errors=True)
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
234
        self.runbzr('branch a d --basis b')
1185.8.4 by Aaron Bentley
Fixed branch -r
235
1092.1.39 by Robert Collins
merge from mpool
236
    def test_merge(self):
237
        from bzrlib.branch import Branch
1139 by Martin Pool
- merge in merge improvements and additional tests
238
        
1092.1.39 by Robert Collins
merge from mpool
239
        os.mkdir('a')
240
        os.chdir('a')
241
        self.example_branch()
242
        os.chdir('..')
243
        self.runbzr('branch a b')
244
        os.chdir('b')
245
        file('goodbye', 'wt').write('quux')
246
        self.runbzr(['commit',  '-m',  "more u's are always good"])
247
248
        os.chdir('../a')
249
        file('hello', 'wt').write('quuux')
250
        # We can't merge when there are in-tree changes
251
        self.runbzr('merge ../b', retcode=1)
252
        self.runbzr(['commit', '-m', "Like an epidemic of u's"])
253
        self.runbzr('merge ../b')
254
        self.check_file_contents('goodbye', 'quux')
255
        # Merging a branch pulls its revision into the tree
1185.2.9 by Lalo Martins
getting rid of everything that calls the Branch constructor directly
256
        a = Branch.open('.')
257
        b = Branch.open('../b')
1241 by Martin Pool
- rename last_patch to last_revision
258
        a.get_revision_xml(b.last_revision())
1139 by Martin Pool
- merge in merge improvements and additional tests
259
        self.log('pending merges: %s', a.pending_merges())
1241 by Martin Pool
- rename last_patch to last_revision
260
        #        assert a.pending_merges() == [b.last_revision()], "Assertion %s %s" \
261
        #        % (a.pending_merges(), b.last_revision())
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
262
974.1.71 by Aaron Bentley
Added test for pull
263
    def test_pull(self):
264
        """Pull changes from one branch to another."""
265
        os.mkdir('a')
266
        os.chdir('a')
267
268
        self.example_branch()
974.1.79 by Aaron Bentley
Fixed issues with pull not having a default location after branch
269
        self.runbzr('pull', retcode=1)
270
        self.runbzr('missing', retcode=1)
271
        self.runbzr('missing .')
272
        self.runbzr('missing')
273
        self.runbzr('pull')
274
        self.runbzr('pull /', retcode=1)
275
        self.runbzr('pull')
276
974.1.71 by Aaron Bentley
Added test for pull
277
        os.chdir('..')
278
        self.runbzr('branch a b')
279
        os.chdir('b')
974.1.79 by Aaron Bentley
Fixed issues with pull not having a default location after branch
280
        self.runbzr('pull')
1185.8.5 by Aaron Bentley
Fixed non-tree-root bug in branch, revert, merge
281
        os.mkdir('subdir')
282
        self.runbzr('add subdir')
974.1.71 by Aaron Bentley
Added test for pull
283
        self.runbzr('commit -m blah --unchanged')
284
        os.chdir('../a')
1185.2.16 by Lalo Martins
fixing a few tests that came on the merge, for the new constructors
285
        a = Branch.open('.')
286
        b = Branch.open('../b')
974.1.71 by Aaron Bentley
Added test for pull
287
        assert a.revision_history() == b.revision_history()[:-1]
288
        self.runbzr('pull ../b')
289
        assert a.revision_history() == b.revision_history()
290
        self.runbzr('commit -m blah2 --unchanged')
291
        os.chdir('../b')
292
        self.runbzr('commit -m blah3 --unchanged')
293
        self.runbzr('pull ../a', retcode=1)
1390 by Robert Collins
pair programming worx... merge integration and weave
294
        print "DECIDE IF PULL CAN CONVERGE, blackbox.py"
1391 by Robert Collins
merge from integration
295
        return
974.1.74 by Aaron Bentley
Made pull work after remote branch has merged latest revision
296
        os.chdir('../a')
297
        self.runbzr('merge ../b')
298
        self.runbzr('commit -m blah4 --unchanged')
1185.8.5 by Aaron Bentley
Fixed non-tree-root bug in branch, revert, merge
299
        os.chdir('../b/subdir')
300
        self.runbzr('pull ../../a')
974.1.74 by Aaron Bentley
Made pull work after remote branch has merged latest revision
301
        assert a.revision_history()[-1] == b.revision_history()[-1]
1185.10.7 by Aaron Bentley
Fixed bug where pull throws DivergedBranches if branch is newer than upstream
302
        self.runbzr('commit -m blah5 --unchanged')
303
        self.runbzr('commit -m blah6 --unchanged')
304
        os.chdir('..')
305
        self.runbzr('pull ../a')
306
        os.chdir('../a')
307
        self.runbzr('commit -m blah7 --unchanged')
308
        self.runbzr('merge ../b')
309
        self.runbzr('commit -m blah8 --unchanged')
310
        self.runbzr('pull ../b')
311
        self.runbzr('pull ../b')
974.1.74 by Aaron Bentley
Made pull work after remote branch has merged latest revision
312
        
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
313
    def test_add_reports(self):
314
        """add command prints the names of added files."""
1185.2.9 by Lalo Martins
getting rid of everything that calls the Branch constructor directly
315
        b = Branch.initialize('.')
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
316
        self.build_tree(['top.txt', 'dir/', 'dir/sub.txt'])
1185.1.31 by Robert Collins
Change the use of run_bzr to run_bzr_captured in blackbox tests - inspired by David Clymers patch to change run_bzr usage to runbzr
317
        out = self.run_bzr_captured(['add'], retcode = 0)[0]
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
318
        # the ordering is not defined at the moment
1185.1.31 by Robert Collins
Change the use of run_bzr to run_bzr_captured in blackbox tests - inspired by David Clymers patch to change run_bzr usage to runbzr
319
        results = sorted(out.rstrip('\n').split('\n'))
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
320
        self.assertEquals(['added dir',
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
321
                           'added dir'+os.sep+'sub.txt',
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
322
                           'added top.txt',],
323
                          results)
324
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
325
    def test_unknown_command(self):
326
        """Handling of unknown command."""
327
        out, err = self.run_bzr_captured(['fluffy-badger'],
328
                                         retcode=1)
329
        self.assertEquals(out, '')
330
        err.index('unknown command')
331
        
332
1092.1.39 by Robert Collins
merge from mpool
333
904 by Martin Pool
- more selftest external-command fixes
334
class OldTests(ExternalBase):
1092.1.39 by Robert Collins
merge from mpool
335
    """old tests moved from ./testbzr."""
336
1102 by Martin Pool
- merge test refactoring from robertc
337
    def test_bzr(self):
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
338
        from os import chdir, mkdir
339
        from os.path import exists
340
904 by Martin Pool
- more selftest external-command fixes
341
        runbzr = self.runbzr
1185.3.26 by Martin Pool
- remove remaining external executions of bzr
342
        capture = self.capture
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
343
        progress = self.log
344
345
        progress("basic branch creation")
904 by Martin Pool
- more selftest external-command fixes
346
        mkdir('branch1')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
347
        chdir('branch1')
898 by Martin Pool
- add new runbzr method for external tests
348
        runbzr('init')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
349
1185.3.25 by Martin Pool
- run blackbox tests in-process
350
        self.assertEquals(capture('root').rstrip(),
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
351
                          os.path.join(self.test_dir, 'branch1'))
352
353
        progress("status of new file")
354
355
        f = file('test.txt', 'wt')
356
        f.write('hello world!\n')
357
        f.close()
358
1185.3.25 by Martin Pool
- run blackbox tests in-process
359
        self.assertEquals(capture('unknowns'), 'test.txt\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
360
1185.3.25 by Martin Pool
- run blackbox tests in-process
361
        out = capture("status")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
362
        assert out == 'unknown:\n  test.txt\n'
363
1185.3.25 by Martin Pool
- run blackbox tests in-process
364
        out = capture("status --all")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
365
        assert out == "unknown:\n  test.txt\n"
366
1185.3.25 by Martin Pool
- run blackbox tests in-process
367
        out = capture("status test.txt --all")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
368
        assert out == "unknown:\n  test.txt\n"
369
370
        f = file('test2.txt', 'wt')
371
        f.write('goodbye cruel world...\n')
372
        f.close()
373
1185.3.25 by Martin Pool
- run blackbox tests in-process
374
        out = capture("status test.txt")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
375
        assert out == "unknown:\n  test.txt\n"
376
1185.3.25 by Martin Pool
- run blackbox tests in-process
377
        out = capture("status")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
378
        assert out == ("unknown:\n"
379
                       "  test.txt\n"
380
                       "  test2.txt\n")
381
382
        os.unlink('test2.txt')
383
384
        progress("command aliases")
1185.3.25 by Martin Pool
- run blackbox tests in-process
385
        out = capture("st --all")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
386
        assert out == ("unknown:\n"
387
                       "  test.txt\n")
388
1185.3.25 by Martin Pool
- run blackbox tests in-process
389
        out = capture("stat")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
390
        assert out == ("unknown:\n"
391
                       "  test.txt\n")
392
393
        progress("command help")
898 by Martin Pool
- add new runbzr method for external tests
394
        runbzr("help st")
395
        runbzr("help")
396
        runbzr("help commands")
397
        runbzr("help slartibartfast", 1)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
398
1185.3.25 by Martin Pool
- run blackbox tests in-process
399
        out = capture("help ci")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
400
        out.index('aliases: ')
401
402
        progress("can't rename unversioned file")
898 by Martin Pool
- add new runbzr method for external tests
403
        runbzr("rename test.txt new-test.txt", 1)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
404
405
        progress("adding a file")
406
898 by Martin Pool
- add new runbzr method for external tests
407
        runbzr("add test.txt")
1185.3.25 by Martin Pool
- run blackbox tests in-process
408
        assert capture("unknowns") == ''
409
        assert capture("status --all") == ("added:\n"
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
410
                                                "  test.txt\n")
411
412
        progress("rename newly-added file")
898 by Martin Pool
- add new runbzr method for external tests
413
        runbzr("rename test.txt hello.txt")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
414
        assert os.path.exists("hello.txt")
415
        assert not os.path.exists("test.txt")
416
1185.3.25 by Martin Pool
- run blackbox tests in-process
417
        assert capture("revno") == '0\n'
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
418
419
        progress("add first revision")
904 by Martin Pool
- more selftest external-command fixes
420
        runbzr(['commit', '-m', 'add first revision'])
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
421
422
        progress("more complex renames")
423
        os.mkdir("sub1")
898 by Martin Pool
- add new runbzr method for external tests
424
        runbzr("rename hello.txt sub1", 1)
425
        runbzr("rename hello.txt sub1/hello.txt", 1)
426
        runbzr("move hello.txt sub1", 1)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
427
898 by Martin Pool
- add new runbzr method for external tests
428
        runbzr("add sub1")
429
        runbzr("rename sub1 sub2")
430
        runbzr("move hello.txt sub2")
1185.3.25 by Martin Pool
- run blackbox tests in-process
431
        assert capture("relpath sub2/hello.txt") == os.path.join("sub2", "hello.txt\n")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
432
433
        assert exists("sub2")
434
        assert exists("sub2/hello.txt")
435
        assert not exists("sub1")
436
        assert not exists("hello.txt")
437
898 by Martin Pool
- add new runbzr method for external tests
438
        runbzr(['commit', '-m', 'commit with some things moved to subdirs'])
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
439
440
        mkdir("sub1")
898 by Martin Pool
- add new runbzr method for external tests
441
        runbzr('add sub1')
442
        runbzr('move sub2/hello.txt sub1')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
443
        assert not exists('sub2/hello.txt')
444
        assert exists('sub1/hello.txt')
898 by Martin Pool
- add new runbzr method for external tests
445
        runbzr('move sub2 sub1')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
446
        assert not exists('sub2')
447
        assert exists('sub1/sub2')
448
898 by Martin Pool
- add new runbzr method for external tests
449
        runbzr(['commit', '-m', 'rename nested subdirectories'])
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
450
451
        chdir('sub1/sub2')
1185.3.25 by Martin Pool
- run blackbox tests in-process
452
        self.assertEquals(capture('root')[:-1],
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
453
                          os.path.join(self.test_dir, 'branch1'))
898 by Martin Pool
- add new runbzr method for external tests
454
        runbzr('move ../hello.txt .')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
455
        assert exists('./hello.txt')
1185.3.25 by Martin Pool
- run blackbox tests in-process
456
        self.assertEquals(capture('relpath hello.txt'),
457
                          os.path.join('sub1', 'sub2', 'hello.txt') + '\n')
458
        assert capture('relpath ../../sub1/sub2/hello.txt') == os.path.join('sub1', 'sub2', 'hello.txt\n')
898 by Martin Pool
- add new runbzr method for external tests
459
        runbzr(['commit', '-m', 'move to parent directory'])
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
460
        chdir('..')
1185.3.25 by Martin Pool
- run blackbox tests in-process
461
        assert capture('relpath sub2/hello.txt') == os.path.join('sub1', 'sub2', 'hello.txt\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
462
898 by Martin Pool
- add new runbzr method for external tests
463
        runbzr('move sub2/hello.txt .')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
464
        assert exists('hello.txt')
465
466
        f = file('hello.txt', 'wt')
467
        f.write('some nice new content\n')
468
        f.close()
469
470
        f = file('msg.tmp', 'wt')
471
        f.write('this is my new commit\n')
472
        f.close()
473
898 by Martin Pool
- add new runbzr method for external tests
474
        runbzr('commit -F msg.tmp')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
475
1185.3.25 by Martin Pool
- run blackbox tests in-process
476
        assert capture('revno') == '5\n'
898 by Martin Pool
- add new runbzr method for external tests
477
        runbzr('export -r 5 export-5.tmp')
478
        runbzr('export export.tmp')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
479
898 by Martin Pool
- add new runbzr method for external tests
480
        runbzr('log')
481
        runbzr('log -v')
909.1.5 by Aaron Bentley
Fixed log -v (mostly)
482
        runbzr('log -v --forward')
483
        runbzr('log -m', retcode=1)
1185.3.25 by Martin Pool
- run blackbox tests in-process
484
        log_out = capture('log -m commit')
909.1.5 by Aaron Bentley
Fixed log -v (mostly)
485
        assert "this is my new commit" in log_out
486
        assert "rename nested" not in log_out
487
        assert 'revision-id' not in log_out
1185.3.25 by Martin Pool
- run blackbox tests in-process
488
        assert 'revision-id' in capture('log --show-ids -m commit')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
489
490
491
        progress("file with spaces in name")
492
        mkdir('sub directory')
493
        file('sub directory/file with spaces ', 'wt').write('see how this works\n')
898 by Martin Pool
- add new runbzr method for external tests
494
        runbzr('add .')
495
        runbzr('diff')
496
        runbzr('commit -m add-spaces')
497
        runbzr('check')
498
499
        runbzr('log')
500
        runbzr('log --forward')
501
502
        runbzr('info')
1092.1.35 by Robert Collins
merge from mpool up to rev 1110
503