~bzr-pqm/bzr/bzr.dev

5557.1.7 by John Arbash Meinel
Merge in the bzr.dev 5582
1
# Copyright (C) 2005-2011 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
2929.3.8 by Vincent Ladeuil
Rename bzrlib/test/HTTPTestUtils.py to bzrlib/tests/http_utils.py and fix uses.
47
from bzrlib.tests.http_utils import TestCaseWithWebserver
1530.1.7 by Robert Collins
merge integration.
48
from bzrlib.tests.test_sftp_transport import TestCaseWithSFTPServer
5283.4.5 by Martin Pool
Update remaining subclasses of ExternalBase
49
from bzrlib.tests import TestCaseWithTransport
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
50
from bzrlib.workingtree import WorkingTree
1142 by Martin Pool
- remove dead code from blackbox tests (pychecker)
51
1185.65.29 by Robert Collins
Implement final review suggestions.
52
5283.4.5 by Martin Pool
Update remaining subclasses of ExternalBase
53
class TestCommands(TestCaseWithTransport):
1102 by Martin Pool
- merge test refactoring from robertc
54
55
    def test_invalid_commands(self):
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
56
        self.run_bzr("pants", retcode=3)
57
        self.run_bzr("--pants off", retcode=3)
58
        self.run_bzr("diff --message foo", retcode=3)
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
59
1102 by Martin Pool
- merge test refactoring from robertc
60
    def test_revert(self):
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
61
        self.run_bzr('init')
1102 by Martin Pool
- merge test refactoring from robertc
62
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
63
        with file('hello', 'wt') as f: f.write('foo')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
64
        self.run_bzr('add hello')
65
        self.run_bzr('commit -m setup hello')
1102 by Martin Pool
- merge test refactoring from robertc
66
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
67
        with file('goodbye', 'wt') as f: f.write('baz')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
68
        self.run_bzr('add goodbye')
69
        self.run_bzr('commit -m setup goodbye')
1092.2.18 by Robert Collins
merge from symlink branch
70
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
71
        with file('hello', 'wt') as f: f.write('bar')
72
        with file('goodbye', 'wt') as f: f.write('qux')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
73
        self.run_bzr('revert hello')
1102 by Martin Pool
- merge test refactoring from robertc
74
        self.check_file_contents('hello', 'foo')
75
        self.check_file_contents('goodbye', 'qux')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
76
        self.run_bzr('revert')
1102 by Martin Pool
- merge test refactoring from robertc
77
        self.check_file_contents('goodbye', 'baz')
78
79
        os.mkdir('revertdir')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
80
        self.run_bzr('add revertdir')
81
        self.run_bzr('commit -m f')
1102 by Martin Pool
- merge test refactoring from robertc
82
        os.rmdir('revertdir')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
83
        self.run_bzr('revert')
1102 by Martin Pool
- merge test refactoring from robertc
84
4747.3.6 by Vincent Ladeuil
terminal_width can now returns None.
85
        if osutils.has_symlinks():
1185.31.49 by John Arbash Meinel
Some corrections using the new osutils.rename. **ALL TESTS PASS**
86
            os.symlink('/unlikely/to/exist', 'symlink')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
87
            self.run_bzr('add symlink')
88
            self.run_bzr('commit -m f')
1185.31.49 by John Arbash Meinel
Some corrections using the new osutils.rename. **ALL TESTS PASS**
89
            os.unlink('symlink')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
90
            self.run_bzr('revert')
5784.1.3 by Martin Pool
Switch away from using failUnlessExists and failIfExists
91
            self.assertPathExists('symlink')
1185.31.49 by John Arbash Meinel
Some corrections using the new osutils.rename. **ALL TESTS PASS**
92
            os.unlink('symlink')
93
            os.symlink('a-different-path', 'symlink')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
94
            self.run_bzr('revert')
1185.31.49 by John Arbash Meinel
Some corrections using the new osutils.rename. **ALL TESTS PASS**
95
            self.assertEqual('/unlikely/to/exist',
96
                             os.readlink('symlink'))
