/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 -*-
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
3
#
720 by Martin Pool
- start moving external tests into the testsuite framework
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
8
#
720 by Martin Pool
- start moving external tests into the testsuite framework
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
13
#
720 by Martin Pool
- start moving external tests into the testsuite framework
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
1185.46.9 by Aaron Bentley
Added verbose option to bzr add, to list all ignored files.
18
# Mr. Smoketoomuch: I'm sorry?
19
# Mr. Bounder: You'd better cut down a little then.
20
# Mr. Smoketoomuch: Oh, I see! Smoke too much so I'd better cut down a little
21
#                   then!
720 by Martin Pool
- start moving external tests into the testsuite framework
22
23
"""Black-box tests for bzr.
24
25
These check that it behaves properly when it's invoked through the regular
1403 by Robert Collins
merge from martin
26
command-line interface. This doesn't actually run a new interpreter but 
1393.1.45 by Martin Pool
doc
27
rather starts again from the run_bzr function.
720 by Martin Pool
- start moving external tests into the testsuite framework
28
"""
29
1393.1.45 by Martin Pool
doc
30
1185.33.14 by Martin Pool
doc
31
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
32
# Note: Please don't add new tests here, it's too big and bulky.  Instead add
1512 by Robert Collins
Merge from Martin. Adjust check to work with HTTP again.
33
# them into small suites in bzrlib.tests.blackbox.test_FOO for the particular
34
# UI command/aspect that is being tested.
1185.33.14 by Martin Pool
doc
35
36
1185.1.25 by Robert Collins
merge David Clymer's patch for TestCaseInTestDir.runcmd
37
from cStringIO import StringIO
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
38
import os
1185.16.43 by Martin Pool
- clean up handling of option objects
39
import re
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
40
import sys
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
41
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
42
import bzrlib
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
43
from bzrlib.branch import Branch
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
44
import bzrlib.bzrdir as bzrdir
1393.3.3 by Jelmer Vernooij
Add test for empty commit messages.
45
from bzrlib.errors import BzrCommandError
1692.3.5 by Robert Collins
Merge integration, fixing test failure in test_too_much due to terminal width changing.
46
from bzrlib.osutils import (
47
    has_symlinks,
48
    pathjoin,
49
    rmtree,
50
    terminal_width,
51
    )
1185.31.25 by John Arbash Meinel
Renamed all of the tests from selftest/foo.py to tests/test_foo.py
52
from bzrlib.tests.HTTPTestUtil import TestCaseWithWebserver
1530.1.7 by Robert Collins
merge integration.
53
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
1513 by Robert Collins
Blackbox tests are maintained within the bzrlib.tests.blackbox directory.
54
from bzrlib.tests.blackbox import ExternalBase
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
55
from bzrlib.workingtree import WorkingTree
1142 by Martin Pool
- remove dead code from blackbox tests (pychecker)
56
1185.65.29 by Robert Collins
Implement final review suggestions.
57
1102 by Martin Pool
- merge test refactoring from robertc
58
class TestCommands(ExternalBase):
59
1185.35.14 by Aaron Bentley
Implemented nick command
60
    def test_nick_command(self):
61
        """bzr nick for viewing, setting nicknames"""
62
        os.mkdir('me.dev')
63
        os.chdir('me.dev')
64
        self.runbzr('init')
65
        nick = self.runbzr("nick",backtick=True)
66
        self.assertEqual(nick, 'me.dev\n')
67
        nick = self.runbzr("nick moo")
68
        nick = self.runbzr("nick",backtick=True)
69
        self.assertEqual(nick, 'moo\n')
70
1102 by Martin Pool
- merge test refactoring from robertc
71
    def test_invalid_commands(self):
1185.35.21 by Aaron Bentley
Changed error status to 3
72
        self.runbzr("pants", retcode=3)
73
        self.runbzr("--pants off", retcode=3)
74
        self.runbzr("diff --message foo", retcode=3)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
75
1102 by Martin Pool
- merge test refactoring from robertc
76
    def test_revert(self):
77
        self.runbzr('init')
78
79
        file('hello', 'wt').write('foo')
80
        self.runbzr('add hello')
81
        self.runbzr('commit -m setup hello')
82
83
        file('goodbye', 'wt').write('baz')
84
        self.runbzr('add goodbye')
85
        self.runbzr('commit -m setup goodbye')
1092.2.18 by Robert Collins
merge from symlink branch
86
1102 by Martin Pool
- merge test refactoring from robertc
87
        file('hello', 'wt').write('bar')
88
        file('goodbye', 'wt').write('qux')
89
        self.runbzr('revert hello')
90
        self.check_file_contents('hello', 'foo')
91
        self.check_file_contents('goodbye', 'qux')
92
        self.runbzr('revert')
93
        self.check_file_contents('goodbye', 'baz')
94
95
        os.mkdir('revertdir')
96
        self.runbzr('add revertdir')
97
        self.runbzr('commit -m f')
98
        os.rmdir('revertdir')
99
        self.runbzr('revert')
100
1185.31.49 by John Arbash Meinel
Some corrections using the new osutils.rename. **ALL TESTS PASS**
101
        if has_symlinks():
