/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
1403 by Robert Collins
merge from martin
22
command-line interface. This doesn't actually run a new interpreter but 
1393.1.45 by Martin Pool
doc
23
rather starts again from the run_bzr function.
720 by Martin Pool
- start moving external tests into the testsuite framework
24
"""
25
1393.1.45 by Martin Pool
doc
26
1185.1.25 by Robert Collins
merge David Clymer's patch for TestCaseInTestDir.runcmd
27
from cStringIO import StringIO
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
28
import os
1185.16.43 by Martin Pool
- clean up handling of option objects
29
import re
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
30
import shutil
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
31
import sys
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
32
33
from bzrlib.branch import Branch
1432 by Robert Collins
branch: namespace
34
from bzrlib.clone import copy_branch
1393.3.3 by Jelmer Vernooij
Add test for empty commit messages.
35
from bzrlib.errors import BzrCommandError
1399.1.4 by Robert Collins
move diff and symlink conditionals into inventory.py from diff.py
36
from bzrlib.osutils import has_symlinks
1414 by Robert Collins
merge in an adjusted version of Jelmer's empty-log detection patch.
37
from bzrlib.selftest import TestCaseInTempDir, BzrTestBase
1400.1.1 by Robert Collins
implement a basic test for the ui branch command from http servers
38
from bzrlib.selftest.HTTPTestUtil import TestCaseWithWebserver
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
39
898 by Martin Pool
- add new runbzr method for external tests
40
1141 by Martin Pool
- rename FunctionalTest to TestCaseInTempDir
41
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
42
1185.3.23 by Martin Pool
- run some previously external tests in process
43
    def runbzr(self, args, retcode=0, backtick=False):
898 by Martin Pool
- add new runbzr method for external tests
44
        if isinstance(args, basestring):
45
            args = args.split()
1074 by Martin Pool
- check for email address in BRANCH_ROOT/.bzr/email, so you can
46
47
        if backtick:
1185.3.23 by Martin Pool
- run some previously external tests in process
48
            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
49
        else:
1185.3.23 by Martin Pool
- run some previously external tests in process
50
            return self.run_bzr_captured(args, retcode=retcode)
904 by Martin Pool
- more selftest external-command fixes
51
1142 by Martin Pool
- remove dead code from blackbox tests (pychecker)
52
1102 by Martin Pool
- merge test refactoring from robertc
53
class TestCommands(ExternalBase):
54
55
    def test_help_commands(self):
898 by Martin Pool
- add new runbzr method for external tests
56
        self.runbzr('--help')
57
        self.runbzr('help')
58
        self.runbzr('help commands')
59
        self.runbzr('help help')
60
        self.runbzr('commit -h')
727 by Martin Pool
- move more code to run external commands from testbzr to selftest
61
1102 by Martin Pool
- merge test refactoring from robertc
62
    def test_init_branch(self):
898 by Martin Pool
- add new runbzr method for external tests
63
        self.runbzr(['init'])
732 by Martin Pool
- move more tests into bzr selftest
64
1185.16.138 by Martin Pool
[patch] 'bzr init DIR' (John)
65
        # Can it handle subdirectories as well?
66
        self.runbzr('init subdir1')
67
        self.assert_(os.path.exists('subdir1'))
68
        self.assert_(os.path.exists('subdir1/.bzr'))
69
1185.35.21 by Aaron Bentley
Changed error status to 3
70
        self.runbzr('init subdir2/nothere', retcode=3)
1185.16.138 by Martin Pool
[patch] 'bzr init DIR' (John)
71
        
72
        os.mkdir('subdir2')
73
        self.runbzr('init subdir2')
1185.35.21 by Aaron Bentley
Changed error status to 3
74
        self.runbzr('init subdir2', retcode=3)
1185.16.138 by Martin Pool
[patch] 'bzr init DIR' (John)
75
76
        self.runbzr('init subdir2/subsubdir1')
77
        self.assert_(os.path.exists('subdir2/subsubdir1/.bzr'))
78
1102 by Martin Pool
- merge test refactoring from robertc
79
    def test_whoami(self):
732 by Martin Pool
- move more tests into bzr selftest
80
        # this should always identify something, if only "john@localhost"
898 by Martin Pool
- add new runbzr method for external tests
81
        self.runbzr("whoami")
82
        self.runbzr("whoami --email")
1074 by Martin Pool
- check for email address in BRANCH_ROOT/.bzr/email, so you can
83
84
        self.assertEquals(self.runbzr("whoami --email",
85
                                      backtick=True).count('@'), 1)
86
        
1102 by Martin Pool
- merge test refactoring from robertc
87
    def test_whoami_branch(self):
88
        """branch specific user identity works."""
1074 by Martin Pool
- check for email address in BRANCH_ROOT/.bzr/email, so you can
89
        self.runbzr('init')
90
        f = file('.bzr/email', 'wt')
91
        f.write('Branch Identity <branch@identi.ty>')
92
        f.close()
1185.6.1 by John Arbash Meinel
Updated the whomai test to handle BZREMAIL
93
        bzr_email = os.environ.get('BZREMAIL')
94
        if bzr_email is not None:
95
            del os.environ['BZREMAIL']
1074 by Martin Pool
- check for email address in BRANCH_ROOT/.bzr/email, so you can
96
        whoami = self.runbzr("whoami",backtick=True)
97
        whoami_email = self.runbzr("whoami --email",backtick=True)
98
        self.assertTrue(whoami.startswith('Branch Identity <branch@identi.ty>'))
99
        self.assertTrue(whoami_email.startswith('branch@identi.ty'))
1185.6.1 by John Arbash Meinel
Updated the whomai test to handle BZREMAIL
100
        # Verify that the environment variable overrides the value 
101
        # in the file
102
        os.environ['BZREMAIL'] = 'Different ID <other@environ.ment>'
103
        whoami = self.runbzr("whoami",backtick=True)
104
        whoami_email = self.runbzr("whoami --email",backtick=True)
105
        self.assertTrue(whoami.startswith('Different ID <other@environ.ment>'))
106
        self.assertTrue(whoami_email.startswith('other@environ.ment'))
107
        if bzr_email is not None:
108
            os.environ['BZREMAIL'] = bzr_email
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
109
1185.35.14 by Aaron Bentley
Implemented nick command
110
    def test_nick_command(self):
111
        """bzr nick for viewing, setting nicknames"""
112
        os.mkdir('me.dev')
113
        os.chdir('me.dev')
114
        self.runbzr('init')
115
        nick = self.runbzr("nick",backtick=True)
116
        self.assertEqual(nick, 'me.dev\n')
117
        nick = self.runbzr("nick moo")
118
        nick = self.runbzr("nick",backtick=True)
119
        self.assertEqual(nick, 'moo\n')
120
121
1102 by Martin Pool
- merge test refactoring from robertc
122
    def test_invalid_commands(self):
1185.35.21 by Aaron Bentley
Changed error status to 3
123
        self.runbzr("pants", retcode=3)
124
        self.runbzr("--pants off", retcode=3)
125
        self.runbzr("diff --message foo", retcode=3)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
126
1102 by Martin Pool
- merge test refactoring from robertc
127
    def test_empty_commit(self):
898 by Martin Pool
- add new runbzr method for external tests
128
        self.runbzr("init")
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
129
        self.build_tree(['hello.txt'])
1185.35.21 by Aaron Bentley
Changed error status to 3
130
        self.runbzr("commit -m empty", retcode=3)
898 by Martin Pool
- add new runbzr method for external tests
131
        self.runbzr("add hello.txt")
132
        self.runbzr("commit -m added")
885 by Martin Pool
- commit command refuses unless something is changed or --unchanged is given
133
1393.3.3 by Jelmer Vernooij
Add test for empty commit messages.
134
    def test_empty_commit_message(self):
135
        self.runbzr("init")
136
        file('foo.c', 'wt').write('int main() {}')
137
        self.runbzr(['add', 'foo.c'])
1185.35.21 by Aaron Bentley
Changed error status to 3
138
        self.runbzr(["commit", "-m", ""] , retcode=3) 
1393.3.3 by Jelmer Vernooij
Add test for empty commit messages.
139
1185.12.101 by Aaron Bentley
Made commit take branch from first argument, if supplied.
140
    def test_other_branch_commit(self):
141
        # this branch is to ensure consistent behaviour, whether we're run
142
        # inside a branch, or not.
143
        os.mkdir('empty_branch')
144
        os.chdir('empty_branch')
145
        self.runbzr('init')
146
        os.mkdir('branch')
147
        os.chdir('branch')
148
        self.runbzr('init')
149
        file('foo.c', 'wt').write('int main() {}')
150
        file('bar.c', 'wt').write('int main() {}')
151
        os.chdir('..')
152
        self.runbzr(['add', 'branch/foo.c'])
153
        self.runbzr(['add', 'branch'])
154
        # can't commit files in different trees; sane error
1185.35.21 by Aaron Bentley
Changed error status to 3
155
        self.runbzr('commit -m newstuff branch/foo.c .', retcode=3)
1185.12.101 by Aaron Bentley
Made commit take branch from first argument, if supplied.
156
        self.runbzr('commit -m newstuff branch/foo.c')
157
        self.runbzr('commit -m newstuff branch')
1185.35.21 by Aaron Bentley
Changed error status to 3
158
        self.runbzr('commit -m newstuff branch', retcode=3)
1185.12.101 by Aaron Bentley
Made commit take branch from first argument, if supplied.
159
160
1102 by Martin Pool
- merge test refactoring from robertc
161
    def test_ignore_patterns(self):
906 by Martin Pool
- split out black-box ignore commands
162
        from bzrlib.branch import Branch
163
        
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
164
        b = Branch.initialize('.')
906 by Martin Pool
- split out black-box ignore commands
165
        self.assertEquals(list(b.unknowns()), [])
166
167
        file('foo.tmp', 'wt').write('tmp files are ignored')
168
        self.assertEquals(list(b.unknowns()), [])
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
169
        self.assertEquals(self.capture('unknowns'), '')
906 by Martin Pool
- split out black-box ignore commands
170
171
        file('foo.c', 'wt').write('int main() {}')
172
        self.assertEquals(list(b.unknowns()), ['foo.c'])
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
173
        self.assertEquals(self.capture('unknowns'), 'foo.c\n')
906 by Martin Pool
- split out black-box ignore commands
174
175
        self.runbzr(['add', 'foo.c'])
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
176
        self.assertEquals(self.capture('unknowns'), '')
906 by Martin Pool
- split out black-box ignore commands
177
178
        # 'ignore' works when creating the .bzignore file
179
        file('foo.blah', 'wt').write('blah')
180
        self.assertEquals(list(b.unknowns()), ['foo.blah'])
181
        self.runbzr('ignore *.blah')
182
        self.assertEquals(list(b.unknowns()), [])
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
183
        self.assertEquals(file('.bzrignore', 'rU').read(), '*.blah\n')
906 by Martin Pool
- split out black-box ignore commands
184
185
        # 'ignore' works when then .bzrignore file already exists
186
        file('garh', 'wt').write('garh')
187
        self.assertEquals(list(b.unknowns()), ['garh'])
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
188
        self.assertEquals(self.capture('unknowns'), 'garh\n')
906 by Martin Pool
- split out black-box ignore commands
189
        self.runbzr('ignore garh')
190
        self.assertEquals(list(b.unknowns()), [])
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
191
        self.assertEquals(file('.bzrignore', 'rU').read(), '*.blah\ngarh\n')
1102 by Martin Pool
- merge test refactoring from robertc
192
193
    def test_revert(self):
194
        self.runbzr('init')
195
196
        file('hello', 'wt').write('foo')
197
        self.runbzr('add hello')
198
        self.runbzr('commit -m setup hello')
199
200
        file('goodbye', 'wt').write('baz')
201
        self.runbzr('add goodbye')
202
        self.runbzr('commit -m setup goodbye')
1092.2.18 by Robert Collins
merge from symlink branch
203
1102 by Martin Pool
- merge test refactoring from robertc
204
        file('hello', 'wt').write('bar')
205
        file('goodbye', 'wt').write('qux')
206
        self.runbzr('revert hello')
207
        self.check_file_contents('hello', 'foo')
208
        self.check_file_contents('goodbye', 'qux')
209
        self.runbzr('revert')
210
        self.check_file_contents('goodbye', 'baz')
211
212
        os.mkdir('revertdir')
213
        self.runbzr('add revertdir')
214
        self.runbzr('commit -m f')
215
        os.rmdir('revertdir')
216
        self.runbzr('revert')
217
1092.2.18 by Robert Collins
merge from symlink branch
218
        os.symlink('/unlikely/to/exist', 'symlink')
219
        self.runbzr('add symlink')
220
        self.runbzr('commit -m f')
221
        os.unlink('symlink')
222
        self.runbzr('revert')
1448 by Robert Collins
revert symlinks correctly
223
        self.failUnlessExists('symlink')
224
        os.unlink('symlink')
225
        os.symlink('a-different-path', 'symlink')
226
        self.runbzr('revert')
227
        self.assertEqual('/unlikely/to/exist',
228
                         os.readlink('symlink'))
1092.2.18 by Robert Collins
merge from symlink branch
229
        
1185.5.8 by John Arbash Meinel
Fixed bzr revert with the new RevisionSpec code.
230
        file('hello', 'wt').write('xyz')
231
        self.runbzr('commit -m xyz hello')
232
        self.runbzr('revert -r 1 hello')
233
        self.check_file_contents('hello', 'foo')
234
        self.runbzr('revert hello')
235
        self.check_file_contents('hello', 'xyz')
1185.8.5 by Aaron Bentley
Fixed non-tree-root bug in branch, revert, merge
236
        os.chdir('revertdir')
237
        self.runbzr('revert')
238
        os.chdir('..')
239
1185.5.8 by John Arbash Meinel
Fixed bzr revert with the new RevisionSpec code.
240
1185.1.8 by Robert Collins
David Clymers patch to use rename rather than mv for two argument non-directory target bzr mv calls.
241
    def test_mv_modes(self):
1102 by Martin Pool
- merge test refactoring from robertc
242
        """Test two modes of operation for mv"""
243
        from bzrlib.branch import Branch
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
244
        b = Branch.initialize('.')
1102 by Martin Pool
- merge test refactoring from robertc
245
        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
246
        self.run_bzr_captured(['add', self.test_dir])
247
        self.run_bzr_captured(['mv', 'a', 'b'])
248
        self.run_bzr_captured(['mv', 'b', 'subdir'])
249
        self.run_bzr_captured(['mv', 'subdir/b', 'a'])
250
        self.run_bzr_captured(['mv', 'a', 'c', 'subdir'])
251
        self.run_bzr_captured(['mv', 'subdir/a', 'subdir/newa'])
1102 by Martin Pool
- merge test refactoring from robertc
252
253
    def test_main_version(self):
254
        """Check output from version command and master option is reasonable"""
255
        # output is intentionally passed through to stdout so that we
256
        # can see the version being tested
257
        output = self.runbzr('version', backtick=1)
258
        self.log('bzr version output:')
259
        self.log(output)
260
        self.assert_(output.startswith('bzr (bazaar-ng) '))
261
        self.assertNotEqual(output.index('Canonical'), -1)
262
        # make sure --version is consistent
263
        tmp_output = self.runbzr('--version', backtick=1)
264
        self.log('bzr --version output:')
265
        self.log(tmp_output)
266
        self.assertEquals(output, tmp_output)
906 by Martin Pool
- split out black-box ignore commands
267
1092.1.39 by Robert Collins
merge from mpool
268
    def example_branch(test):
269
        test.runbzr('init')
270
        file('hello', 'wt').write('foo')
271
        test.runbzr('add hello')
272
        test.runbzr('commit -m setup hello')
273
        file('goodbye', 'wt').write('baz')
274
        test.runbzr('add goodbye')
275
        test.runbzr('commit -m setup goodbye')
276
1185.12.1 by Aaron Bentley
Fixed export
277
    def test_export(self):
278
        os.mkdir('branch')
279
        os.chdir('branch')
280
        self.example_branch()
281
        self.runbzr('export ../latest')
282
        self.assertEqual(file('../latest/goodbye', 'rt').read(), 'baz')
283
        self.runbzr('export ../first -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
284
        self.assert_(not os.path.exists('../first/goodbye'))
1185.12.1 by Aaron Bentley
Fixed export
285
        self.assertEqual(file('../first/hello', 'rt').read(), 'foo')
286
        self.runbzr('export ../first.gz -r 1')
287
        self.assertEqual(file('../first.gz/hello', 'rt').read(), 'foo')
288
        self.runbzr('export ../first.bz2 -r 1')
289
        self.assertEqual(file('../first.bz2/hello', 'rt').read(), 'foo')
290
        self.runbzr('export ../first.tar -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
291
        self.assert_(os.path.isfile('../first.tar'))
1185.12.1 by Aaron Bentley
Fixed export
292
        from tarfile import TarFile
293
        tf = TarFile('../first.tar')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
294
        self.assert_('first/hello' in tf.getnames(), tf.getnames())
1185.12.1 by Aaron Bentley
Fixed export
295
        self.assertEqual(tf.extractfile('first/hello').read(), 'foo')
296
        self.runbzr('export ../first.tar.gz -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
297
        self.assert_(os.path.isfile('../first.tar.gz'))
1185.12.1 by Aaron Bentley
Fixed export
298
        self.runbzr('export ../first.tbz2 -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
299
        self.assert_(os.path.isfile('../first.tbz2'))
1185.12.1 by Aaron Bentley
Fixed export
300
        self.runbzr('export ../first.tar.bz2 -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
301
        self.assert_(os.path.isfile('../first.tar.bz2'))
1185.12.1 by Aaron Bentley
Fixed export
302
        self.runbzr('export ../first.tar.tbz2 -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
303
        self.assert_(os.path.isfile('../first.tar.tbz2'))
1185.12.1 by Aaron Bentley
Fixed export
304
        from bz2 import BZ2File
305
        tf = TarFile('../first.tar.tbz2', 
306
                     fileobj=BZ2File('../first.tar.tbz2', 'r'))
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
307
        self.assert_('first.tar/hello' in tf.getnames(), tf.getnames())
1185.12.1 by Aaron Bentley
Fixed export
308
        self.assertEqual(tf.extractfile('first.tar/hello').read(), 'foo')
309
        self.runbzr('export ../first2.tar -r 1 --root pizza')
310
        tf = TarFile('../first2.tar')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
311
        self.assert_('pizza/hello' in tf.getnames(), tf.getnames())
1185.12.1 by Aaron Bentley
Fixed export
312
1185.4.1 by Lalo Martins
blackbox tests for diff
313
    def test_diff(self):
314
        self.example_branch()
315
        file('hello', 'wt').write('hello world!')
316
        self.runbzr('commit -m fixing hello')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
317
        output = self.runbzr('diff -r 2..3', backtick=1, retcode=1)
1185.4.1 by Lalo Martins
blackbox tests for diff
318
        self.assert_('\n+hello world!' in output)
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
319
        output = self.runbzr('diff -r last:3..last:1', backtick=1, retcode=1)
1185.4.1 by Lalo Martins
blackbox tests for diff
320
        self.assert_('\n+baz' in output)
321
1432 by Robert Collins
branch: namespace
322
    def test_diff_branches(self):
323
        self.build_tree(['branch1/', 'branch1/file', 'branch2/'])
324
        branch = Branch.initialize('branch1')
325
        branch.add(['file'])
326
        branch.commit('add file')
327
        copy_branch(branch, 'branch2')
328
        print >> open('branch2/file', 'w'), 'new content'
329
        branch2 = Branch.open('branch2')
330
        branch2.commit('update file')
331
        # should open branch1 and diff against branch2, 
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
332
        output = self.run_bzr_captured(['diff', '-r', 'branch:branch2', 
333
                                        'branch1'],
334
                                       retcode=1)
1432 by Robert Collins
branch: namespace
335
        self.assertEquals(("=== modified file 'file'\n"
336
                           "--- file\n"
337
                           "+++ file\n"
338
                           "@@ -1,1 +1,1 @@\n"
339
                           "-new content\n"
340
                           "+contents of branch1/file\n"
341
                           "\n", ''), output)
342
1185.8.4 by Aaron Bentley
Fixed branch -r
343
    def test_branch(self):
344
        """Branch from one branch to another."""
345
        os.mkdir('a')
346
        os.chdir('a')
347
        self.example_branch()
348
        os.chdir('..')
349
        self.runbzr('branch a b')
1442.1.71 by Robert Collins
'bzr branch' sets the branch-name,
350
        self.assertFileEqual('b\n', 'b/.bzr/branch-name')
1185.8.4 by Aaron Bentley
Fixed branch -r
351
        self.runbzr('branch a c -r 1')
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
352
        os.chdir('b')
353
        self.runbzr('commit -m foo --unchanged')
354
        os.chdir('..')
1391 by Robert Collins
merge from integration
355
        # naughty - abstraction violations RBC 20050928  
1393 by Robert Collins
reenable remotebranch tests
356
        print "test_branch used to delete the stores, how is this meant to work ?"
357
        #shutil.rmtree('a/.bzr/revision-store')
358
        #shutil.rmtree('a/.bzr/inventory-store', ignore_errors=True)
359
        #shutil.rmtree('a/.bzr/text-store', ignore_errors=True)
1185.10.1 by Aaron Bentley
Added --basis option to bzr branch
360
        self.runbzr('branch a d --basis b')
1185.8.4 by Aaron Bentley
Fixed branch -r
361
1092.1.39 by Robert Collins
merge from mpool
362
    def test_merge(self):
363
        from bzrlib.branch import Branch
1139 by Martin Pool
- merge in merge improvements and additional tests
364
        
1092.1.39 by Robert Collins
merge from mpool
365
        os.mkdir('a')
366
        os.chdir('a')
367
        self.example_branch()
368
        os.chdir('..')
369
        self.runbzr('branch a b')
370
        os.chdir('b')
371
        file('goodbye', 'wt').write('quux')
372
        self.runbzr(['commit',  '-m',  "more u's are always good"])
373
374
        os.chdir('../a')
375
        file('hello', 'wt').write('quuux')
376
        # We can't merge when there are in-tree changes
1185.35.21 by Aaron Bentley
Changed error status to 3
377
        self.runbzr('merge ../b', retcode=3)
1092.1.39 by Robert Collins
merge from mpool
378
        self.runbzr(['commit', '-m', "Like an epidemic of u's"])
1185.12.84 by Aaron Bentley
got merge type selection under test
379
        self.runbzr('merge ../b -r last:1..last:1 --merge-type blooof',
1185.35.21 by Aaron Bentley
Changed error status to 3
380
                    retcode=3)
1185.12.84 by Aaron Bentley
got merge type selection under test
381
        self.runbzr('merge ../b -r last:1..last:1 --merge-type merge3')
382
        self.runbzr('revert --no-backup')
383
        self.runbzr('merge ../b -r last:1..last:1 --merge-type weave')
1185.12.46 by Aaron Bentley
Fixed -r brokenness in merge
384
        self.runbzr('revert --no-backup')
1185.24.3 by Aaron Bentley
Integrated reprocessing into the rest of the merge stuff
385
        self.runbzr('merge ../b -r last:1..last:1 --reprocess')
386
        self.runbzr('revert --no-backup')
1185.12.46 by Aaron Bentley
Fixed -r brokenness in merge
387
        self.runbzr('merge ../b -r last:1')
1092.1.39 by Robert Collins
merge from mpool
388
        self.check_file_contents('goodbye', 'quux')
389
        # Merging a branch pulls its revision into the tree
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
390
        a = Branch.open('.')
391
        b = Branch.open('../b')
1241 by Martin Pool
- rename last_patch to last_revision
392
        a.get_revision_xml(b.last_revision())
1139 by Martin Pool
- merge in merge improvements and additional tests
393
        self.log('pending merges: %s', a.pending_merges())
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
394
        self.assertEquals(a.pending_merges(), [b.last_revision()])
1185.12.77 by Aaron Bentley
Prevented all ancestors from being marked as pending merges
395
        self.runbzr('commit -m merged')
396
        self.runbzr('merge ../b -r last:1')
397
        self.assertEqual(Branch.open('.').pending_merges(), [])
398
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
399
1185.10.8 by Aaron Bentley
Conflict handling where OTHER is deleted
400
    def test_merge_with_missing_file(self):
401
        """Merge handles missing file conflicts"""
402
        os.mkdir('a')
403
        os.chdir('a')
404
        os.mkdir('sub')
405
        print >> file('sub/a.txt', 'wb'), "hello"
1185.10.10 by Aaron Bentley
Handled modified files missing from THIS
406
        print >> file('b.txt', 'wb'), "hello"
407
        print >> file('sub/c.txt', 'wb'), "hello"
1185.10.8 by Aaron Bentley
Conflict handling where OTHER is deleted
408
        self.runbzr('init')
409
        self.runbzr('add')
410
        self.runbzr(('commit', '-m', 'added a'))
411
        self.runbzr('branch . ../b')
412
        print >> file('sub/a.txt', 'ab'), "there"
1185.10.10 by Aaron Bentley
Handled modified files missing from THIS
413
        print >> file('b.txt', 'ab'), "there"
414
        print >> file('sub/c.txt', 'ab'), "there"
1185.10.8 by Aaron Bentley
Conflict handling where OTHER is deleted
415
        self.runbzr(('commit', '-m', 'Added there'))
416
        os.unlink('sub/a.txt')
1185.10.10 by Aaron Bentley
Handled modified files missing from THIS
417
        os.unlink('sub/c.txt')
1185.10.8 by Aaron Bentley
Conflict handling where OTHER is deleted
418
        os.rmdir('sub')
1185.10.10 by Aaron Bentley
Handled modified files missing from THIS
419
        os.unlink('b.txt')
1185.10.8 by Aaron Bentley
Conflict handling where OTHER is deleted
420
        self.runbzr(('commit', '-m', 'Removed a.txt'))
421
        os.chdir('../b')
422
        print >> file('sub/a.txt', 'ab'), "something"
1185.10.10 by Aaron Bentley
Handled modified files missing from THIS
423
        print >> file('b.txt', 'ab'), "something"
424
        print >> file('sub/c.txt', 'ab'), "something"
1185.10.8 by Aaron Bentley
Conflict handling where OTHER is deleted
425
        self.runbzr(('commit', '-m', 'Modified a.txt'))
1476 by Robert Collins
Merge now has a retcode of 1 when conflicts occur. (Robert Collins)
426
        self.runbzr('merge ../a/', retcode=1)
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
427
        self.assert_(os.path.exists('sub/a.txt.THIS'))
428
        self.assert_(os.path.exists('sub/a.txt.BASE'))
1185.10.10 by Aaron Bentley
Handled modified files missing from THIS
429
        os.chdir('../a')
1476 by Robert Collins
Merge now has a retcode of 1 when conflicts occur. (Robert Collins)
430
        self.runbzr('merge ../b/', retcode=1)
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
431
        self.assert_(os.path.exists('sub/a.txt.OTHER'))
432
        self.assert_(os.path.exists('sub/a.txt.BASE'))
1185.10.8 by Aaron Bentley
Conflict handling where OTHER is deleted
433
974.1.71 by Aaron Bentley
Added test for pull
434
    def test_pull(self):
435
        """Pull changes from one branch to another."""
436
        os.mkdir('a')
437
        os.chdir('a')
438
439
        self.example_branch()
1185.35.21 by Aaron Bentley
Changed error status to 3
440
        self.runbzr('pull', retcode=3)
441
        self.runbzr('missing', retcode=3)
974.1.79 by Aaron Bentley
Fixed issues with pull not having a default location after branch
442
        self.runbzr('missing .')
443
        self.runbzr('missing')
444
        self.runbzr('pull')
1185.35.21 by Aaron Bentley
Changed error status to 3
445
        self.runbzr('pull /', retcode=3)
974.1.79 by Aaron Bentley
Fixed issues with pull not having a default location after branch
446
        self.runbzr('pull')
447
974.1.71 by Aaron Bentley
Added test for pull
448
        os.chdir('..')
449
        self.runbzr('branch a b')
450
        os.chdir('b')
974.1.79 by Aaron Bentley
Fixed issues with pull not having a default location after branch
451
        self.runbzr('pull')
1185.8.5 by Aaron Bentley
Fixed non-tree-root bug in branch, revert, merge
452
        os.mkdir('subdir')
453
        self.runbzr('add subdir')
974.1.71 by Aaron Bentley
Added test for pull
454
        self.runbzr('commit -m blah --unchanged')
455
        os.chdir('../a')
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
456
        a = Branch.open('.')
457
        b = Branch.open('../b')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
458
        self.assertEquals(a.revision_history(), b.revision_history()[:-1])
974.1.71 by Aaron Bentley
Added test for pull
459
        self.runbzr('pull ../b')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
460
        self.assertEquals(a.revision_history(), b.revision_history())
974.1.71 by Aaron Bentley
Added test for pull
461
        self.runbzr('commit -m blah2 --unchanged')
462
        os.chdir('../b')
463
        self.runbzr('commit -m blah3 --unchanged')
1185.12.92 by Aaron Bentley
Fixed pull help, renamed clobber to overwrite
464
        # no overwrite
1185.35.21 by Aaron Bentley
Changed error status to 3
465
        self.runbzr('pull ../a', retcode=3)
1442.1.68 by Robert Collins
'bzr pull' now accepts '--clobber'.
466
        os.chdir('..')
1185.12.92 by Aaron Bentley
Fixed pull help, renamed clobber to overwrite
467
        self.runbzr('branch b overwriteme')
468
        os.chdir('overwriteme')
469
        self.runbzr('pull --overwrite ../a')
470
        overwritten = Branch.open('.')
471
        self.assertEqual(overwritten.revision_history(),
1442.1.68 by Robert Collins
'bzr pull' now accepts '--clobber'.
472
                         a.revision_history())
974.1.74 by Aaron Bentley
Made pull work after remote branch has merged latest revision
473
        os.chdir('../a')
474
        self.runbzr('merge ../b')
475
        self.runbzr('commit -m blah4 --unchanged')
1185.8.5 by Aaron Bentley
Fixed non-tree-root bug in branch, revert, merge
476
        os.chdir('../b/subdir')
477
        self.runbzr('pull ../../a')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
478
        self.assertEquals(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
479
        self.runbzr('commit -m blah5 --unchanged')
480
        self.runbzr('commit -m blah6 --unchanged')
481
        os.chdir('..')
482
        self.runbzr('pull ../a')
483
        os.chdir('../a')
484
        self.runbzr('commit -m blah7 --unchanged')
485
        self.runbzr('merge ../b')
486
        self.runbzr('commit -m blah8 --unchanged')
487
        self.runbzr('pull ../b')
488
        self.runbzr('pull ../b')
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
489
1185.26.1 by John Arbash Meinel
Made ls work again, and take extra arguments.
490
    def test_ls(self):
491
        """Test the abilities of 'bzr ls'"""
492
        bzr = self.runbzr
493
        def bzrout(*args, **kwargs):
494
            kwargs['backtick'] = True
495
            return self.runbzr(*args, **kwargs)
496
497
        def ls_equals(value, *args):
498
            out = self.runbzr(['ls'] + list(args), backtick=True)
499
            self.assertEquals(out, value)
500
501
        bzr('init')
502
        open('a', 'wb').write('hello\n')
503
504
        # Can't supply both
1185.35.21 by Aaron Bentley
Changed error status to 3
505
        bzr('ls --verbose --null', retcode=3)
1185.26.1 by John Arbash Meinel
Made ls work again, and take extra arguments.
506
507
        ls_equals('a\n')
508
        ls_equals('?        a\n', '--verbose')
509
        ls_equals('a\n', '--unknown')
510
        ls_equals('', '--ignored')
511
        ls_equals('', '--versioned')
512
        ls_equals('a\n', '--unknown', '--ignored', '--versioned')
513
        ls_equals('', '--ignored', '--versioned')
514
        ls_equals('a\0', '--null')
515
516
        bzr('add a')
517
        ls_equals('V        a\n', '--verbose')
518
        bzr('commit -m add')
519
        
520
        os.mkdir('subdir')
521
        ls_equals('V        a\n'
522
                  '?        subdir/\n'
523
                  , '--verbose')
524
        open('subdir/b', 'wb').write('b\n')
525
        bzr('add')
526
        ls_equals('V        a\n'
527
                  'V        subdir/\n'
528
                  'V        subdir/b\n'
529
                  , '--verbose')
530
        bzr('commit -m subdir')
531
532
        ls_equals('a\n'
533
                  'subdir\n'
534
                  , '--non-recursive')
535
536
        ls_equals('V        a\n'
537
                  'V        subdir/\n'
538
                  , '--verbose', '--non-recursive')
539
540
        # Check what happens in a sub-directory
541
        os.chdir('subdir')
542
        ls_equals('b\n')
543
        ls_equals('b\0'
544
                  , '--null')
545
        ls_equals('a\n'
546
                  'subdir\n'
547
                  'subdir/b\n'
548
                  , '--from-root')
549
        ls_equals('a\0'
550
                  'subdir\0'
551
                  'subdir/b\0'
552
                  , '--from-root', '--null')
553
        ls_equals('a\n'
554
                  'subdir\n'
555
                  , '--from-root', '--non-recursive')
556
557
        os.chdir('..')
558
559
        # Check what happens when we supply a specific revision
560
        ls_equals('a\n', '--revision', '1')
561
        ls_equals('V        a\n'
562
                  , '--verbose', '--revision', '1')
563
564
        os.chdir('subdir')
565
        ls_equals('', '--revision', '1')
566
1185.26.2 by John Arbash Meinel
Added more tests.
567
        # Now try to do ignored files.
568
        os.chdir('..')
569
        open('blah.py', 'wb').write('unknown\n')
570
        open('blah.pyo', 'wb').write('ignored\n')
571
        ls_equals('a\n'
572
                  'blah.py\n'
573
                  'blah.pyo\n'
574
                  'subdir\n'
575
                  'subdir/b\n')
576
        ls_equals('V        a\n'
577
                  '?        blah.py\n'
578
                  'I        blah.pyo\n'
579
                  'V        subdir/\n'
580
                  'V        subdir/b\n'
581
                  , '--verbose')
582
        ls_equals('blah.pyo\n'
583
                  , '--ignored')
584
        ls_equals('blah.py\n'
585
                  , '--unknown')
586
        ls_equals('a\n'
587
                  'subdir\n'
588
                  'subdir/b\n'
589
                  , '--versioned')
590
1185.26.1 by John Arbash Meinel
Made ls work again, and take extra arguments.
591
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
592
    def test_locations(self):
593
        """Using and remembering different locations"""
594
        os.mkdir('a')
595
        os.chdir('a')
596
        self.runbzr('init')
597
        self.runbzr('commit -m unchanged --unchanged')
1185.35.21 by Aaron Bentley
Changed error status to 3
598
        self.runbzr('pull', retcode=3)
599
        self.runbzr('merge', retcode=3)
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
600
        self.runbzr('branch . ../b')
601
        os.chdir('../b')
602
        self.runbzr('pull')
603
        self.runbzr('branch . ../c')
604
        self.runbzr('pull ../c')
1185.12.12 by Aaron Bentley
Made merge use pull location or die if no branch specified.
605
        self.runbzr('merge')
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
606
        os.chdir('../a')
607
        self.runbzr('pull ../b')
608
        self.runbzr('pull')
609
        self.runbzr('pull ../c')
610
        self.runbzr('branch ../c ../d')
611
        shutil.rmtree('../c')
612
        self.runbzr('pull')
613
        os.chdir('../b')
614
        self.runbzr('pull')
615
        os.chdir('../d')
1185.35.21 by Aaron Bentley
Changed error status to 3
616
        self.runbzr('pull', retcode=3)
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
617
        self.runbzr('pull ../a --remember')
618
        self.runbzr('pull')
974.1.74 by Aaron Bentley
Made pull work after remote branch has merged latest revision
619
        
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
620
    def test_add_reports(self):
621
        """add command prints the names of added files."""
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
622
        b = Branch.initialize('.')
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
623
        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
624
        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
625
        # 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
626
        results = sorted(out.rstrip('\n').split('\n'))
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
627
        self.assertEquals(['added dir',
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
628
                           'added dir'+os.sep+'sub.txt',
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
629
                           'added top.txt',],
630
                          results)
631
1446 by Robert Collins
fixup the verbose-does-nothing for add - add a --quiet instead
632
    def test_add_quiet_is(self):
633
        """add -q does not print the names of added files."""
634
        b = Branch.initialize('.')
635
        self.build_tree(['top.txt', 'dir/', 'dir/sub.txt'])
636
        out = self.run_bzr_captured(['add', '-q'], retcode = 0)[0]
637
        # the ordering is not defined at the moment
638
        results = sorted(out.rstrip('\n').split('\n'))
639
        self.assertEquals([''], results)
640
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
641
    def test_unknown_command(self):
642
        """Handling of unknown command."""
643
        out, err = self.run_bzr_captured(['fluffy-badger'],
1185.35.21 by Aaron Bentley
Changed error status to 3
644
                                         retcode=3)
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
645
        self.assertEquals(out, '')
646
        err.index('unknown command')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
647
1185.35.4 by Aaron Bentley
Implemented remerge
648
    def create_conflicts(self):
649
        """Create a conflicted tree"""
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
650
        os.mkdir('base')
651
        os.chdir('base')
652
        file('hello', 'wb').write("hi world")
653
        file('answer', 'wb').write("42")
654
        self.runbzr('init')
655
        self.runbzr('add')
656
        self.runbzr('commit -m base')
657
        self.runbzr('branch . ../other')
658
        self.runbzr('branch . ../this')
659
        os.chdir('../other')
660
        file('hello', 'wb').write("Hello.")
661
        file('answer', 'wb').write("Is anyone there?")
662
        self.runbzr('commit -m other')
663
        os.chdir('../this')
664
        file('hello', 'wb').write("Hello, world")
665
        self.runbzr('mv answer question')
666
        file('question', 'wb').write("What do you get when you multiply six"
667
                                   "times nine?")
668
        self.runbzr('commit -m this')
1185.35.4 by Aaron Bentley
Implemented remerge
669
670
    def test_remerge(self):
671
        """Remerge command works as expected"""
672
        self.create_conflicts()
673
        self.runbzr('merge ../other --show-base', retcode=1)
674
        conflict_text = file('hello').read()
675
        assert '|||||||' in conflict_text
676
        assert 'hi world' in conflict_text
677
        self.runbzr('remerge', retcode=1)
678
        conflict_text = file('hello').read()
679
        assert '|||||||' not in conflict_text
680
        assert 'hi world' not in conflict_text
681
        os.unlink('hello.OTHER')
682
        self.runbzr('remerge hello --merge-type weave', retcode=1)
1185.35.6 by Aaron Bentley
Removed todo, restored test
683
        assert os.path.exists('hello.OTHER')
1185.35.7 by Aaron Bentley
Fixed weave conflict handling
684
        file_id = self.runbzr('file-id hello')
1185.35.21 by Aaron Bentley
Changed error status to 3
685
        file_id = self.runbzr('file-id hello.THIS', retcode=3)
1185.35.4 by Aaron Bentley
Implemented remerge
686
        self.runbzr('remerge --merge-type weave', retcode=1)
687
        assert os.path.exists('hello.OTHER')
688
        assert not os.path.exists('hello.BASE')
689
        assert '|||||||' not in conflict_text
690
        assert 'hi world' not in conflict_text
1185.35.21 by Aaron Bentley
Changed error status to 3
691
        self.runbzr('remerge . --merge-type weave --show-base', retcode=3)
692
        self.runbzr('remerge . --merge-type weave --reprocess', retcode=3)
693
        self.runbzr('remerge . --show-base --reprocess', retcode=3)
1185.35.4 by Aaron Bentley
Implemented remerge
694
        self.runbzr('remerge hello --show-base', retcode=1)
695
        self.runbzr('remerge hello --reprocess', retcode=1)
696
        self.runbzr('resolve --all')
697
        self.runbzr('commit -m done',)
1185.35.21 by Aaron Bentley
Changed error status to 3
698
        self.runbzr('remerge', retcode=3)
1185.35.4 by Aaron Bentley
Implemented remerge
699
700
701
    def test_conflicts(self):
702
        """Handling of merge conflicts"""
703
        self.create_conflicts()
1476 by Robert Collins
Merge now has a retcode of 1 when conflicts occur. (Robert Collins)
704
        self.runbzr('merge ../other --show-base', retcode=1)
1185.18.1 by Aaron Bentley
Added --show-base to merge
705
        conflict_text = file('hello').read()
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
706
        self.assert_('<<<<<<<' in conflict_text)
707
        self.assert_('>>>>>>>' in conflict_text)
708
        self.assert_('=======' in conflict_text)
709
        self.assert_('|||||||' in conflict_text)
710
        self.assert_('hi world' in conflict_text)
1185.18.1 by Aaron Bentley
Added --show-base to merge
711
        self.runbzr('revert')
712
        self.runbzr('resolve --all')
1476 by Robert Collins
Merge now has a retcode of 1 when conflicts occur. (Robert Collins)
713
        self.runbzr('merge ../other', retcode=1)
1185.18.1 by Aaron Bentley
Added --show-base to merge
714
        conflict_text = file('hello').read()
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
715
        self.assert_('|||||||' not in conflict_text)
716
        self.assert_('hi world' not in conflict_text)
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
717
        result = self.runbzr('conflicts', backtick=1)
718
        self.assertEquals(result, "hello\nquestion\n")
1185.14.11 by Aaron Bentley
moved conflict listing into status and stopped monkey-patching
719
        result = self.runbzr('status', backtick=1)
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
720
        self.assert_("conflicts:\n  hello\n  question\n" in result, result)
1185.14.10 by Aaron Bentley
Commit aborts with conflicts in the tree.
721
        self.runbzr('resolve hello')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
722
        result = self.runbzr('conflicts', backtick=1)
723
        self.assertEquals(result, "question\n")
1185.35.21 by Aaron Bentley
Changed error status to 3
724
        self.runbzr('commit -m conflicts', retcode=3)
1185.14.10 by Aaron Bentley
Commit aborts with conflicts in the tree.
725
        self.runbzr('resolve --all')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
726
        result = self.runbzr('conflicts', backtick=1)
1185.14.10 by Aaron Bentley
Commit aborts with conflicts in the tree.
727
        self.runbzr('commit -m conflicts')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
728
        self.assertEquals(result, "")
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
729
1442.1.59 by Robert Collins
Add re-sign command to generate a digital signature on a single revision.
730
    def test_resign(self):
731
        """Test re signing of data."""
732
        import bzrlib.gpg
733
        oldstrategy = bzrlib.gpg.GPGStrategy
734
        branch = Branch.initialize('.')
735
        branch.commit("base", allow_pointless=True, rev_id='A')
736
        try:
737
            # monkey patch gpg signing mechanism
738
            from bzrlib.testament import Testament
739
            bzrlib.gpg.GPGStrategy = bzrlib.gpg.LoopbackGPGStrategy
740
            self.runbzr('re-sign -r revid:A')
741
            self.assertEqual(Testament.from_revision(branch,'A').as_short_text(),
742
                             branch.revision_store.get('A', 'sig').read())
743
        finally:
744
            bzrlib.gpg.GPGStrategy = oldstrategy
1483 by Robert Collins
BUGFIX: re-sign should accept ranges
745
            
746
    def test_resign_range(self):
747
        import bzrlib.gpg
748
        oldstrategy = bzrlib.gpg.GPGStrategy
749
        branch = Branch.initialize('.')
750
        branch.commit("base", allow_pointless=True, rev_id='A')
751
        branch.commit("base", allow_pointless=True, rev_id='B')
752
        branch.commit("base", allow_pointless=True, rev_id='C')
753
        try:
754
            # monkey patch gpg signing mechanism
755
            from bzrlib.testament import Testament
756
            bzrlib.gpg.GPGStrategy = bzrlib.gpg.LoopbackGPGStrategy
757
            self.runbzr('re-sign -r 1..')
758
            self.assertEqual(Testament.from_revision(branch,'A').as_short_text(),
759
                             branch.revision_store.get('A', 'sig').read())
760
            self.assertEqual(Testament.from_revision(branch,'B').as_short_text(),
761
                             branch.revision_store.get('B', 'sig').read())
762
            self.assertEqual(Testament.from_revision(branch,'C').as_short_text(),
763
                             branch.revision_store.get('C', 'sig').read())
764
        finally:
765
            bzrlib.gpg.GPGStrategy = oldstrategy
766
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
767
    def test_push(self):
768
        # create a source branch
769
        os.mkdir('my-branch')
770
        os.chdir('my-branch')
771
        self.example_branch()
772
773
        # with no push target, fail
1185.35.21 by Aaron Bentley
Changed error status to 3
774
        self.runbzr('push', retcode=3)
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
775
        # with an explicit target work
776
        self.runbzr('push ../output-branch')
777
        # with an implicit target work
778
        self.runbzr('push')
779
        # nothing missing
780
        self.runbzr('missing ../output-branch')
781
        # advance this branch
782
        self.runbzr('commit --unchanged -m unchanged')
783
784
        os.chdir('../output-branch')
785
        # should be a diff as we have not pushed the tree
786
        self.runbzr('diff', retcode=1)
787
        self.runbzr('revert')
788
        # but not now.
789
        self.runbzr('diff')
790
        # diverge the branches
791
        self.runbzr('commit --unchanged -m unchanged')
792
        os.chdir('../my-branch')
793
        # cannot push now
1185.35.21 by Aaron Bentley
Changed error status to 3
794
        self.runbzr('push', retcode=3)
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
795
        # and there are difference
796
        self.runbzr('missing ../output-branch', retcode=1)
797
        # but we can force a push
798
        self.runbzr('push --overwrite')
799
        # nothing missing
800
        self.runbzr('missing ../output-branch')
1495 by Robert Collins
Add a --create-prefix to the new push command.
801
        
802
        # pushing to a new dir with no parent should fail
1185.35.21 by Aaron Bentley
Changed error status to 3
803
        self.runbzr('push ../missing/new-branch', retcode=3)
1495 by Robert Collins
Add a --create-prefix to the new push command.
804
        # unless we provide --create-prefix
805
        self.runbzr('push --create-prefix ../missing/new-branch')
806
        # nothing missing
807
        self.runbzr('missing ../missing/new-branch')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
808
1442.1.59 by Robert Collins
Add re-sign command to generate a digital signature on a single revision.
809
1092.2.6 by Robert Collins
symlink support updated to work
810
def listdir_sorted(dir):
811
    L = os.listdir(dir)
812
    L.sort()
813
    return L
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
814
1092.2.12 by Robert Collins
merge from HEAD
815
904 by Martin Pool
- more selftest external-command fixes
816
class OldTests(ExternalBase):
1092.1.39 by Robert Collins
merge from mpool
817
    """old tests moved from ./testbzr."""
818
1102 by Martin Pool
- merge test refactoring from robertc
819
    def test_bzr(self):
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
820
        from os import chdir, mkdir
821
        from os.path import exists
822
904 by Martin Pool
- more selftest external-command fixes
823
        runbzr = self.runbzr
1185.3.26 by Martin Pool
- remove remaining external executions of bzr
824
        capture = self.capture
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
825
        progress = self.log
826
827
        progress("basic branch creation")
904 by Martin Pool
- more selftest external-command fixes
828
        mkdir('branch1')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
829
        chdir('branch1')
898 by Martin Pool
- add new runbzr method for external tests
830
        runbzr('init')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
831
1185.3.25 by Martin Pool
- run blackbox tests in-process
832
        self.assertEquals(capture('root').rstrip(),
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
833
                          os.path.join(self.test_dir, 'branch1'))
834
835
        progress("status of new file")
836
837
        f = file('test.txt', 'wt')
838
        f.write('hello world!\n')
839
        f.close()
840
1185.3.25 by Martin Pool
- run blackbox tests in-process
841
        self.assertEquals(capture('unknowns'), 'test.txt\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
842
1185.3.25 by Martin Pool
- run blackbox tests in-process
843
        out = capture("status")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
844
        self.assertEquals(out, 'unknown:\n  test.txt\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
845
1185.3.25 by Martin Pool
- run blackbox tests in-process
846
        out = capture("status --all")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
847
        self.assertEquals(out, "unknown:\n  test.txt\n")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
848
1185.3.25 by Martin Pool
- run blackbox tests in-process
849
        out = capture("status test.txt --all")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
850
        self.assertEquals(out, "unknown:\n  test.txt\n")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
851
852
        f = file('test2.txt', 'wt')
853
        f.write('goodbye cruel world...\n')
854
        f.close()
855
1185.3.25 by Martin Pool
- run blackbox tests in-process
856
        out = capture("status test.txt")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
857
        self.assertEquals(out, "unknown:\n  test.txt\n")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
858
1185.3.25 by Martin Pool
- run blackbox tests in-process
859
        out = capture("status")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
860
        self.assertEquals(out, ("unknown:\n" "  test.txt\n" "  test2.txt\n"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
861
862
        os.unlink('test2.txt')
863
864
        progress("command aliases")
1185.3.25 by Martin Pool
- run blackbox tests in-process
865
        out = capture("st --all")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
866
        self.assertEquals(out, ("unknown:\n" "  test.txt\n"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
867
1185.3.25 by Martin Pool
- run blackbox tests in-process
868
        out = capture("stat")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
869
        self.assertEquals(out, ("unknown:\n" "  test.txt\n"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
870
871
        progress("command help")
898 by Martin Pool
- add new runbzr method for external tests
872
        runbzr("help st")
873
        runbzr("help")
874
        runbzr("help commands")
1185.35.21 by Aaron Bentley
Changed error status to 3
875
        runbzr("help slartibartfast", 3)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
876
1185.3.25 by Martin Pool
- run blackbox tests in-process
877
        out = capture("help ci")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
878
        out.index('aliases: ')
879
880
        progress("can't rename unversioned file")
1185.35.21 by Aaron Bentley
Changed error status to 3
881
        runbzr("rename test.txt new-test.txt", 3)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
882
883
        progress("adding a file")
884
898 by Martin Pool
- add new runbzr method for external tests
885
        runbzr("add test.txt")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
886
        self.assertEquals(capture("unknowns"), '')
887
        self.assertEquals(capture("status --all"), ("added:\n" "  test.txt\n"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
888
889
        progress("rename newly-added file")
898 by Martin Pool
- add new runbzr method for external tests
890
        runbzr("rename test.txt hello.txt")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
891
        self.assert_(os.path.exists("hello.txt"))
892
        self.assert_(not os.path.exists("test.txt"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
893
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
894
        self.assertEquals(capture("revno"), '0\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
895
896
        progress("add first revision")
904 by Martin Pool
- more selftest external-command fixes
897
        runbzr(['commit', '-m', 'add first revision'])
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
898
899
        progress("more complex renames")
900
        os.mkdir("sub1")
1185.35.21 by Aaron Bentley
Changed error status to 3
901
        runbzr("rename hello.txt sub1", 3)
902
        runbzr("rename hello.txt sub1/hello.txt", 3)
903
        runbzr("move hello.txt sub1", 3)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
904
898 by Martin Pool
- add new runbzr method for external tests
905
        runbzr("add sub1")
906
        runbzr("rename sub1 sub2")
907
        runbzr("move hello.txt sub2")
1457.1.4 by Robert Collins
Branch.relpath has been moved to WorkingTree.relpath.
908
        self.assertEqual(capture("relpath sub2/hello.txt"),
909
                         os.path.join("sub2", "hello.txt\n"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
910
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
911
        self.assert_(exists("sub2"))
912
        self.assert_(exists("sub2/hello.txt"))
913
        self.assert_(not exists("sub1"))
914
        self.assert_(not exists("hello.txt"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
915
898 by Martin Pool
- add new runbzr method for external tests
916
        runbzr(['commit', '-m', 'commit with some things moved to subdirs'])
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
917
918
        mkdir("sub1")
898 by Martin Pool
- add new runbzr method for external tests
919
        runbzr('add sub1')
920
        runbzr('move sub2/hello.txt sub1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
921
        self.assert_(not exists('sub2/hello.txt'))
922
        self.assert_(exists('sub1/hello.txt'))
898 by Martin Pool
- add new runbzr method for external tests
923
        runbzr('move sub2 sub1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
924
        self.assert_(not exists('sub2'))
925
        self.assert_(exists('sub1/sub2'))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
926
898 by Martin Pool
- add new runbzr method for external tests
927
        runbzr(['commit', '-m', 'rename nested subdirectories'])
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
928
929
        chdir('sub1/sub2')
1185.3.25 by Martin Pool
- run blackbox tests in-process
930
        self.assertEquals(capture('root')[:-1],
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
931
                          os.path.join(self.test_dir, 'branch1'))
898 by Martin Pool
- add new runbzr method for external tests
932
        runbzr('move ../hello.txt .')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
933
        self.assert_(exists('./hello.txt'))
1185.3.25 by Martin Pool
- run blackbox tests in-process
934
        self.assertEquals(capture('relpath hello.txt'),
935
                          os.path.join('sub1', 'sub2', 'hello.txt') + '\n')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
936
        self.assertEquals(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
937
        runbzr(['commit', '-m', 'move to parent directory'])
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
938
        chdir('..')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
939
        self.assertEquals(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
940
898 by Martin Pool
- add new runbzr method for external tests
941
        runbzr('move sub2/hello.txt .')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
942
        self.assert_(exists('hello.txt'))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
943
944
        f = file('hello.txt', 'wt')
945
        f.write('some nice new content\n')
946
        f.close()
947
948
        f = file('msg.tmp', 'wt')
1185.12.25 by Aaron Bentley
Added one-line log format
949
        f.write('this is my new commit\nand it has multiple lines, for fun')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
950
        f.close()
951
898 by Martin Pool
- add new runbzr method for external tests
952
        runbzr('commit -F msg.tmp')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
953
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
954
        self.assertEquals(capture('revno'), '5\n')
898 by Martin Pool
- add new runbzr method for external tests
955
        runbzr('export -r 5 export-5.tmp')
956
        runbzr('export export.tmp')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
957
898 by Martin Pool
- add new runbzr method for external tests
958
        runbzr('log')
959
        runbzr('log -v')
909.1.5 by Aaron Bentley
Fixed log -v (mostly)
960
        runbzr('log -v --forward')
1185.35.21 by Aaron Bentley
Changed error status to 3
961
        runbzr('log -m', retcode=3)
1185.3.25 by Martin Pool
- run blackbox tests in-process
962
        log_out = capture('log -m commit')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
963
        self.assert_("this is my new commit\n  and" in log_out)
964
        self.assert_("rename nested" not in log_out)
965
        self.assert_('revision-id' not in log_out)
966
        self.assert_('revision-id' in capture('log --show-ids -m commit'))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
967
1185.12.25 by Aaron Bentley
Added one-line log format
968
        log_out = capture('log --line')
969
        for line in log_out.splitlines():
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
970
            self.assert_(len(line) <= 79, len(line))
971
        self.assert_("this is my new commit and" in log_out)
1185.12.25 by Aaron Bentley
Added one-line log format
972
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
973
974
        progress("file with spaces in name")
975
        mkdir('sub directory')
976
        file('sub directory/file with spaces ', 'wt').write('see how this works\n')
898 by Martin Pool
- add new runbzr method for external tests
977
        runbzr('add .')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
978
        runbzr('diff', retcode=1)
898 by Martin Pool
- add new runbzr method for external tests
979
        runbzr('commit -m add-spaces')
980
        runbzr('check')
981
982
        runbzr('log')
983
        runbzr('log --forward')
984
985
        runbzr('info')
1092.1.35 by Robert Collins
merge from mpool up to rev 1110
986
1092.2.6 by Robert Collins
symlink support updated to work
987
        if has_symlinks():
988
            progress("symlinks")
989
            mkdir('symlinks')
990
            chdir('symlinks')
991
            runbzr('init')
992
            os.symlink("NOWHERE1", "link1")
993
            runbzr('add link1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
994
            self.assertEquals(self.capture('unknowns'), '')
1092.2.6 by Robert Collins
symlink support updated to work
995
            runbzr(['commit', '-m', '1: added symlink link1'])
996
    
997
            mkdir('d1')
998
            runbzr('add d1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
999
            self.assertEquals(self.capture('unknowns'), '')
1092.2.6 by Robert Collins
symlink support updated to work
1000
            os.symlink("NOWHERE2", "d1/link2")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1001
            self.assertEquals(self.capture('unknowns'), 'd1/link2\n')
1092.2.6 by Robert Collins
symlink support updated to work
1002
            # is d1/link2 found when adding d1
1003
            runbzr('add d1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1004
            self.assertEquals(self.capture('unknowns'), '')
1092.2.6 by Robert Collins
symlink support updated to work
1005
            os.symlink("NOWHERE3", "d1/link3")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1006
            self.assertEquals(self.capture('unknowns'), 'd1/link3\n')
1092.2.6 by Robert Collins
symlink support updated to work
1007
            runbzr(['commit', '-m', '2: added dir, symlink'])
1008
    
1009
            runbzr('rename d1 d2')
1010
            runbzr('move d2/link2 .')
1011
            runbzr('move link1 d2')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1012
            self.assertEquals(os.readlink("./link2"), "NOWHERE2")
1013
            self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
1092.2.6 by Robert Collins
symlink support updated to work
1014
            runbzr('add d2/link3')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
1015
            runbzr('diff', retcode=1)
1092.2.6 by Robert Collins
symlink support updated to work
1016
            runbzr(['commit', '-m', '3: rename of dir, move symlinks, add link3'])
1017
    
1018
            os.unlink("link2")
1019
            os.symlink("TARGET 2", "link2")
1020
            os.unlink("d2/link1")
1021
            os.symlink("TARGET 1", "d2/link1")
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
1022
            runbzr('diff', retcode=1)
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1023
            self.assertEquals(self.capture("relpath d2/link1"), "d2/link1\n")
1092.2.6 by Robert Collins
symlink support updated to work
1024
            runbzr(['commit', '-m', '4: retarget of two links'])
1025
    
1026
            runbzr('remove d2/link1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1027
            self.assertEquals(self.capture('unknowns'), 'd2/link1\n')
1092.2.20 by Robert Collins
symlink and weaves, whaddya know
1028
            runbzr(['commit', '-m', '5: remove d2/link1'])
1424 by Robert Collins
add rm alias to remove
1029
            # try with the rm alias
1030
            runbzr('add d2/link1')
1031
            runbzr(['commit', '-m', '6: add d2/link1'])
1032
            runbzr('rm d2/link1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1033
            self.assertEquals(self.capture('unknowns'), 'd2/link1\n')
1424 by Robert Collins
add rm alias to remove
1034
            runbzr(['commit', '-m', '7: remove d2/link1'])
1092.2.6 by Robert Collins
symlink support updated to work
1035
    
1036
            os.mkdir("d1")
1037
            runbzr('add d1')
1038
            runbzr('rename d2/link3 d1/link3new')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1039
            self.assertEquals(self.capture('unknowns'), 'd2/link1\n')
1424 by Robert Collins
add rm alias to remove
1040
            runbzr(['commit', '-m', '8: remove d2/link1, move/rename link3'])
1092.2.6 by Robert Collins
symlink support updated to work
1041
            
1042
            runbzr(['check'])
1043
            
1044
            runbzr(['export', '-r', '1', 'exp1.tmp'])
1045
            chdir("exp1.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1046
            self.assertEquals(listdir_sorted("."), [ "link1" ])
1047
            self.assertEquals(os.readlink("link1"), "NOWHERE1")
1092.2.6 by Robert Collins
symlink support updated to work
1048
            chdir("..")
1049
            
1050
            runbzr(['export', '-r', '2', 'exp2.tmp'])
1051
            chdir("exp2.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1052
            self.assertEquals(listdir_sorted("."), [ "d1", "link1" ])
1092.2.6 by Robert Collins
symlink support updated to work
1053
            chdir("..")
1054
            
1055
            runbzr(['export', '-r', '3', 'exp3.tmp'])
1056
            chdir("exp3.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1057
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
1058
            self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
1059
            self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
1060
            self.assertEquals(os.readlink("link2")   , "NOWHERE2")
1092.2.6 by Robert Collins
symlink support updated to work
1061
            chdir("..")
1062
            
1063
            runbzr(['export', '-r', '4', 'exp4.tmp'])
1064
            chdir("exp4.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1065
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
1066
            self.assertEquals(os.readlink("d2/link1"), "TARGET 1")
1067
            self.assertEquals(os.readlink("link2")   , "TARGET 2")
1068
            self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
1092.2.6 by Robert Collins
symlink support updated to work
1069
            chdir("..")
1070
            
1071
            runbzr(['export', '-r', '5', 'exp5.tmp'])
1072
            chdir("exp5.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1073
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
1074
            self.assert_(os.path.islink("link2"))
1075
            self.assert_(listdir_sorted("d2")== [ "link3" ])
1092.2.6 by Robert Collins
symlink support updated to work
1076
            chdir("..")
1077
            
1424 by Robert Collins
add rm alias to remove
1078
            runbzr(['export', '-r', '8', 'exp6.tmp'])
1092.2.6 by Robert Collins
symlink support updated to work
1079
            chdir("exp6.tmp")
1424 by Robert Collins
add rm alias to remove
1080
            self.assertEqual(listdir_sorted("."), [ "d1", "d2", "link2"])
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
1081
            self.assertEquals(listdir_sorted("d1"), [ "link3new" ])
1082
            self.assertEquals(listdir_sorted("d2"), [])
1083
            self.assertEquals(os.readlink("d1/link3new"), "NOWHERE3")
1092.2.6 by Robert Collins
symlink support updated to work
1084
            chdir("..")
1085
        else:
1086
            progress("skipping symlink tests")
1400.1.1 by Robert Collins
implement a basic test for the ui branch command from http servers
1087
1088
1089
class HttpTests(TestCaseWithWebserver):
1090
    """Test bzr ui commands against remote branches."""
1091
1092
    def test_branch(self):
1093
        os.mkdir('from')
1094
        branch = Branch.initialize('from')
1095
        branch.commit('empty commit for nonsense', allow_pointless=True)
1096
        url = self.get_remote_url('from')
1097
        self.run_bzr('branch', url, 'to')
1098
        branch = Branch.open('to')
1099
        self.assertEqual(1, len(branch.revision_history()))
1185.16.48 by mbp at sourcefrog
- more refactoring of and tests for option parsing
1100
1442.1.64 by Robert Collins
Branch.open_containing now returns a tuple (Branch, relative-path).
1101
    def test_log(self):
1102
        self.build_tree(['branch/', 'branch/file'])
1103
        branch = Branch.initialize('branch')
1104
        branch.add(['file'])
1105
        branch.commit('add file', rev_id='A')
1106
        url = self.get_remote_url('branch/file')
1107
        output = self.capture('log %s' % url)
1185.35.17 by Aaron Bentley
Added branch nicks to long-format logs
1108
        self.assertEqual(8, len(output.split('\n')))
1442.1.64 by Robert Collins
Branch.open_containing now returns a tuple (Branch, relative-path).
1109
        
1110
1111
1185.16.48 by mbp at sourcefrog
- more refactoring of and tests for option parsing
1112