/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
1
# Copyright (C) 2005, 2007 Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
720 by Martin Pool
- start moving external tests into the testsuite framework
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
7
#
720 by Martin Pool
- start moving external tests into the testsuite framework
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
720 by Martin Pool
- start moving external tests into the testsuite framework
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
720 by Martin Pool
- start moving external tests into the testsuite framework
16
1185.46.9 by Aaron Bentley
Added verbose option to bzr add, to list all ignored files.
17
# Mr. Smoketoomuch: I'm sorry?
18
# Mr. Bounder: You'd better cut down a little then.
19
# Mr. Smoketoomuch: Oh, I see! Smoke too much so I'd better cut down a little
20
#                   then!
720 by Martin Pool
- start moving external tests into the testsuite framework
21
22
"""Black-box tests for bzr.
23
24
These check that it behaves properly when it's invoked through the regular
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
25
command-line interface. This doesn't actually run a new interpreter but
1393.1.45 by Martin Pool
doc
26
rather starts again from the run_bzr function.
720 by Martin Pool
- start moving external tests into the testsuite framework
27
"""
28
1393.1.45 by Martin Pool
doc
29
1185.33.14 by Martin Pool
doc
30
# XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
31
# 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.
32
# them into small suites in bzrlib.tests.blackbox.test_FOO for the particular
33
# UI command/aspect that is being tested.
1185.33.14 by Martin Pool
doc
34
35
1185.1.25 by Robert Collins
merge David Clymer's patch for TestCaseInTestDir.runcmd
36
from cStringIO import StringIO
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
37
import os
1185.16.43 by Martin Pool
- clean up handling of option objects
38
import re
974.1.26 by aaron.bentley at utoronto
merged mbp@sourcefrog.net-20050817233101-0939da1cf91f2472
39
import sys
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
40
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
41
import bzrlib
1996.3.18 by John Arbash Meinel
Now that mkdtemp and rmtree are lazy, they should not be directly improted.
42
from bzrlib import (
43
    osutils,
44
    )
1161 by Martin Pool
- add test that 'bzr add' reports the files as they're added
45
from bzrlib.branch import Branch
1393.3.3 by Jelmer Vernooij
Add test for empty commit messages.
46
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.
47
from bzrlib.osutils import (
48
    has_symlinks,
49
    pathjoin,
50
    terminal_width,
51
    )
2929.3.8 by Vincent Ladeuil
Rename bzrlib/test/HTTPTestUtils.py to bzrlib/tests/http_utils.py and fix uses.
52
from bzrlib.tests.http_utils 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
60
    def test_invalid_commands(self):
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
61
        self.run_bzr("pants", retcode=3)
62
        self.run_bzr("--pants off", retcode=3)
63
        self.run_bzr("diff --message foo", retcode=3)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
64
1102 by Martin Pool
- merge test refactoring from robertc
65
    def test_revert(self):
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
66
        self.run_bzr('init')
1102 by Martin Pool
- merge test refactoring from robertc
67
68
        file('hello', 'wt').write('foo')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
69
        self.run_bzr('add hello')
70
        self.run_bzr('commit -m setup hello')
1102 by Martin Pool
- merge test refactoring from robertc
71
72
        file('goodbye', 'wt').write('baz')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
73
        self.run_bzr('add goodbye')
74
        self.run_bzr('commit -m setup goodbye')
1092.2.18 by Robert Collins
merge from symlink branch
75
1102 by Martin Pool
- merge test refactoring from robertc
76
        file('hello', 'wt').write('bar')
77
        file('goodbye', 'wt').write('qux')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
78
        self.run_bzr('revert hello')
1102 by Martin Pool
- merge test refactoring from robertc
79
        self.check_file_contents('hello', 'foo')
80
        self.check_file_contents('goodbye', 'qux')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
81
        self.run_bzr('revert')
1102 by Martin Pool
- merge test refactoring from robertc
82
        self.check_file_contents('goodbye', 'baz')
83
84
        os.mkdir('revertdir')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
85
        self.run_bzr('add revertdir')
86
        self.run_bzr('commit -m f')
1102 by Martin Pool
- merge test refactoring from robertc
87
        os.rmdir('revertdir')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
88
        self.run_bzr('revert')