97
        else:
98
            self.log("skipping revert symlink tests")
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
99
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
100
        with file('hello', 'wt') as f: f.write('xyz')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
101
        self.run_bzr('commit -m xyz hello')
102
        self.run_bzr('revert -r 1 hello')
1185.5.8 by John Arbash Meinel
Fixed bzr revert with the new RevisionSpec code.
103
        self.check_file_contents('hello', 'foo')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
104
        self.run_bzr('revert hello')
1185.5.8 by John Arbash Meinel
Fixed bzr revert with the new RevisionSpec code.
105
        self.check_file_contents('hello', 'xyz')
1185.8.5 by Aaron Bentley
Fixed non-tree-root bug in branch, revert, merge
106
        os.chdir('revertdir')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
107
        self.run_bzr('revert')
1185.8.5 by Aaron Bentley
Fixed non-tree-root bug in branch, revert, merge
108
        os.chdir('..')
109
1092.1.39 by Robert Collins
merge from mpool
110
    def example_branch(test):
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
111
        test.run_bzr('init')
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
112
        with file('hello', 'wt') as f: f.write('foo')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
113
        test.run_bzr('add hello')
114
        test.run_bzr('commit -m setup hello')
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
115
        with file('goodbye', 'wt') as f: f.write('baz')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
116
        test.run_bzr('add goodbye')
117
        test.run_bzr('commit -m setup goodbye')
1092.1.39 by Robert Collins
merge from mpool
118
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
119
    def test_pull_verbose(self):
120
        """Pull changes from one branch to another and watch the output."""
121
122
        os.mkdir('a')
123
        os.chdir('a')
124
125
        self.example_branch()
126
127
        os.chdir('..')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
128
        self.run_bzr('branch a b')
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
129
        os.chdir('b')
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
130
        with open('b', 'wb') as f: f.write('else\n')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
131
        self.run_bzr('add b')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
132
        self.run_bzr(['commit', '-m', 'added b'])
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
133
134
        os.chdir('../a')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
135
        out = self.run_bzr('pull --verbose ../b')[0]
5784.1.1 by Martin Pool
Stop using failIf, failUnless, etc
136
        self.assertNotEqual(out.find('Added Revisions:'), -1)
137
        self.assertNotEqual(out.find('message:\n  added b'), -1)
138
        self.assertNotEqual(out.find('added b'), -1)
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
139
1185.32.4 by John Arbash Meinel
[merge] up-to-date against bzr.dev
140
        # 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