102
            os.symlink('/unlikely/to/exist', 'symlink')
103
            self.runbzr('add symlink')
104
            self.runbzr('commit -m f')
105
            os.unlink('symlink')
106
            self.runbzr('revert')
107
            self.failUnlessExists('symlink')
108
            os.unlink('symlink')
109
            os.symlink('a-different-path', 'symlink')
110
            self.runbzr('revert')
111
            self.assertEqual('/unlikely/to/exist',
112
                             os.readlink('symlink'))
113
        else:
114
            self.log("skipping revert symlink tests")
1092.2.18 by Robert Collins
merge from symlink branch
115
        
1185.5.8 by John Arbash Meinel
Fixed bzr revert with the new RevisionSpec code.
116
        file('hello', 'wt').write('xyz')
117
        self.runbzr('commit -m xyz hello')
118
        self.runbzr('revert -r 1 hello')
119
        self.check_file_contents('hello', 'foo')
120
        self.runbzr('revert hello')
121
        self.check_file_contents('hello', 'xyz')
1185.8.5 by Aaron Bentley
Fixed non-tree-root bug in branch, revert, merge
122
        os.chdir('revertdir')
123
        self.runbzr('revert')
124
        os.chdir('..')
125
1102 by Martin Pool
- merge test refactoring from robertc
126
    def test_main_version(self):
127
        """Check output from version command and master option is reasonable"""
128
        # output is intentionally passed through to stdout so that we
129
        # can see the version being tested
130
        output = self.runbzr('version', backtick=1)
131
        self.log('bzr version output:')
132
        self.log(output)
133
        self.assert_(output.startswith('bzr (bazaar-ng) '))
134
        self.assertNotEqual(output.index('Canonical'), -1)
135
        # make sure --version is consistent
136
        tmp_output = self.runbzr('--version', backtick=1)
137
        self.log('bzr --version output:')
138
        self.log(tmp_output)
139
        self.assertEquals(output, tmp_output)
906 by Martin Pool
- split out black-box ignore commands
140
1092.1.39 by Robert Collins
merge from mpool
141
    def example_branch(test):
142
        test.runbzr('init')
143
        file('hello', 'wt').write('foo')
144
        test.runbzr('add hello')
145
        test.runbzr('commit -m setup hello')
146
        file('goodbye', 'wt').write('baz')
147
        test.runbzr('add goodbye')
148
        test.runbzr('commit -m setup goodbye')
149
1185.12.1 by Aaron Bentley
Fixed export
150
    def test_export(self):
151
        os.mkdir('branch')
152
        os.chdir('branch')
153
        self.example_branch()
154
        self.runbzr('export ../latest')
155
        self.assertEqual(file('../latest/goodbye', 'rt').read(), 'baz')