1102 by Martin Pool
- merge test refactoring from robertc
89
1185.31.49 by John Arbash Meinel
Some corrections using the new osutils.rename. **ALL TESTS PASS**
90
        if has_symlinks():
91
            os.symlink('/unlikely/to/exist', 'symlink')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
92
            self.run_bzr('add symlink')
93
            self.run_bzr('commit -m f')
1185.31.49 by John Arbash Meinel
Some corrections using the new osutils.rename. **ALL TESTS PASS**
94
            os.unlink('symlink')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
95
            self.run_bzr('revert')
1185.31.49 by John Arbash Meinel
Some corrections using the new osutils.rename. **ALL TESTS PASS**
96
            self.failUnlessExists('symlink')
97
            os.unlink('symlink')
98
            os.symlink('a-different-path', 'symlink')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
99
            self.run_bzr('revert')
1185.31.49 by John Arbash Meinel
Some corrections using the new osutils.rename. **ALL TESTS PASS**
100
            self.assertEqual('/unlikely/to/exist',
101
                             os.readlink('symlink'))
102
        else:
103
            self.log("skipping revert symlink tests")
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
104
1185.5.8 by John Arbash Meinel
Fixed bzr revert with the new RevisionSpec code.
105
        file('hello', 'wt').write('xyz')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
106
        self.run_bzr('commit -m xyz hello')
107
        self.run_bzr('revert -r 1 hello')
1185.5.8 by John Arbash Meinel
Fixed bzr revert with the new RevisionSpec code.
108
        self.check_file_contents('hello', 'foo')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
109
        self.run_bzr('revert hello')
1185.5.8 by John Arbash Meinel
Fixed bzr revert with the new RevisionSpec code.
110
        self.check_file_contents('hello', 'xyz')
1185.8.5 by Aaron Bentley
Fixed non-tree-root bug in branch, revert, merge
111
        os.chdir('revertdir')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
112
        self.run_bzr('revert')
1185.8.5 by Aaron Bentley
Fixed non-tree-root bug in branch, revert, merge
113
        os.chdir('..')
114
1102 by Martin Pool
- merge test refactoring from robertc
115
    def test_main_version(self):
116
        """Check output from version command and master option is reasonable"""
117
        # output is intentionally passed through to stdout so that we
118
        # can see the version being tested
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
119
        output = self.run_bzr('version')[0]
1102 by Martin Pool
- merge test refactoring from robertc
120
        self.log('bzr version output:')
121
        self.log(output)
1711.2.112 by John Arbash Meinel
Fix broken test
122
        self.assert_(output.startswith('Bazaar (bzr) '))
1102 by Martin Pool
- merge test refactoring from robertc
123
        self.assertNotEqual(output.index('Canonical'), -1)
124
        # make sure --version is consistent
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
125
        tmp_output = self.run_bzr('--version')[0]
1102 by Martin Pool
- merge test refactoring from robertc
126
        self.assertEquals(output, tmp_output)
906 by Martin Pool
- split out black-box ignore commands
127
1092.1.39 by Robert Collins
merge from mpool
128
    def example_branch(test):
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
129
        test.run_bzr('init')
1092.1.39 by Robert Collins
merge from mpool
130
        file('hello', 'wt').write('foo')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
131
        test.run_bzr('add hello')
132
        test.run_bzr('commit -m setup hello')
1092.1.39 by Robert Collins
merge from mpool
133
        file('goodbye', 'wt').write('baz')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
134
        test.run_bzr('add goodbye')
135
        test.run_bzr('commit -m setup goodbye')
1092.1.39 by Robert Collins
merge from mpool
136
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
137
    def test_pull_verbose(self):
138
        """Pull changes from one branch to another and watch the output."""
139
140
        os.mkdir('a')
141
        os.chdir('a')
142
143
        self.example_branch()
144
145
        os.chdir('..')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
146
        self.run_bzr('branch a b')
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
147
        os.chdir('b')
148
        open('b', 'wb').write('else\n')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
149
        self.run_bzr('add b')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
150
        self.run_bzr(['commit', '-m', 'added b'])
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
151
152
        os.chdir('../a')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
153
        out = self.run_bzr('pull --verbose ../b')[0]
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
154
        self.failIfEqual(out.find('Added Revisions:'), -1)
155
        self.failIfEqual(out.find('message:\n  added b'), -1)