141
        self.run_bzr('commit -m foo --unchanged')
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
142
        os.chdir('../b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
143
        self.run_bzr('commit -m baz --unchanged')
144
        self.run_bzr('pull ../a', retcode=3)
145
        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.
146
147
        remove_loc = out.find('Removed Revisions:')
5784.1.1 by Martin Pool
Stop using failIf, failUnless, etc
148
        self.assertNotEqual(remove_loc, -1)
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
149
        added_loc = out.find('Added Revisions:')
5784.1.1 by Martin Pool
Stop using failIf, failUnless, etc
150
        self.assertNotEqual(added_loc, -1)
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
151
152
        removed_message = out.find('message:\n  baz')
5784.1.1 by Martin Pool
Stop using failIf, failUnless, etc
153
        self.assertNotEqual(removed_message, -1)
154
        self.assertTrue(remove_loc < removed_message < added_loc)
1185.32.2 by John Arbash Meinel
Refactor pull --verbose into a log.py function, add tests.
155
156
        added_message = out.find('message:\n  foo')
5784.1.1 by Martin Pool
Stop using failIf, failUnless, etc
157
        self.assertNotEqual(added_message, -1)
158
        self.assertTrue(added_loc < added_message)
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
159
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
160
    def test_locations(self):
161
        """Using and remembering different locations"""
162
        os.mkdir('a')
163
        os.chdir('a')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
164
        self.run_bzr('init')
165
        self.run_bzr('commit -m unchanged --unchanged')
166
        self.run_bzr('pull', retcode=3)
167
        self.run_bzr('merge', retcode=3)
168
        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
169
        os.chdir('../b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
170
        self.run_bzr('pull')
171
        self.run_bzr('branch . ../c')
172
        self.run_bzr('pull ../c')
173
        self.run_bzr('merge')
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
174
        os.chdir('../a')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
175
        self.run_bzr('pull ../b')
176
        self.run_bzr('pull')
177
        self.run_bzr('pull ../c')
178
        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.
179
        osutils.rmtree('../c')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
180
        self.run_bzr('pull')
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
181
        os.chdir('../b')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
182
        self.run_bzr('pull')
1185.12.11 by Aaron Bentley
Made pull only save the parent location if it is unset, or on --remember
183
        os.chdir('../d')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
184
        self.run_bzr('pull', retcode=3)
185
        self.run_bzr('pull ../a --remember')
186
        self.run_bzr('pull')
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
187
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
188
    def test_unknown_command(self):
189
        """Handling of unknown command."""
2552.2.4 by Vincent Ladeuil
Merge bzr.dev and resolve conflits. (good use case for an enhanced merge
190
        out, err = self.run_bzr('fluffy-badger', retcode=3)
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
191
        self.assertEquals(out, '')
192
        err.index('unknown command')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
193
1185.35.4 by Aaron Bentley
Implemented remerge
194
    def create_conflicts(self):
195
        """Create a conflicted tree"""
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
196
        os.mkdir('base')
197
        os.chdir('base')
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
198
        with file('hello', 'wb') as f: f.write("hi world")
199
        with file('answer', 'wb') as f: f.write("42")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
200
        self.run_bzr('init')
201
        self.run_bzr('add')
202
        self.run_bzr('commit -m base')
203
        self.run_bzr('branch . ../other')
204
        self.run_bzr('branch . ../this')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
205
        os.chdir('../other')
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
206
        with file('hello', 'wb') as f: f.write("Hello.")
207
        with file('answer', 'wb') as f: f.write("Is anyone there?")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
208
        self.run_bzr('commit -m other')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
209
        os.chdir('../this')
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
210
        with file('hello', 'wb') as f: f.write("Hello, world")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
211
        self.run_bzr('mv answer question')
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
212
        with file('question', 'wb') as f: f.write("What do you get when you multiply six"
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
213
                                   "times nine?")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
214
        self.run_bzr('commit -m this')
1185.35.4 by Aaron Bentley
Implemented remerge
215
1185.65.6 by Aaron Bentley
Fixed inner merges in status
216
    def test_status(self):
217
        os.mkdir('branch1')
218
        os.chdir('branch1')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
219
        self.run_bzr('init')
220
        self.run_bzr('commit --unchanged --message f')
221
        self.run_bzr('branch . ../branch2')
222
        self.run_bzr('branch . ../branch3')
223
        self.run_bzr('commit --unchanged --message peter')
1185.65.6 by Aaron Bentley
Fixed inner merges in status
224
        os.chdir('../branch2')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
225
        self.run_bzr('merge ../branch1')
226
        self.run_bzr('commit --unchanged --message pumpkin')
1185.65.6 by Aaron Bentley
Fixed inner merges in status
227
        os.chdir('../branch3')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
228
        self.run_bzr('merge ../branch2')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
229
        message = self.run_bzr('status')[0]
1185.65.6 by Aaron Bentley
Fixed inner merges in status
230
1185.35.4 by Aaron Bentley
Implemented remerge
231
232
    def test_conflicts(self):
233
        """Handling of merge conflicts"""
234
        self.create_conflicts()
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
235
        self.run_bzr('merge ../other --show-base', retcode=1)
1185.18.1 by Aaron Bentley
Added --show-base to merge
236
        conflict_text = file('hello').read()
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
237
        self.assert_('<<<<<<<' in conflict_text)
238
        self.assert_('>>>>>>>' in conflict_text)
239
        self.assert_('=======' in conflict_text)
240
        self.assert_('|||||||' in conflict_text)
241
        self.assert_('hi world' in conflict_text)
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
242
        self.run_bzr('revert')
243
        self.run_bzr('resolve --all')
244
        self.run_bzr('merge ../other', retcode=1)
1185.18.1 by Aaron Bentley
Added --show-base to merge
245
        conflict_text = file('hello').read()
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
246
        self.assert_('|||||||' not in conflict_text)
247
        self.assert_('hi world' not in conflict_text)
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
248
        result = self.run_bzr('conflicts')[0]
1534.10.9 by Aaron Bentley
Switched display functions to conflict_lines
249
        self.assertEquals(result, "Text conflict in hello\nText conflict in"
250
                                  " question\n")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
251
        result = self.run_bzr('status')[0]
1534.10.9 by Aaron Bentley
Switched display functions to conflict_lines
252
        self.assert_("conflicts:\n  Text conflict in hello\n"
253
                     "  Text conflict in question\n" in result, result)
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
254
        self.run_bzr('resolve hello')
255
        result = self.run_bzr('conflicts')[0]
1534.10.9 by Aaron Bentley
Switched display functions to conflict_lines
256
        self.assertEquals(result, "Text conflict in question\n")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
257
        self.run_bzr('commit -m conflicts', retcode=3)
258
        self.run_bzr('resolve --all')
259
        result = self.run_bzr('conflicts')[0]
260
        self.run_bzr('commit -m conflicts')
1185.14.9 by Aaron Bentley
Added tests for 'bzr conflicts', 'bzr resolve'
261
        self.assertEquals(result, "")
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
262
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
263
    def test_push(self):
264
        # create a source branch
265
        os.mkdir('my-branch')
266
        os.chdir('my-branch')
267
        self.example_branch()
268
269
        # with no push target, fail
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
270
        self.run_bzr('push', retcode=3)
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
271
        # with an explicit target work
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
272
        self.run_bzr('push ../output-branch')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
273
        # with an implicit target work
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
274
        self.run_bzr('push')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
275
        # nothing missing
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
276
        self.run_bzr('missing ../output-branch')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
277
        # advance this branch
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
278
        self.run_bzr('commit --unchanged -m unchanged')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
279
280
        os.chdir('../output-branch')
1185.50.6 by John Arbash Meinel
Fixed a broken test from my 'push updates local working tree' fix
281
        # There is no longer a difference as long as we have
282
        # access to the working tree
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
283
        self.run_bzr('diff')
1185.50.6 by John Arbash Meinel
Fixed a broken test from my 'push updates local working tree' fix
284
285
        # But we should be missing a revision
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
286
        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
287
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
288
        # diverge the branches
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
289
        self.run_bzr('commit --unchanged -m unchanged')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
290
        os.chdir('../my-branch')
291
        # cannot push now
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
292
        self.run_bzr('push', retcode=3)
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
293
        # and there are difference
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
294
        self.run_bzr('missing ../output-branch', retcode=1)
295
        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.
296
        # but we can force a push
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
297
        self.run_bzr('push --overwrite')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
298
        # nothing missing
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
299
        self.run_bzr('missing ../output-branch')
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
300
1495 by Robert Collins
Add a --create-prefix to the new push command.
301
        # 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
302
        self.run_bzr('push ../missing/new-branch', retcode=3)
1495 by Robert Collins
Add a --create-prefix to the new push command.
303
        # unless we provide --create-prefix
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
304
        self.run_bzr('push --create-prefix ../missing/new-branch')
1495 by Robert Collins
Add a --create-prefix to the new push command.
305
        # nothing missing
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
306
        self.run_bzr('missing ../missing/new-branch')
1490 by Robert Collins
Implement a 'bzr push' command, with saved locations; update diff to return 1.
307
1185.31.3 by John Arbash Meinel
Fix ExternalCommand to not run random files in the current directory, unless it is truly in BZRPATH
308
    def test_external_command(self):
1588.1.1 by Martin Pool
Supress "hello from test-command" noise from test_external_command
309
        """Test that external commands can be run by setting the path
310
        """
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
311
        # 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
312
        # don't really capture stdout, only the internal python stream.
313
        # 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
314
        # 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
315
        cmd_name = 'test-command'
316
        if sys.platform == 'win32':
317
            cmd_name += '.bat'
5570.3.9 by Vincent Ladeuil
More use cases for overrideEnv, _cleanEnvironment *may* contain too much variables now.
318
        self.overrideEnv('BZRPATH', None)
319
320
        f = file(cmd_name, 'wb')
321
        if sys.platform == 'win32':
322
            f.write('@echo off\n')
323
        else:
324
            f.write('#!/bin/sh\n')
325
        # f.write('echo Hello from test-command')
326
        f.close()
327
        os.chmod(cmd_name, 0755)
328
329
        # It should not find the command in the local
330
        # directory by default, since it is not in my path
331
        self.run_bzr(cmd_name, retcode=3)
332
333
        # Now put it into my path
334
        self.overrideEnv('BZRPATH', '.')
335
        self.run_bzr(cmd_name)
336
337
        # Make sure empty path elements are ignored
338
        self.overrideEnv('BZRPATH', os.pathsep)
339
        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
340
341
1092.2.6 by Robert Collins
symlink support updated to work
342
def listdir_sorted(dir):
343
    L = os.listdir(dir)
344
    L.sort()
345
    return L
1185.3.20 by Martin Pool
- run_bzr_captured also includes logged errors in
346
1092.2.12 by Robert Collins
merge from HEAD
347
5283.4.5 by Martin Pool
Update remaining subclasses of ExternalBase
348
class OldTests(TestCaseWithTransport):
1092.1.39 by Robert Collins
merge from mpool
349
    """old tests moved from ./testbzr."""
350
1102 by Martin Pool
- merge test refactoring from robertc
351
    def test_bzr(self):
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
352
        from os import chdir, mkdir
353
        from os.path import exists
354
355
        progress = self.log
356
357
        progress("basic branch creation")
904 by Martin Pool
- more selftest external-command fixes
358
        mkdir('branch1')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
359
        chdir('branch1')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
360
        self.run_bzr('init')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
361
2823.1.6 by Vincent Ladeuil
Redo minor fix.
362
        self.assertIsSameRealPath(self.run_bzr('root')[0].rstrip(),
4747.3.6 by Vincent Ladeuil
terminal_width can now returns None.
363
                                  osutils.pathjoin(self.test_dir, 'branch1'))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
364
365
        progress("status of new file")
366
367
        f = file('test.txt', 'wt')
368
        f.write('hello world!\n')
369
        f.close()
370
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
371
        self.assertEquals(self.run_bzr('unknowns')[0], 'test.txt\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
372
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
373
        out = self.run_bzr("status")[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
374
        self.assertEquals(out, 'unknown:\n  test.txt\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
375
376
        f = file('test2.txt', 'wt')
377
        f.write('goodbye cruel world...\n')
378
        f.close()
379
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
380
        out = self.run_bzr("status test.txt")[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
381
        self.assertEquals(out, "unknown:\n  test.txt\n")
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
382
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
383
        out = self.run_bzr("status")[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
384
        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
385
386
        os.unlink('test2.txt')
387
388
        progress("command aliases")
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
389
        out = self.run_bzr("st")[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
390
        self.assertEquals(out, ("unknown:\n" "  test.txt\n"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
391
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
392
        out = self.run_bzr("stat")[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
393
        self.assertEquals(out, ("unknown:\n" "  test.txt\n"))
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
394
395
        progress("command help")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
396
        self.run_bzr("help st")
397
        self.run_bzr("help")
398
        self.run_bzr("help commands")
399
        self.run_bzr("help slartibartfast", retcode=3)
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("help ci")[0]
2666.1.1 by Ian Clatworthy
Bazaar User Reference generated from online help
402
        out.index('Aliases:  ci, checkin\n')
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
403
404
        f = file('hello.txt', 'wt')
405
        f.write('some nice new content\n')
406
        f.close()
407
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
408
        self.run_bzr("add hello.txt")
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
409
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
410
        f = file('msg.tmp', 'wt')
1185.12.25 by Aaron Bentley
Added one-line log format
411
        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
412
        f.close()
413
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
414
        self.run_bzr('commit -F msg.tmp')
415
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
416
        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
417
        self.run_bzr('export -r 1 export-1.tmp')
418
        self.run_bzr('export export.tmp')
419
420
        self.run_bzr('log')
421
        self.run_bzr('log -v')
422
        self.run_bzr('log -v --forward')
423
        self.run_bzr('log -m', retcode=3)
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
424
        log_out = self.run_bzr('log -m commit')[0]
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
425
        self.assert_("this is my new commit\n  and" in log_out)
426
        self.assert_("rename nested" not in log_out)
427
        self.assert_('revision-id' not in log_out)
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
428
        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
429
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
430
        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.
431
        # determine the widest line we want
4747.3.6 by Vincent Ladeuil
terminal_width can now returns None.
432
        max_width = osutils.terminal_width()
433
        if max_width is not None:
434
            for line in log_out.splitlines():
435
                self.assert_(len(line) <= max_width - 1, len(line))
1740.2.5 by Aaron Bentley
Merge from bzr.dev
436
        self.assert_("this is my new commit and" not in log_out)
437
        self.assert_("this is my new commit" in log_out)
1185.12.25 by Aaron Bentley
Added one-line log format
438
736 by Martin Pool
- move old blackbox code from testbzr into bzrlib.selftest.blackbox
439
        progress("file with spaces in name")
440
        mkdir('sub directory')
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
441
        with file('sub directory/file with spaces ', 'wt') as f: f.write('see how this works\n')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
442
        self.run_bzr('add .')
443
        self.run_bzr('diff', retcode=1)
444
        self.run_bzr('commit -m add-spaces')
445
        self.run_bzr('check')
446
447
        self.run_bzr('log')
448
        self.run_bzr('log --forward')
449
450
        self.run_bzr('info')
1092.1.35 by Robert Collins
merge from mpool up to rev 1110
451
4747.3.6 by Vincent Ladeuil
terminal_width can now returns None.
452
        if osutils.has_symlinks():
1092.2.6 by Robert Collins
symlink support updated to work
453
            progress("symlinks")
454
            mkdir('symlinks')
455
            chdir('symlinks')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
456
            self.run_bzr('init')
1092.2.6 by Robert Collins
symlink support updated to work
457
            os.symlink("NOWHERE1", "link1")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
458
            self.run_bzr('add link1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
459
            self.assertEquals(self.run_bzr('unknowns')[0], '')
460
            self.run_bzr(['commit', '-m', '1: added symlink link1'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
461
1092.2.6 by Robert Collins
symlink support updated to work
462
            mkdir('d1')
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
463
            self.run_bzr('add d1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
464
            self.assertEquals(self.run_bzr('unknowns')[0], '')
1092.2.6 by Robert Collins
symlink support updated to work
465
            os.symlink("NOWHERE2", "d1/link2")
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
466
            self.assertEquals(self.run_bzr('unknowns')[0], 'd1/link2\n')
1092.2.6 by Robert Collins
symlink support updated to work
467
            # is d1/link2 found when adding d1
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
468
            self.run_bzr('add d1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
469
            self.assertEquals(self.run_bzr('unknowns')[0], '')
1092.2.6 by Robert Collins
symlink support updated to work
470
            os.symlink("NOWHERE3", "d1/link3")
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
471
            self.assertEquals(self.run_bzr('unknowns')[0], 'd1/link3\n')
472
            self.run_bzr(['commit', '-m', '2: added dir, symlink'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
473
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
474
            self.run_bzr('rename d1 d2')
475
            self.run_bzr('move d2/link2 .')
476
            self.run_bzr('move link1 d2')
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
477
            self.assertEquals(os.readlink("./link2"), "NOWHERE2")
478
            self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
479
            self.run_bzr('add d2/link3')
480
            self.run_bzr('diff', retcode=1)
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
481
            self.run_bzr(['commit', '-m',
482
                          '3: rename of dir, move symlinks, add link3'])
483
1092.2.6 by Robert Collins
symlink support updated to work
484
            os.unlink("link2")
485
            os.symlink("TARGET 2", "link2")
486
            os.unlink("d2/link1")
487
            os.symlink("TARGET 1", "d2/link1")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
488
            self.run_bzr('diff', retcode=1)
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
489
            self.assertEquals(self.run_bzr("relpath d2/link1")[0], "d2/link1\n")
490
            self.run_bzr(['commit', '-m', '4: retarget of two links'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
491
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
492
            self.run_bzr('remove --keep d2/link1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
493
            self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
494
            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.
495
            # try with the rm alias
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
496
            self.run_bzr('add d2/link1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
497
            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
498
            self.run_bzr('rm --keep d2/link1')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
499
            self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
500
            self.run_bzr(['commit', '-m', '7: remove d2/link1'])
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
501
1092.2.6 by Robert Collins
symlink support updated to work
502
            os.mkdir("d1")
2530.3.1 by Martin Pool
Cleanup old variations on run_bzr in the test suite
503
            self.run_bzr('add d1')
504
            self.run_bzr('rename d2/link3 d1/link3new')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
505
            self.assertEquals(self.run_bzr('unknowns')[0], 'd2/link1\n')
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
506
            self.run_bzr(['commit', '-m',
507
                          '8: remove d2/link1, move/rename link3'])
508
509
            self.run_bzr('check')
510
511
            self.run_bzr('export -r 1 exp1.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
512
            chdir("exp1.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
513
            self.assertEquals(listdir_sorted("."), [ "link1" ])
514
            self.assertEquals(os.readlink("link1"), "NOWHERE1")
1092.2.6 by Robert Collins
symlink support updated to work
515
            chdir("..")
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
516
517
            self.run_bzr('export -r 2 exp2.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
518
            chdir("exp2.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
519
            self.assertEquals(listdir_sorted("."), [ "d1", "link1" ])
1092.2.6 by Robert Collins
symlink support updated to work
520
            chdir("..")
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
521
522
            self.run_bzr('export -r 3 exp3.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
523
            chdir("exp3.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
524
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
525
            self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
526
            self.assertEquals(os.readlink("d2/link1"), "NOWHERE1")
527
            self.assertEquals(os.readlink("link2")   , "NOWHERE2")
1092.2.6 by Robert Collins
symlink support updated to work
528
            chdir("..")
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
529
530
            self.run_bzr('export -r 4 exp4.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
531
            chdir("exp4.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
532
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
533
            self.assertEquals(os.readlink("d2/link1"), "TARGET 1")
534
            self.assertEquals(os.readlink("link2")   , "TARGET 2")
535
            self.assertEquals(listdir_sorted("d2"), [ "link1", "link3" ])
1092.2.6 by Robert Collins
symlink support updated to work
536
            chdir("..")
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
537
538
            self.run_bzr('export -r 5 exp5.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
539
            chdir("exp5.tmp")
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
540
            self.assertEquals(listdir_sorted("."), [ "d2", "link2" ])
541
            self.assert_(os.path.islink("link2"))
542
            self.assert_(listdir_sorted("d2")== [ "link3" ])
1092.2.6 by Robert Collins
symlink support updated to work
543
            chdir("..")
2552.2.2 by Vincent Ladeuil
Enforce run_bzr(string) where possible.
544
545
            self.run_bzr('export -r 8 exp6.tmp')
1092.2.6 by Robert Collins
symlink support updated to work
546
            chdir("exp6.tmp")
1424 by Robert Collins
add rm alias to remove
547
            self.assertEqual(listdir_sorted("."), [ "d1", "d2", "link2"])
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
548
            self.assertEquals(listdir_sorted("d1"), [ "link3new" ])
549
            self.assertEquals(listdir_sorted("d2"), [])
550
            self.assertEquals(os.readlink("d1/link3new"), "NOWHERE3")
1092.2.6 by Robert Collins
symlink support updated to work
551
            chdir("..")
552
        else:
553
            progress("skipping symlink tests")
1400.1.1 by Robert Collins
implement a basic test for the ui branch command from http servers
554
555
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
556
class RemoteTests(object):
1400.1.1 by Robert Collins
implement a basic test for the ui branch command from http servers
557
    """Test bzr ui commands against remote branches."""
558
559
    def test_branch(self):
560
        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.
561
        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.
562
        branch = wt.branch
563
        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.
564
        url = self.get_readonly_url('from')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
565
        self.run_bzr(['branch', url, 'to'])
1400.1.1 by Robert Collins
implement a basic test for the ui branch command from http servers
566
        branch = Branch.open('to')
6165.4.6 by Jelmer Vernooij
Avoid more uses of revision_history.
567
        self.assertEqual(1, branch.last_revision_info()[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.
568
        # the branch should be set in to to from
569
        self.assertEqual(url + '/', branch.get_parent())
1185.16.48 by mbp at sourcefrog
- more refactoring of and tests for option parsing
570
1442.1.64 by Robert Collins
Branch.open_containing now returns a tuple (Branch, relative-path).
571
    def test_log(self):
572
        self.build_tree(['branch/', 'branch/file'])
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
573
        self.run_bzr('init branch')[0]
574
        self.run_bzr('add branch/file')[0]
575
        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.
576
        url = self.get_readonly_url('branch/file')
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
577
        output = self.run_bzr('log %s' % url)[0]
1185.35.17 by Aaron Bentley
Added branch nicks to long-format logs
578
        self.assertEqual(8, len(output.split('\n')))
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
579
1510 by Robert Collins
Merge from mpool, adjusting check to retain HTTP support.
580
    def test_check(self):
581
        self.build_tree(['branch/', 'branch/file'])
2530.3.4 by Martin Pool
Deprecate run_bzr_captured in favour of just run_bzr
582
        self.run_bzr('init branch')[0]
583
        self.run_bzr('add branch/file')[0]
584
        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.
585
        url = self.get_readonly_url('branch/')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
586
        self.run_bzr(['check', url])
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
587
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.
588
    def test_push(self):
589
        # create a source branch
590
        os.mkdir('my-branch')
591
        os.chdir('my-branch')
592
        self.run_bzr('init')
5861.2.5 by Wouter van Heyst
Fix remaining failing blackbox tests under pypy due to refcount/flush interaction.
593
        with file('hello', 'wt') as f: f.write('foo')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
594
        self.run_bzr('add hello')
595
        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.
596
597
        # with an explicit target work
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
598
        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.
599
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
600
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
601
class HTTPTests(TestCaseWithWebserver, RemoteTests):
602
    """Test various commands against a HTTP server."""
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
603
604
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
605
class SFTPTestsAbsolute(TestCaseWithSFTPServer, RemoteTests):
606
    """Test various commands against a SFTP server using abs paths."""
607
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
608
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
609
class SFTPTestsAbsoluteSibling(TestCaseWithSFTPServer, RemoteTests):
610
    """Test various commands against a SFTP server using abs paths."""
611
612
    def setUp(self):
613
        super(SFTPTestsAbsoluteSibling, self).setUp()
614
        self._override_home = '/dev/noone/runs/tests/here'
615
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
616
1524.1.1 by Robert Collins
Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir
617
class SFTPTestsRelative(TestCaseWithSFTPServer, RemoteTests):
618
    """Test various commands against a SFTP server using homedir rel paths."""
619
620
    def setUp(self):
621
        super(SFTPTestsRelative, self).setUp()
622
        self._get_remote_is_absolute = False