156
        self.runbzr('export ../first -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
157
        self.assert_(not os.path.exists('../first/goodbye'))
1185.12.1 by Aaron Bentley
Fixed export
158
        self.assertEqual(file('../first/hello', 'rt').read(), 'foo')
159
        self.runbzr('export ../first.gz -r 1')
160
        self.assertEqual(file('../first.gz/hello', 'rt').read(), 'foo')
161
        self.runbzr('export ../first.bz2 -r 1')
162
        self.assertEqual(file('../first.bz2/hello', 'rt').read(), 'foo')
1185.31.13 by John Arbash Meinel
Updated the test to also test zip exports. Fixed some small bugs exposed by test suite.
163
164
        from tarfile import TarFile
1185.12.1 by Aaron Bentley
Fixed export
165
        self.runbzr('export ../first.tar -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
166
        self.assert_(os.path.isfile('../first.tar'))
1185.12.1 by Aaron Bentley
Fixed export
167
        tf = TarFile('../first.tar')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
168
        self.assert_('first/hello' in tf.getnames(), tf.getnames())
1185.12.1 by Aaron Bentley
Fixed export
169
        self.assertEqual(tf.extractfile('first/hello').read(), 'foo')
170
        self.runbzr('export ../first.tar.gz -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
171
        self.assert_(os.path.isfile('../first.tar.gz'))
1185.12.1 by Aaron Bentley
Fixed export
172
        self.runbzr('export ../first.tbz2 -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
173
        self.assert_(os.path.isfile('../first.tbz2'))
1185.12.1 by Aaron Bentley
Fixed export
174
        self.runbzr('export ../first.tar.bz2 -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
175
        self.assert_(os.path.isfile('../first.tar.bz2'))
1185.12.1 by Aaron Bentley
Fixed export
176
        self.runbzr('export ../first.tar.tbz2 -r 1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
177
        self.assert_(os.path.isfile('../first.tar.tbz2'))
1185.31.13 by John Arbash Meinel
Updated the test to also test zip exports. Fixed some small bugs exposed by test suite.
178
1185.12.1 by Aaron Bentley
Fixed export
179
        from bz2 import BZ2File
180
        tf = TarFile('../first.tar.tbz2', 
181
                     fileobj=BZ2File('../first.tar.tbz2', 'r'))
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
182
        self.assert_('first.tar/hello' in tf.getnames(), tf.getnames())
1185.12.1 by Aaron Bentley
Fixed export
183
        self.assertEqual(tf.extractfile('first.tar/hello').read(), 'foo')
184
        self.runbzr('export ../first2.tar -r 1 --root pizza')
185
        tf = TarFile('../first2.tar')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
186
        self.assert_('pizza/hello' in tf.getnames(), tf.getnames())
1185.12.1 by Aaron Bentley
Fixed export
187
1185.31.13 by John Arbash Meinel
Updated the test to also test zip exports. Fixed some small bugs exposed by test suite.
188
        from zipfile import ZipFile
189
        self.runbzr('export ../first.zip -r 1')
190
        self.failUnlessExists('../first.zip')
191
        zf = ZipFile('../first.zip')
192
        self.assert_('first/hello' in zf.namelist(), zf.namelist())
193
        self.assertEqual(zf.read('first/hello'), 'foo')
194
195
        self.runbzr('export ../first2.zip -r 1 --root pizza')
196
        zf = ZipFile('../first2.zip')
197
        self.assert_('pizza/hello' in zf.namelist(), zf.namelist())
198
        
199
        self.runbzr('export ../first-zip --format=zip -r 1')
200
        zf = ZipFile('../first-zip')
201
        self.assert_('first-zip/hello' in zf.namelist(), zf.namelist())
202
1185.33.33 by Martin Pool
[patch] add 'bzr inventory --kind directory'; remove 'bzr directories'
203
    def test_inventory(self):
204
        bzr = self.runbzr
205
        def output_equals(value, *args):
206
            out = self.runbzr(['inventory'] + list(args), backtick=True)
207
            self.assertEquals(out, value)
208
209
        bzr('init')
210
        open('a', 'wb').write('hello\n')
211
        os.mkdir('b')
212
213
        bzr('add a b')
214
        bzr('commit -m add')
215
216
        output_equals('a\n', '--kind', 'file')
1836.1.17 by John Arbash Meinel
move 'bzr ls' tests into their own file, and fix them up.
217
        output_equals('b\n', '--kind', 'directory')
1185.65.4 by Aaron Bentley
Fixed cat command
218
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
219
    def test_pull_verbose(self):
220
        """Pull changes from one branch to another and watch the output."""
221
222
        os.mkdir('a')
223
        os.chdir('a')
224
225
        bzr = self.runbzr
226
        self.example_branch()
227
228
        os.chdir('..')
229
        bzr('branch a b')
230
        os.chdir('b')
231
        open('b', 'wb').write('else\n')
232
        bzr('add b')
233
        bzr(['commit', '-m', 'added b'])
234
235
        os.chdir('../a')
236
        out = bzr('pull --verbose ../b', backtick=True)
237
        self.failIfEqual(out.find('Added Revisions:'), -1)
238
        self.failIfEqual(out.find('message:\n  added b'), -1)
1185.33.27 by Martin Pool
[merge] much integrated work from robert and john
239
        self.failIfEqual(out.find('added b'), -1)
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
240
1185.32.4 by John Arbash Meinel
[merge] up-to-date against bzr.dev
241
        # Check that --overwrite --verbose prints out the removed entries
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
242
        bzr('commit -m foo --unchanged')
243
        os.chdir('../b')
244
        bzr('commit -m baz --unchanged')
1185.33.27 by Martin Pool
[merge] much integrated work from robert and john
245
        bzr('pull ../a', retcode=3)
1185.32.4 by John Arbash Meinel
[merge] up-to-date against bzr.dev
246
        out = bzr('pull --overwrite --verbose ../a', backtick=1)
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
247
248
        remove_loc = out.find('Removed Revisions:')
249
        self.failIfEqual(remove_loc, -1)
250
        added_loc = out.find('Added Revisions:')
251
        self.failIfEqual(added_loc, -1)
252
253
        removed_message = out.find('message:\n  baz')
254
        self.failIfEqual(removed_message, -1)
255
        self.failUnless(remove_loc < removed_message < added_loc)
256
257
        added_message = out.find('message:\n  foo')
258
        self.failIfEqual(added_message, -1)
259
        self.failUnless(added_loc < added_message)
260
        
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
261
    def test_locations(self):
262
        """Using and remembering different locations"""
263
        os.mkdir('a')
264
        os.chdir('a')
265
        self.runbzr('init')
266
        self.runbzr('commit -m unchanged --unchanged')
1185.35.21 by Aaron Bentley
Changed error status to 3
267
        self.runbzr('pull', retcode=3)
268
        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
269
        self.runbzr('branch . ../b')
270
        os.chdir('../b')
271
        self.runbzr('pull')
272
        self.runbzr('branch . ../c')
273
        self.runbzr('pull ../c')
1185.12.12 by Aaron Bentley
Made merge use pull location or die if no branch specified.
274
        self.runbzr('merge')
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
275
        os.chdir('../a')
276
        self.runbzr('pull ../b')
277
        self.runbzr('pull')
278
        self.runbzr('pull ../c')
279
        self.runbzr('branch ../c ../d')
1692.7.6 by Martin Pool
[patch] force deletion of trees containing readonly files (alexander)
280
        rmtree('../c')
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
281
        self.runbzr('pull')
282
        os.chdir('../b')
283
        self.runbzr('pull')
284
        os.chdir('../d')
1185.35.21 by Aaron Bentley
Changed error status to 3
285
        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
286
        self.runbzr('pull ../a --remember')
287
        self.runbzr('pull')
974.1.74 by Aaron Bentley
Made pull work after remote branch has merged latest revision
288
        
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
289
    def test_unknown_command(self):
290
        """Handling of unknown command."""
291
        out, err = self.run_bzr_captured(['fluffy-badger'],
1185.35.21 by Aaron Bentley
Changed error status to 3
292
                                         retcode=3)
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
293
        self.assertEquals(out, '')
294
        err.index('unknown command')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
295
1185.35.4 by Aaron Bentley
Implemented remerge
296
    def create_conflicts(self):
297
        """Create a conflicted tree"""
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
298
        os.mkdir('base')
299
        os.chdir('base')
300
        file('hello', 'wb').write("hi world")
301
        file('answer', 'wb').write("42")
302
        self.runbzr('init')
303
        self.runbzr('add')
304
        self.runbzr('commit -m base')
305
        self.runbzr('branch . ../other')
306
        self.runbzr('branch . ../this')
307
        os.chdir('../other')
308
        file('hello', 'wb').write("Hello.")
309
        file('answer', 'wb').write("Is anyone there?")
310
        self.runbzr('commit -m other')
311
        os.chdir('../this')
312
        file('hello', 'wb').write("Hello, world")
313
        self.runbzr('mv answer question')
314
        file('question', 'wb').write("What do you get when you multiply six"
315
                                   "times nine?")
316
        self.runbzr('commit -m this')
1185.35.4 by Aaron Bentley
Implemented remerge
317
1185.65.6 by Aaron Bentley
Fixed inner merges in status
318
    def test_status(self):
319
        os.mkdir('branch1')
320
        os.chdir('branch1')
321
        self.runbzr('init')
322
        self.runbzr('commit --unchanged --message f')
323
        self.runbzr('branch . ../branch2')
324
        self.runbzr('branch . ../branch3')
325
        self.runbzr('commit --unchanged --message peter')
326
        os.chdir('../branch2')
327
        self.runbzr('merge ../branch1')
328
        self.runbzr('commit --unchanged --message pumpkin')
329
        os.chdir('../branch3')
330
        self.runbzr('merge ../branch2')
331
        message = self.capture('status')
332
1185.35.4 by Aaron Bentley
Implemented remerge
333
334
    def test_conflicts(self):
335
        """Handling of merge conflicts"""
336
        self.create_conflicts()
1476 by Robert Collins
Merge now has a retcode of 1 when conflicts occur. (Robert Collins)
337
        self.runbzr('merge ../other --show-base', retcode=1)
1185.18.1 by Aaron Bentley
Added --show-base to merge
338
        conflict_text = file('hello').read()
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
339
        self.assert_('<<<<<<<' in conflict_text)
340
        self.assert_('>>>>>>>' in conflict_text)
341
        self.assert_('=======' in conflict_text)
342
        self.assert_('|||||||' in conflict_text)
343
        self.assert_('hi world' in conflict_text)
1185.18.1 by Aaron Bentley
Added --show-base to merge
344
        self.runbzr('revert')
345
        self.runbzr('resolve --all')
1476 by Robert Collins
Merge now has a retcode of 1 when conflicts occur. (Robert Collins)
346
        self.runbzr('merge ../other', retcode=1)
1185.18.1 by Aaron Bentley
Added --show-base to merge
347
        conflict_text = file('hello').read()
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
348
        self.assert_('|||||||' not in conflict_text)
349
        self.assert_('hi world' not in conflict_text)
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
350
        result = self.runbzr('conflicts', backtick=1)
1534.10.9 by Aaron Bentley
Switched display functions to conflict_lines
351
        self.assertEquals(result, "Text conflict in hello\nText conflict in"
352
                                  " question\n")
1185.14.11 by Aaron Bentley
moved conflict listing into status and stopped monkey-patching
353
        result = self.runbzr('status', backtick=1)
1534.10.9 by Aaron Bentley
Switched display functions to conflict_lines
354
        self.assert_("conflicts:\n  Text conflict in hello\n"
355
                     "  Text conflict in question\n" in result, result)
1185.14.10 by Aaron Bentley
Commit aborts with conflicts in the tree.
356
        self.runbzr('resolve hello')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
357
        result = self.runbzr('conflicts', backtick=1)
1534.10.9 by Aaron Bentley
Switched display functions to conflict_lines
358
        self.assertEquals(result, "Text conflict in question\n")
1185.35.21 by Aaron Bentley
Changed error status to 3
359
        self.runbzr('commit -m conflicts', retcode=3)
1185.14.10 by Aaron Bentley
Commit aborts with conflicts in the tree.
360
        self.runbzr('resolve --all')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
361
        result = self.runbzr('conflicts', backtick=1)
1185.14.10 by Aaron Bentley
Commit aborts with conflicts in the tree.
362
        self.runbzr('commit -m conflicts')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
363
        self.assertEquals(result, "")
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
364
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
365
    def test_push(self):
366
        # create a source branch
367
        os.mkdir('my-branch')
368
        os.chdir('my-branch')
369
        self.example_branch()
370
371
        # with no push target, fail
1185.35.21 by Aaron Bentley
Changed error status to 3
372
        self.runbzr('push', retcode=3)
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
373
        # with an explicit target work
374
        self.runbzr('push ../output-branch')
375
        # with an implicit target work
376
        self.runbzr('push')
377
        # nothing missing
378
        self.runbzr('missing ../output-branch')
379
        # advance this branch
380
        self.runbzr('commit --unchanged -m unchanged')
381
382
        os.chdir('../output-branch')
1185.50.6 by John Arbash Meinel
Fixed a broken test from my 'push updates local working tree' fix
383
        # There is no longer a difference as long as we have
384
        # access to the working tree
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
385
        self.runbzr('diff')
1185.50.6 by John Arbash Meinel
Fixed a broken test from my 'push updates local working tree' fix
386
387
        # But we should be missing a revision
388
        self.runbzr('missing ../my-branch', retcode=1)
389
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
390
        # diverge the branches
391
        self.runbzr('commit --unchanged -m unchanged')
392
        os.chdir('../my-branch')
393
        # cannot push now
1185.35.21 by Aaron Bentley
Changed error status to 3
394
        self.runbzr('push', retcode=3)
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
395
        # and there are difference
396
        self.runbzr('missing ../output-branch', retcode=1)
1185.35.30 by Aaron Bentley
Fixed missing --verbose
397
        self.runbzr('missing --verbose ../output-branch', retcode=1)
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
398
        # but we can force a push
399
        self.runbzr('push --overwrite')
400
        # nothing missing
401
        self.runbzr('missing ../output-branch')
1495 by Robert Collins
Add a --create-prefix to the new push command.
402
        
403
        # pushing to a new dir with no parent should fail
1185.35.21 by Aaron Bentley
Changed error status to 3
404
        self.runbzr('push ../missing/new-branch', retcode=3)
1495 by Robert Collins
Add a --create-prefix to the new push command.
405
        # unless we provide --create-prefix
406
        self.runbzr('push --create-prefix ../missing/new-branch')
407
        # nothing missing
408
        self.runbzr('missing ../missing/new-branch')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
409
1185.31.3 by John Arbash Meinel
Fix ExternalCommand to not run random files in the current directory, unless it is truly in BZRPATH
410
    def test_external_command(self):
1588.1.1 by Martin Pool
Supress "hello from test-command" noise from test_external_command
411
        """Test that external commands can be run by setting the path
412
        """
413
        # We don't at present run bzr in a subprocess for blackbox tests, and so 
414
        # don't really capture stdout, only the internal python stream.
415
        # Therefore we don't use a subcommand that produces any output or does
416
        # anything -- we just check that it can be run successfully.  
1185.31.3 by John Arbash Meinel
Fix ExternalCommand to not run random files in the current directory, unless it is truly in BZRPATH
417
        cmd_name = 'test-command'
418
        if sys.platform == 'win32':
419
            cmd_name += '.bat'
420
        oldpath = os.environ.get('BZRPATH', None)
421
        bzr = self.capture
422
        try:
423
            if os.environ.has_key('BZRPATH'):
424
                del os.environ['BZRPATH']
425
426
            f = file(cmd_name, 'wb')
427
            if sys.platform == 'win32':
428
                f.write('@echo off\n')
429
            else:
430
                f.write('#!/bin/sh\n')
1588.1.1 by Martin Pool
Supress "hello from test-command" noise from test_external_command
431
            # f.write('echo Hello from test-command')
1185.31.3 by John Arbash Meinel
Fix ExternalCommand to not run random files in the current directory, unless it is truly in BZRPATH
432
            f.close()
433
            os.chmod(cmd_name, 0755)
434
435
            # It should not find the command in the local 
436
            # directory by default, since it is not in my path
1185.33.27 by Martin Pool
[merge] much integrated work from robert and john
437
            bzr(cmd_name, retcode=3)
1185.31.3 by John Arbash Meinel
Fix ExternalCommand to not run random files in the current directory, unless it is truly in BZRPATH
438
439
            # Now put it into my path
440
            os.environ['BZRPATH'] = '.'
441
442
            bzr(cmd_name)
443
444
            # Make sure empty path elements are ignored
445
            os.environ['BZRPATH'] = os.pathsep
446
1185.33.27 by Martin Pool
[merge] much integrated work from robert and john
447
            bzr(cmd_name, retcode=3)
1185.31.3 by John Arbash Meinel
Fix ExternalCommand to not run random files in the current directory, unless it is truly in BZRPATH
448
449
        finally:
450
            if oldpath:
451
                os.environ['BZRPATH'] = oldpath
452
453
1092.2.6 by Robert Collins
symlink support updated to work
454
def listdir_sorted(dir):
455
    L = os.listdir(dir)
456
    L.sort()
457
    return L
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
458
1092.2.12 by Robert Collins
merge from HEAD
459
904 by Martin Pool
- more selftest external-command fixes
460
class OldTests(ExternalBase):
1092.1.39 by Robert Collins
merge from mpool
461
    """old tests moved from ./testbzr."""
462
1102 by Martin Pool
- merge test refactoring from robertc
463
    def test_bzr(self):
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
464
        from os import chdir, mkdir
465
        from os.path import exists
466
904 by Martin Pool
- more selftest external-command fixes
467
        runbzr = self.runbzr
1185.3.26 by Martin Pool
- remove remaining external executions of bzr
468
        capture = self.capture
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
469
        progress = self.log
470
471
        progress("basic branch creation")
904 by Martin Pool
- more selftest external-command fixes
472
        mkdir('branch1')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
473
        chdir('branch1')
898 by Martin Pool
- add new runbzr method for external tests
474
        runbzr('init')
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
        self.assertEquals(capture('root').rstrip(),
1185.31.32 by John Arbash Meinel
Updated the bzr sourcecode to use bzrlib.osutils.pathjoin rather than os.path.join to enforce internal use of / instead of \
477
                          pathjoin(self.test_dir, 'branch1'))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
478
479
        progress("status of new file")
480
481
        f = file('test.txt', 'wt')
482
        f.write('hello world!\n')
483
        f.close()
484
1185.3.25 by Martin Pool
- run blackbox tests in-process
485
        self.assertEquals(capture('unknowns'), 'test.txt\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
486
1185.3.25 by Martin Pool
- run blackbox tests in-process
487
        out = capture("status")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
488
        self.assertEquals(out, 'unknown:\n  test.txt\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
489
490
        f = file('test2.txt', 'wt')
491
        f.write('goodbye cruel world...\n')
492
        f.close()
493
1185.3.25 by Martin Pool
- run blackbox tests in-process
494
        out = capture("status test.txt")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
495
        self.assertEquals(out, "unknown:\n  test.txt\n")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
496
1185.3.25 by Martin Pool
- run blackbox tests in-process
497
        out = capture("status")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
498
        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
499
500
        os.unlink('test2.txt')
501
502
        progress("command aliases")
1777.1.1 by Robert Collins
(robertc)Remove --all option from status and deprecate the underlying api.
503
        out = capture("st")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
504
        self.assertEquals(out, ("unknown:\n" "  test.txt\n"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
505
1185.3.25 by Martin Pool
- run blackbox tests in-process
506
        out = capture("stat")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
507
        self.assertEquals(out, ("unknown:\n" "  test.txt\n"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
508
509
        progress("command help")
898 by Martin Pool
- add new runbzr method for external tests
510
        runbzr("help st")
511
        runbzr("help")
512
        runbzr("help commands")
1185.35.21 by Aaron Bentley
Changed error status to 3
513
        runbzr("help slartibartfast", 3)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
514
1185.3.25 by Martin Pool
- run blackbox tests in-process
515
        out = capture("help ci")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
516
        out.index('aliases: ')
517
518
        f = file('hello.txt', 'wt')
519
        f.write('some nice new content\n')
520
        f.close()
521
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
522
        runbzr("add hello.txt")
523
        
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
524
        f = file('msg.tmp', 'wt')
1185.12.25 by Aaron Bentley
Added one-line log format
525
        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
526
        f.close()
527
898 by Martin Pool
- add new runbzr method for external tests
528
        runbzr('commit -F msg.tmp')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
529
1846.1.1 by Wouter van Heyst
Don't fail on 'bzr mv', extract move tests from OldTests.
530
        self.assertEquals(capture('revno'), '1\n')
531
        runbzr('export -r 1 export-1.tmp')
898 by Martin Pool
- add new runbzr method for external tests
532
        runbzr('export export.tmp')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
533
898 by Martin Pool
- add new runbzr method for external tests
534
        runbzr('log')
535
        runbzr('log -v')
909.1.5 by Aaron Bentley
Fixed log -v (mostly)
536
        runbzr('log -v --forward')
1185.35.21 by Aaron Bentley
Changed error status to 3
537
        runbzr('log -m', retcode=3)
1185.3.25 by Martin Pool
- run blackbox tests in-process
538
        log_out = capture('log -m commit')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
539
        self.assert_("this is my new commit\n  and" in log_out)
540
        self.assert_("rename nested" not in log_out)
541
        self.assert_('revision-id' not in log_out)
542
        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
543
1185.12.25 by Aaron Bentley
Added one-line log format
544
        log_out = capture('log --line')
1692.3.5 by Robert Collins
Merge integration, fixing test failure in test_too_much due to terminal width changing.
545
        # determine the widest line we want
546
        max_width = terminal_width() - 1
1185.12.25 by Aaron Bentley
Added one-line log format
547
        for line in log_out.splitlines():
1692.3.5 by Robert Collins
Merge integration, fixing test failure in test_too_much due to terminal width changing.
548
            self.assert_(len(line) <= max_width, len(line))
1740.2.5 by Aaron Bentley
Merge from bzr.dev
549
        self.assert_("this is my new commit and" not in log_out)
550
        self.assert_("this is my new commit" in log_out)
1185.12.25 by Aaron Bentley
Added one-line log format
551
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
552
        progress("file with spaces in name")
553
        mkdir('sub directory')
554
        file('sub directory/file with spaces ', 'wt').write('see how this works\n')
898 by Martin Pool
- add new runbzr method for external tests
555
        runbzr('add .')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
556
        runbzr('diff', retcode=1)
898 by Martin Pool
- add new runbzr method for external tests
557
        runbzr('commit -m add-spaces')
558
        runbzr('check')
559
560
        runbzr('log')
561
        runbzr('log --forward')
562
563
        runbzr('info')
1092.1.35 by Robert Collins
merge from mpool up to rev 1110
564
1092.2.6 by Robert Collins
symlink support updated to work
565
        if has_symlinks():
566
            progress("symlinks")
567
            mkdir('symlinks')
568
            chdir('symlinks')
569
            runbzr('init')
570
            os.symlink("NOWHERE1", "link1")
571
            runbzr('add link1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
572
            self.assertEquals(self.capture('unknowns'), '')
1092.2.6 by Robert Collins
symlink support updated to work
573
            runbzr(['commit', '-m', '1: added symlink link1'])
574
    
575
            mkdir('d1')
576
            runbzr('add d1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
577
            self.assertEquals(self.capture('unknowns'), '')
1092.2.6 by Robert Collins
symlink support updated to work
578
            os.symlink("NOWHERE2", "d1/link2")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
579
            self.assertEquals(self.capture('unknowns'), 'd1/link2\n')
1092.2.6 by Robert Collins
symlink support updated to work
580
            # is d1/link2 found when adding d1
581
            runbzr('add d1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
582
            self.assertEquals(self.capture('unknowns'), '')
1092.2.6 by Robert Collins
symlink support updated to work
583
            os.symlink("NOWHERE3", "d1/link3")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
584
            self.assertEquals(self.capture('unknowns'), 'd1/link3\n')
1092.2.6 by Robert Collins
symlink support updated to work
585
            runbzr(['commit', '-m', '2: added dir, symlink'])
586
    
587
            runbzr('rename d1 d2')
588
            runbzr('move d2/link2 .')
589
            runbzr('move link1 d2')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
590
            self.assertEquals(os.readlink("./link2"), "NOWHERE2")
591
            self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
1092.2.6 by Robert Collins
symlink support updated to work
592
            runbzr('add d2/link3')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
593
            runbzr('diff', retcode=1)
1092.2.6 by Robert Collins
symlink support updated to work
594
            runbzr(['commit', '-m', '3: rename of dir, move symlinks, add link3'])
595
    
596
            os.unlink("link2")
597
            os.symlink("TARGET 2", "link2")
598
            os.unlink("d2/link1")
599
            os.symlink("TARGET 1", "d2/link1")
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
600
            runbzr('diff', retcode=1)
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
601
            self.assertEquals(self.capture("relpath d2/link1"), "d2/link1\n")
1092.2.6 by Robert Collins
symlink support updated to work
602
            runbzr(['commit', '-m', '4: retarget of two links'])
603
    
604
            runbzr('remove d2/link1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
605
            self.assertEquals(self.capture('unknowns'), 'd2/link1\n')
1092.2.20 by Robert Collins
symlink and weaves, whaddya know
606
            runbzr(['commit', '-m', '5: remove d2/link1'])
1424 by Robert Collins
add rm alias to remove
607
            # try with the rm alias
608
            runbzr('add d2/link1')
609
            runbzr(['commit', '-m', '6: add d2/link1'])
610
            runbzr('rm d2/link1')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
611
            self.assertEquals(self.capture('unknowns'), 'd2/link1\n')
1424 by Robert Collins
add rm alias to remove
612
            runbzr(['commit', '-m', '7: remove d2/link1'])
1092.2.6 by Robert Collins
symlink support updated to work
613
    
614
            os.mkdir("d1")
615
            runbzr('add d1')
616
            runbzr('rename d2/link3 d1/link3new')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
617
            self.assertEquals(self.capture('unknowns'), 'd2/link1\n')
1424 by Robert Collins
add rm alias to remove
618
            runbzr(['commit', '-m', '8: remove d2/link1, move/rename link3'])
1092.2.6 by Robert Collins
symlink support updated to work
619
            
620
            runbzr(['check'])
621
            
622
            runbzr(['export', '-r', '1', 'exp1.tmp'])
623
            chdir("exp1.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
624
            self.assertEquals(listdir_sorted("."), [ "link1" ])
625
            self.assertEquals(os.readlink("link1"), "NOWHERE1")
1092.2.6 by Robert Collins
symlink support updated to work
626
            chdir("..")
627
            
628
            runbzr(['export', '-r', '2', 'exp2.tmp'])
629
            chdir("exp2.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
630
            self.assertEquals(listdir_sorted("."), [ "d1", "link1" ])
1092.2.6 by Robert Collins
symlink support updated to work
631
            chdir("..")
632
            
633
            runbzr(['export', '-r', '3', 'exp3.tmp'])
634
            chdir("exp3.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
635
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
636
            self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
637
            self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
638
            self.assertEquals(os.readlink("link2")   , "NOWHERE2")
1092.2.6 by Robert Collins
symlink support updated to work
639
            chdir("..")
640
            
641
            runbzr(['export', '-r', '4', 'exp4.tmp'])
642
            chdir("exp4.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
643
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
644
            self.assertEquals(os.readlink("d2/link1"), "TARGET 1")
645
            self.assertEquals(os.readlink("link2")   , "TARGET 2")
646
            self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
1092.2.6 by Robert Collins
symlink support updated to work
647
            chdir("..")
648
            
649
            runbzr(['export', '-r', '5', 'exp5.tmp'])
650
            chdir("exp5.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
651
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
652
            self.assert_(os.path.islink("link2"))
653
            self.assert_(listdir_sorted("d2")== [ "link3" ])
1092.2.6 by Robert Collins
symlink support updated to work
654
            chdir("..")
655
            
1424 by Robert Collins
add rm alias to remove
656
            runbzr(['export', '-r', '8', 'exp6.tmp'])
1092.2.6 by Robert Collins
symlink support updated to work
657
            chdir("exp6.tmp")
1424 by Robert Collins
add rm alias to remove
658
            self.assertEqual(listdir_sorted("."), [ "d1", "d2", "link2"])
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
659
            self.assertEquals(listdir_sorted("d1"), [ "link3new" ])
660
            self.assertEquals(listdir_sorted("d2"), [])
661
            self.assertEquals(os.readlink("d1/link3new"), "NOWHERE3")
1092.2.6 by Robert Collins
symlink support updated to work
662
            chdir("..")
663
        else:
664
            progress("skipping symlink tests")
1400.1.1 by Robert Collins
implement a basic test for the ui branch command from http servers
665
666
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
667
class RemoteTests(object):
1400.1.1 by Robert Collins
implement a basic test for the ui branch command from http servers
668
    """Test bzr ui commands against remote branches."""
669
670
    def test_branch(self):
671
        os.mkdir('from')
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
672
        wt = self.make_branch_and_tree('from')
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
673
        branch = wt.branch
674
        wt.commit('empty commit for nonsense', allow_pointless=True)
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
675
        url = self.get_readonly_url('from')
1400.1.1 by Robert Collins
implement a basic test for the ui branch command from http servers
676
        self.run_bzr('branch', url, 'to')
677
        branch = Branch.open('to')
678
        self.assertEqual(1, len(branch.revision_history()))
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
679
        # the branch should be set in to to from
680
        self.assertEqual(url + '/', branch.get_parent())
1185.16.48 by mbp at sourcefrog
- more refactoring of and tests for option parsing
681
1442.1.64 by Robert Collins
Branch.open_containing now returns a tuple (Branch, relative-path).
682
    def test_log(self):
683
        self.build_tree(['branch/', 'branch/file'])
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
684
        self.capture('init branch')
685
        self.capture('add branch/file')
686
        self.capture('commit -m foo branch')
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
687
        url = self.get_readonly_url('branch/file')
1442.1.64 by Robert Collins
Branch.open_containing now returns a tuple (Branch, relative-path).
688
        output = self.capture('log %s' % url)
1185.35.17 by Aaron Bentley
Added branch nicks to long-format logs
689
        self.assertEqual(8, len(output.split('\n')))
1442.1.64 by Robert Collins
Branch.open_containing now returns a tuple (Branch, relative-path).
690
        
1510 by Robert Collins
Merge from mpool, adjusting check to retain HTTP support.
691
    def test_check(self):
692
        self.build_tree(['branch/', 'branch/file'])
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
693
        self.capture('init branch')
694
        self.capture('add branch/file')
695
        self.capture('commit -m foo branch')
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
696
        url = self.get_readonly_url('branch/')
1510 by Robert Collins
Merge from mpool, adjusting check to retain HTTP support.
697
        self.run_bzr('check', url)
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
698
    
1563.1.6 by Robert Collins
Add tests for sftp push, and NonLocalTets for BzrDir.create_branch_convenience, before fixing the failure of it to work on non-local urls.
699
    def test_push(self):
700
        # create a source branch
701
        os.mkdir('my-branch')
702
        os.chdir('my-branch')
703
        self.run_bzr('init')
704
        file('hello', 'wt').write('foo')
705
        self.run_bzr('add', 'hello')
706
        self.run_bzr('commit', '-m', 'setup')
707
708
        # with an explicit target work
709
        self.run_bzr('push', self.get_url('output-branch'))
710
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
711
    
712
class HTTPTests(TestCaseWithWebserver, RemoteTests):
713
    """Test various commands against a HTTP server."""
714
    
715
    
716
class SFTPTestsAbsolute(TestCaseWithSFTPServer, RemoteTests):
717
    """Test various commands against a SFTP server using abs paths."""
718
719
    
720
class SFTPTestsAbsoluteSibling(TestCaseWithSFTPServer, RemoteTests):
721
    """Test various commands against a SFTP server using abs paths."""
722
723
    def setUp(self):
724
        super(SFTPTestsAbsoluteSibling, self).setUp()
725
        self._override_home = '/dev/noone/runs/tests/here'
726
727
    
728
class SFTPTestsRelative(TestCaseWithSFTPServer, RemoteTests):
729
    """Test various commands against a SFTP server using homedir rel paths."""
730
731
    def setUp(self):
732
        super(SFTPTestsRelative, self).setUp()
733
        self._get_remote_is_absolute = False