1185.33.27 by Martin Pool
[merge] much integrated work from robert and john
156
        self.failIfEqual(out.find('added b'), -1)
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
157
1185.32.4 by John Arbash Meinel
[merge] up-to-date against bzr.dev
158
        # Check that --overwrite --verbose prints out the removed entries
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
159
        self.run_bzr('commit -m foo --unchanged')
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
160
        os.chdir('../b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
161
        self.run_bzr('commit -m baz --unchanged')
162
        self.run_bzr('pull ../a', retcode=3)
163
        out = self.run_bzr('pull --overwrite --verbose ../a')[0]
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
164
165
        remove_loc = out.find('Removed Revisions:')
166
        self.failIfEqual(remove_loc, -1)
167
        added_loc = out.find('Added Revisions:')
168
        self.failIfEqual(added_loc, -1)
169
170
        removed_message = out.find('message:\n  baz')
171
        self.failIfEqual(removed_message, -1)
172
        self.failUnless(remove_loc < removed_message < added_loc)
173
174
        added_message = out.find('message:\n  foo')
175
        self.failIfEqual(added_message, -1)
176
        self.failUnless(added_loc < added_message)
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
177
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
178
    def test_locations(self):
179
        """Using and remembering different locations"""
180
        os.mkdir('a')
181
        os.chdir('a')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
182
        self.run_bzr('init')
183
        self.run_bzr('commit -m unchanged --unchanged')
184
        self.run_bzr('pull', retcode=3)
185
        self.run_bzr('merge', retcode=3)
186
        self.run_bzr('branch . ../b')
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
187
        os.chdir('../b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
188
        self.run_bzr('pull')
189
        self.run_bzr('branch . ../c')
190
        self.run_bzr('pull ../c')
191
        self.run_bzr('merge')
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
192
        os.chdir('../a')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
193
        self.run_bzr('pull ../b')
194
        self.run_bzr('pull')
195
        self.run_bzr('pull ../c')
196
        self.run_bzr('branch ../c ../d')
1996.3.18 by John Arbash Meinel
Now that mkdtemp and rmtree are lazy, they should not be directly improted.
197
        osutils.rmtree('../c')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
198
        self.run_bzr('pull')
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
199
        os.chdir('../b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
200
        self.run_bzr('pull')
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
201
        os.chdir('../d')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
202
        self.run_bzr('pull', retcode=3)
203
        self.run_bzr('pull ../a --remember')
204
        self.run_bzr('pull')
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
205
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
206
    def test_unknown_command(self):
207
        """Handling of unknown command."""
2552.2.4 by Vincent Ladeuil
Merge bzr.dev and resolve conflits. (good use case for an enhanced merge
208
        out, err = self.run_bzr('fluffy-badger', retcode=3)
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
209
        self.assertEquals(out, '')
210
        err.index('unknown command')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
211
1185.35.4 by Aaron Bentley
Implemented remerge
212
    def create_conflicts(self):
213
        """Create a conflicted tree"""
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
214
        os.mkdir('base')
215
        os.chdir('base')
216
        file('hello', 'wb').write("hi world")
217
        file('answer', 'wb').write("42")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
218
        self.run_bzr('init')
219
        self.run_bzr('add')
220
        self.run_bzr('commit -m base')
221
        self.run_bzr('branch . ../other')
222
        self.run_bzr('branch . ../this')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
223
        os.chdir('../other')
224
        file('hello', 'wb').write("Hello.")
225
        file('answer', 'wb').write("Is anyone there?")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
226
        self.run_bzr('commit -m other')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
227
        os.chdir('../this')
228
        file('hello', 'wb').write("Hello, world")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
229
        self.run_bzr('mv answer question')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
230
        file('question', 'wb').write("What do you get when you multiply six"
231
                                   "times nine?")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
232
        self.run_bzr('commit -m this')
1185.35.4 by Aaron Bentley
Implemented remerge
233
1185.65.6 by Aaron Bentley
Fixed inner merges in status
234
    def test_status(self):
235
        os.mkdir('branch1')
236
        os.chdir('branch1')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
237
        self.run_bzr('init')
238
        self.run_bzr('commit --unchanged --message f')
239
        self.run_bzr('branch . ../branch2')
240
        self.run_bzr('branch . ../branch3')
241
        self.run_bzr('commit --unchanged --message peter')
1185.65.6 by Aaron Bentley
Fixed inner merges in status
242
        os.chdir('../branch2')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
243
        self.run_bzr('merge ../branch1')
244
        self.run_bzr('commit --unchanged --message pumpkin')
1185.65.6 by Aaron Bentley
Fixed inner merges in status
245
        os.chdir('../branch3')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
246
        self.run_bzr('merge ../branch2')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
247
        message = self.run_bzr('status')[0]
1185.65.6 by Aaron Bentley
Fixed inner merges in status
248
1185.35.4 by Aaron Bentley
Implemented remerge
249
250
    def test_conflicts(self):
251
        """Handling of merge conflicts"""
252
        self.create_conflicts()
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
253
        self.run_bzr('merge ../other --show-base', retcode=1)
1185.18.1 by Aaron Bentley
Added --show-base to merge
254
        conflict_text = file('hello').read()
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
255
        self.assert_('<<<<<<<' in conflict_text)
256
        self.assert_('>>>>>>>' in conflict_text)
257
        self.assert_('=======' in conflict_text)
258
        self.assert_('|||||||' in conflict_text)
259
        self.assert_('hi world' in conflict_text)
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
260
        self.run_bzr('revert')
261
        self.run_bzr('resolve --all')
262
        self.run_bzr('merge ../other', retcode=1)
1185.18.1 by Aaron Bentley
Added --show-base to merge
263
        conflict_text = file('hello').read()
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
264
        self.assert_('|||||||' not in conflict_text)
265
        self.assert_('hi world' not in conflict_text)
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
266
        result = self.run_bzr('conflicts')[0]
1534.10.9 by Aaron Bentley
Switched display functions to conflict_lines
267
        self.assertEquals(result, "Text conflict in hello\nText conflict in"
268
                                  " question\n")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
269
        result = self.run_bzr('status')[0]
1534.10.9 by Aaron Bentley
Switched display functions to conflict_lines
270
        self.assert_("conflicts:\n  Text conflict in hello\n"
271
                     "  Text conflict in question\n" in result, result)
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
272
        self.run_bzr('resolve hello')
273
        result = self.run_bzr('conflicts')[0]
1534.10.9 by Aaron Bentley
Switched display functions to conflict_lines
274
        self.assertEquals(result, "Text conflict in question\n")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
275
        self.run_bzr('commit -m conflicts', retcode=3)
276
        self.run_bzr('resolve --all')
277
        result = self.run_bzr('conflicts')[0]
278
        self.run_bzr('commit -m conflicts')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
279
        self.assertEquals(result, "")
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
280
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
281
    def test_push(self):
282
        # create a source branch
4523.4.15 by John Arbash Meinel
First pass at marking tests that are known to fail.
283
        self.thisFailsStrictLockCheck()
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
284
        os.mkdir('my-branch')
285
        os.chdir('my-branch')
286
        self.example_branch()
287
288
        # with no push target, fail
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
289
        self.run_bzr('push', retcode=3)
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
290
        # with an explicit target work
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
291
        self.run_bzr('push ../output-branch')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
292
        # with an implicit target work
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
293
        self.run_bzr('push')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
294
        # nothing missing
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
295
        self.run_bzr('missing ../output-branch')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
296
        # advance this branch
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
297
        self.run_bzr('commit --unchanged -m unchanged')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
298
299
        os.chdir('../output-branch')
1185.50.6 by John Arbash Meinel
Fixed a broken test from my 'push updates local working tree' fix
300
        # There is no longer a difference as long as we have
301
        # access to the working tree
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
302
        self.run_bzr('diff')
1185.50.6 by John Arbash Meinel
Fixed a broken test from my 'push updates local working tree' fix
303
304
        # But we should be missing a revision
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
305
        self.run_bzr('missing ../my-branch', retcode=1)
1185.50.6 by John Arbash Meinel
Fixed a broken test from my 'push updates local working tree' fix
306
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
307
        # diverge the branches
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
308
        self.run_bzr('commit --unchanged -m unchanged')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
309
        os.chdir('../my-branch')
310
        # cannot push now
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
311
        self.run_bzr('push', retcode=3)
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
312
        # and there are difference
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
313
        self.run_bzr('missing ../output-branch', retcode=1)
314
        self.run_bzr('missing --verbose ../output-branch', retcode=1)
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
315
        # but we can force a push
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
316
        self.run_bzr('push --overwrite')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
317
        # nothing missing
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
318
        self.run_bzr('missing ../output-branch')
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
319
1495 by Robert Collins
Add a --create-prefix to the new push command.
320
        # pushing to a new dir with no parent should fail
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
321
        self.run_bzr('push ../missing/new-branch', retcode=3)
1495 by Robert Collins
Add a --create-prefix to the new push command.
322
        # unless we provide --create-prefix
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
323
        self.run_bzr('push --create-prefix ../missing/new-branch')
1495 by Robert Collins
Add a --create-prefix to the new push command.
324
        # nothing missing
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
325
        self.run_bzr('missing ../missing/new-branch')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
326
1185.31.3 by John Arbash Meinel
Fix ExternalCommand to not run random files in the current directory, unless it is truly in BZRPATH
327
    def test_external_command(self):
1588.1.1 by Martin Pool
Supress "hello from test-command" noise from test_external_command
328
        """Test that external commands can be run by setting the path
329
        """
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
330
        # We don't at present run bzr in a subprocess for blackbox tests, and so
1588.1.1 by Martin Pool
Supress "hello from test-command" noise from test_external_command
331
        # don't really capture stdout, only the internal python stream.
332
        # Therefore we don't use a subcommand that produces any output or does
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
333
        # 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
334
        cmd_name = 'test-command'
335
        if sys.platform == 'win32':
336
            cmd_name += '.bat'
337
        oldpath = os.environ.get('BZRPATH', None)
338
        try:
1963.2.1 by Robey Pointer
remove usage of has_key()
339
            if 'BZRPATH' in os.environ:
1185.31.3 by John Arbash Meinel
Fix ExternalCommand to not run random files in the current directory, unless it is truly in BZRPATH
340
                del os.environ['BZRPATH']
341
342
            f = file(cmd_name, 'wb')
343
            if sys.platform == 'win32':
344
                f.write('@echo off\n')
345
            else:
346
                f.write('#!/bin/sh\n')
1588.1.1 by Martin Pool
Supress "hello from test-command" noise from test_external_command
347
            # 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
348
            f.close()
349
            os.chmod(cmd_name, 0755)
350
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
351
            # It should not find the command in the local
1185.31.3 by John Arbash Meinel
Fix ExternalCommand to not run random files in the current directory, unless it is truly in BZRPATH
352
            # directory by default, since it is not in my path
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
353
            self.run_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
354
355
            # Now put it into my path
356
            os.environ['BZRPATH'] = '.'
357
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
358
            self.run_bzr(cmd_name)
1185.31.3 by John Arbash Meinel
Fix ExternalCommand to not run random files in the current directory, unless it is truly in BZRPATH
359
360
            # Make sure empty path elements are ignored
361
            os.environ['BZRPATH'] = os.pathsep
362
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
363
            self.run_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
364
365
        finally:
366
            if oldpath:
367
                os.environ['BZRPATH'] = oldpath
368
369
1092.2.6 by Robert Collins
symlink support updated to work
370
def listdir_sorted(dir):
371
    L = os.listdir(dir)
372
    L.sort()
373
    return L
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
374
1092.2.12 by Robert Collins
merge from HEAD
375
904 by Martin Pool
- more selftest external-command fixes
376
class OldTests(ExternalBase):
1092.1.39 by Robert Collins
merge from mpool
377
    """old tests moved from ./testbzr."""
378
1102 by Martin Pool
- merge test refactoring from robertc
379
    def test_bzr(self):
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
380
        from os import chdir, mkdir
381
        from os.path import exists
382
383
        progress = self.log
384
385
        progress("basic branch creation")
904 by Martin Pool
- more selftest external-command fixes
386
        mkdir('branch1')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
387
        chdir('branch1')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
388
        self.run_bzr('init')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
389
2823.1.6 by Vincent Ladeuil
Redo minor fix.
390
        self.assertIsSameRealPath(self.run_bzr('root')[0].rstrip(),
391
                                  pathjoin(self.test_dir, 'branch1'))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
392
393
        progress("status of new file")
394
395
        f = file('test.txt', 'wt')
396
        f.write('hello world!\n')
397
        f.close()
398
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
399
        self.assertEquals(self.run_bzr('unknowns')[0], 'test.txt\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
400
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
401
        out = self.run_bzr("status")[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
402
        self.assertEquals(out, 'unknown:\n  test.txt\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
403
404
        f = file('test2.txt', 'wt')
405
        f.write('goodbye cruel world...\n')
406
        f.close()
407
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
408
        out = self.run_bzr("status test.txt")[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
409
        self.assertEquals(out, "unknown:\n  test.txt\n")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
410
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
411
        out = self.run_bzr("status")[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
412
        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
413
414
        os.unlink('test2.txt')
415
416
        progress("command aliases")
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
417
        out = self.run_bzr("st")[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
418
        self.assertEquals(out, ("unknown:\n" "  test.txt\n"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
419
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
420
        out = self.run_bzr("stat")[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
421
        self.assertEquals(out, ("unknown:\n" "  test.txt\n"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
422
423
        progress("command help")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
424
        self.run_bzr("help st")
425
        self.run_bzr("help")
426
        self.run_bzr("help commands")
427
        self.run_bzr("help slartibartfast", retcode=3)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
428
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
429
        out = self.run_bzr("help ci")[0]
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
430
        out.index('Aliases:  ci, checkin\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
431
432
        f = file('hello.txt', 'wt')
433
        f.write('some nice new content\n')
434
        f.close()
435
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
436
        self.run_bzr("add hello.txt")
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
437
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
438
        f = file('msg.tmp', 'wt')
1185.12.25 by Aaron Bentley
Added one-line log format
439
        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
440
        f.close()
441
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
442
        self.run_bzr('commit -F msg.tmp')
443
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
444
        self.assertEquals(self.run_bzr('revno')[0], '1\n')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
445
        self.run_bzr('export -r 1 export-1.tmp')
446
        self.run_bzr('export export.tmp')
447
448
        self.run_bzr('log')
449
        self.run_bzr('log -v')
450
        self.run_bzr('log -v --forward')
451
        self.run_bzr('log -m', retcode=3)
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
452
        log_out = self.run_bzr('log -m commit')[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
453
        self.assert_("this is my new commit\n  and" in log_out)
454
        self.assert_("rename nested" not in log_out)
455
        self.assert_('revision-id' not in log_out)
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
456
        self.assert_('revision-id' in self.run_bzr('log --show-ids -m commit')[0])
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
457
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
458
        log_out = self.run_bzr('log --line')[0]
1692.3.5 by Robert Collins
Merge integration, fixing test failure in test_too_much due to terminal width changing.
459
        # determine the widest line we want
460
        max_width = terminal_width() - 1
1185.12.25 by Aaron Bentley
Added one-line log format
461
        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.
462
            self.assert_(len(line) <= max_width, len(line))
1740.2.5 by Aaron Bentley
Merge from bzr.dev
463
        self.assert_("this is my new commit and" not in log_out)
464
        self.assert_("this is my new commit" in log_out)
1185.12.25 by Aaron Bentley
Added one-line log format
465
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
466
        progress("file with spaces in name")
467
        mkdir('sub directory')
468
        file('sub directory/file with spaces ', 'wt').write('see how this works\n')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
469
        self.run_bzr('add .')
470
        self.run_bzr('diff', retcode=1)
471
        self.run_bzr('commit -m add-spaces')
472
        self.run_bzr('check')
473
474
        self.run_bzr('log')
475
        self.run_bzr('log --forward')
476
477
        self.run_bzr('info')
1092.1.35 by Robert Collins
merge from mpool up to rev 1110
478
1092.2.6 by Robert Collins
symlink support updated to work
479
        if has_symlinks():
480
            progress("symlinks")
481
            mkdir('symlinks')
482
            chdir('symlinks')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
483
            self.run_bzr('init')
1092.2.6 by Robert Collins
symlink support updated to work
484
            os.symlink("NOWHERE1", "link1")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
485
            self.run_bzr('add link1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
486
            self.assertEquals(self.run_bzr('unknowns')[0], '')
487
            self.run_bzr(['commit', '-m', '1: added symlink link1'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
488
1092.2.6 by Robert Collins
symlink support updated to work
489
            mkdir('d1')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
490
            self.run_bzr('add d1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
491
            self.assertEquals(self.run_bzr('unknowns')[0], '')
1092.2.6 by Robert Collins
symlink support updated to work
492
            os.symlink("NOWHERE2", "d1/link2")
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
493
            self.assertEquals(self.run_bzr('unknowns')[0], 'd1/link2\n')
1092.2.6 by Robert Collins
symlink support updated to work
494
            # is d1/link2 found when adding d1
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
495
            self.run_bzr('add d1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
496
            self.assertEquals(self.run_bzr('unknowns')[0], '')
1092.2.6 by Robert Collins
symlink support updated to work
497
            os.symlink("NOWHERE3", "d1/link3")
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
498
            self.assertEquals(self.run_bzr('unknowns')[0], 'd1/link3\n')
499
            self.run_bzr(['commit', '-m', '2: added dir, symlink'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
500
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
501
            self.run_bzr('rename d1 d2')
502
            self.run_bzr('move d2/link2 .')
503
            self.run_bzr('move link1 d2')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
504
            self.assertEquals(os.readlink("./link2"), "NOWHERE2")
505
            self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
506
            self.run_bzr('add d2/link3')
507
            self.run_bzr('diff', retcode=1)
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
508
            self.run_bzr(['commit', '-m',
509
                          '3: rename of dir, move symlinks, add link3'])
510
1092.2.6 by Robert Collins
symlink support updated to work
511
            os.unlink("link2")
512
            os.symlink("TARGET 2", "link2")
513
            os.unlink("d2/link1")
514
            os.symlink("TARGET 1", "d2/link1")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
515
            self.run_bzr('diff', retcode=1)
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
516
            self.assertEquals(self.run_bzr("relpath d2/link1")[0], "d2/link1\n")
517
            self.run_bzr(['commit', '-m', '4: retarget of two links'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
518
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
519
            self.run_bzr('remove --keep d2/link1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
520
            self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
521
            self.run_bzr(['commit', '-m', '5: remove d2/link1'])
2292.1.23 by Marius Kruger
Revert test_too_much.py and just do the minimum te get the tests to pass.
522
            # try with the rm alias
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
523
            self.run_bzr('add d2/link1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
524
            self.run_bzr(['commit', '-m', '6: add d2/link1'])
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
525
            self.run_bzr('rm --keep d2/link1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
526
            self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
527
            self.run_bzr(['commit', '-m', '7: remove d2/link1'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
528
1092.2.6 by Robert Collins
symlink support updated to work
529
            os.mkdir("d1")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
530
            self.run_bzr('add d1')
531
            self.run_bzr('rename d2/link3 d1/link3new')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
532
            self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
533
            self.run_bzr(['commit', '-m',
534
                          '8: remove d2/link1, move/rename link3'])
535
536
            self.run_bzr('check')
537
538
            self.run_bzr('export -r 1 exp1.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
539
            chdir("exp1.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
540
            self.assertEquals(listdir_sorted("."), [ "link1" ])
541
            self.assertEquals(os.readlink("link1"), "NOWHERE1")
1092.2.6 by Robert Collins
symlink support updated to work
542
            chdir("..")
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
543
544
            self.run_bzr('export -r 2 exp2.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
545
            chdir("exp2.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
546
            self.assertEquals(listdir_sorted("."), [ "d1", "link1" ])
1092.2.6 by Robert Collins
symlink support updated to work
547
            chdir("..")
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
548
549
            self.run_bzr('export -r 3 exp3.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
550
            chdir("exp3.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
551
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
552
            self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
553
            self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
554
            self.assertEquals(os.readlink("link2")   , "NOWHERE2")
1092.2.6 by Robert Collins
symlink support updated to work
555
            chdir("..")
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
556
557
            self.run_bzr('export -r 4 exp4.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
558
            chdir("exp4.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
559
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
560
            self.assertEquals(os.readlink("d2/link1"), "TARGET 1")
561
            self.assertEquals(os.readlink("link2")   , "TARGET 2")
562
            self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
1092.2.6 by Robert Collins
symlink support updated to work
563
            chdir("..")
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
564
565
            self.run_bzr('export -r 5 exp5.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
566
            chdir("exp5.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
567
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
568
            self.assert_(os.path.islink("link2"))
569
            self.assert_(listdir_sorted("d2")== [ "link3" ])
1092.2.6 by Robert Collins
symlink support updated to work
570
            chdir("..")
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
571
572
            self.run_bzr('export -r 8 exp6.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
573
            chdir("exp6.tmp")
1424 by Robert Collins
add rm alias to remove
574
            self.assertEqual(listdir_sorted("."), [ "d1", "d2", "link2"])
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
575
            self.assertEquals(listdir_sorted("d1"), [ "link3new" ])
576
            self.assertEquals(listdir_sorted("d2"), [])
577
            self.assertEquals(os.readlink("d1/link3new"), "NOWHERE3")
1092.2.6 by Robert Collins
symlink support updated to work
578
            chdir("..")
579
        else:
580
            progress("skipping symlink tests")
1400.1.1 by Robert Collins
implement a basic test for the ui branch command from http servers
581
582
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
583
class RemoteTests(object):
1400.1.1 by Robert Collins
implement a basic test for the ui branch command from http servers
584
    """Test bzr ui commands against remote branches."""
585
586
    def test_branch(self):
587
        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.
588
        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.
589
        branch = wt.branch
590
        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.
591
        url = self.get_readonly_url('from')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
592
        self.run_bzr(['branch', url, 'to'])
1400.1.1 by Robert Collins
implement a basic test for the ui branch command from http servers
593
        branch = Branch.open('to')
594
        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.
595
        # the branch should be set in to to from
596
        self.assertEqual(url + '/', branch.get_parent())
1185.16.48 by mbp at sourcefrog
- more refactoring of and tests for option parsing
597
1442.1.64 by Robert Collins
Branch.open_containing now returns a tuple (Branch, relative-path).
598
    def test_log(self):
599
        self.build_tree(['branch/', 'branch/file'])
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
600
        self.run_bzr('init branch')[0]
601
        self.run_bzr('add branch/file')[0]
602
        self.run_bzr('commit -m foo branch')[0]
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.
603
        url = self.get_readonly_url('branch/file')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
604
        output = self.run_bzr('log %s' % url)[0]
1185.35.17 by Aaron Bentley
Added branch nicks to long-format logs
605
        self.assertEqual(8, len(output.split('\n')))
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
606
1510 by Robert Collins
Merge from mpool, adjusting check to retain HTTP support.
607
    def test_check(self):
608
        self.build_tree(['branch/', 'branch/file'])
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
609
        self.run_bzr('init branch')[0]
610
        self.run_bzr('add branch/file')[0]
611
        self.run_bzr('commit -m foo branch')[0]
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.
612
        url = self.get_readonly_url('branch/')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
613
        self.run_bzr(['check', url])
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
614
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.
615
    def test_push(self):
4523.4.15 by John Arbash Meinel
First pass at marking tests that are known to fail.
616
        self.thisFailsStrictLockCheck()
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.
617
        # create a source branch
618
        os.mkdir('my-branch')
619
        os.chdir('my-branch')
620
        self.run_bzr('init')
621
        file('hello', 'wt').write('foo')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
622
        self.run_bzr('add hello')
623
        self.run_bzr('commit -m setup')
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.
624
625
        # with an explicit target work
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
626
        self.run_bzr(['push', self.get_url('output-branch')])
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.
627
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
628
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
629
class HTTPTests(TestCaseWithWebserver, RemoteTests):
630
    """Test various commands against a HTTP server."""
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
631
632
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
633
class SFTPTestsAbsolute(TestCaseWithSFTPServer, RemoteTests):
634
    """Test various commands against a SFTP server using abs paths."""
635
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
636
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
637
class SFTPTestsAbsoluteSibling(TestCaseWithSFTPServer, RemoteTests):
638
    """Test various commands against a SFTP server using abs paths."""
639
640
    def setUp(self):
641
        super(SFTPTestsAbsoluteSibling, self).setUp()
642
        self._override_home = '/dev/noone/runs/tests/here'
643
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
644
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
645
class SFTPTestsRelative(TestCaseWithSFTPServer, RemoteTests):
646
    """Test various commands against a SFTP server using homedir rel paths."""
647
648
    def setUp(self):
649
        super(SFTPTestsRelative, self).setUp()
650
        self._get_remote_is_absolute = False