26
26
it's normally invoked.
31
from bzrlib.selftest import TestBase, InTempDir, BzrTestBase
35
class ExternalBase(InTempDir):
36
def runbzr(self, args, retcode=0):
29
# this code was previously in testbzr
31
from unittest import TestCase
32
from bzrlib.selftest import TestBase, InTempDir
36
class ExternalBase(TestBase):
37
def runbzr(self, args):
39
40
from subprocess import call
44
45
if isinstance(args, basestring):
45
46
args = args.split()
47
return self.runcmd(['python', self.BZRPATH,] + args,
52
class MvCommand(BzrTestBase):
54
"""Test two modes of operation for mv"""
55
b = Branch('.', init=True)
56
self.build_tree(['a', 'c', 'subdir/'])
57
self.run_bzr('mv', 'a', 'b')
58
self.run_bzr('mv', 'b', 'subdir')
59
self.run_bzr('mv', 'subdir/b', 'a')
60
self.run_bzr('mv', 'a', 'b', 'subdir')
61
self.run_bzr('mv', 'subdir/a', 'subdir/newa')
65
class TestVersion(BzrTestBase):
66
"""Check output from version command and master option is reasonable"""
48
return self.runcmd(['python', self.BZRPATH,] + args)
52
class TestVersion(TestBase):
68
54
# output is intentionally passed through to stdout so that we
69
55
# can see the version being tested
70
from cStringIO import StringIO
73
sys.stdout = tmp_out = StringIO()
75
self.run_bzr('version')
79
output = tmp_out.getvalue()
80
self.log('bzr version output:')
83
self.assert_(output.startswith('bzr (bazaar-ng) '))
84
self.assertNotEqual(output.index('Canonical'), -1)
86
# make sure --version is consistent
88
sys.stdout = tmp_out = StringIO()
90
self.run_bzr('--version')
94
self.log('bzr --version output:')
95
self.log(tmp_out.getvalue())
97
self.assertEquals(output, tmp_out.getvalue())
103
class HelpCommands(ExternalBase):
56
self.runbzr(['version'])
60
class HelpCommands(TestBase):
104
61
def runTest(self):
105
62
self.runbzr('--help')
106
63
self.runbzr('help')
146
class IgnorePatterns(ExternalBase):
148
from bzrlib.branch import Branch
150
b = Branch('.', init=True)
151
self.assertEquals(list(b.unknowns()), [])
153
file('foo.tmp', 'wt').write('tmp files are ignored')
154
self.assertEquals(list(b.unknowns()), [])
155
assert self.backtick('bzr unknowns') == ''
157
file('foo.c', 'wt').write('int main() {}')
158
self.assertEquals(list(b.unknowns()), ['foo.c'])
159
assert self.backtick('bzr unknowns') == 'foo.c\n'
161
self.runbzr(['add', 'foo.c'])
162
assert self.backtick('bzr unknowns') == ''
164
# 'ignore' works when creating the .bzignore file
165
file('foo.blah', 'wt').write('blah')
166
self.assertEquals(list(b.unknowns()), ['foo.blah'])
167
self.runbzr('ignore *.blah')
168
self.assertEquals(list(b.unknowns()), [])
169
assert file('.bzrignore', 'rb').read() == '*.blah\n'
171
# 'ignore' works when then .bzrignore file already exists
172
file('garh', 'wt').write('garh')
173
self.assertEquals(list(b.unknowns()), ['garh'])
174
assert self.backtick('bzr unknowns') == 'garh\n'
175
self.runbzr('ignore garh')
176
self.assertEquals(list(b.unknowns()), [])
177
assert file('.bzrignore', 'rb').read() == '*.blah\ngarh\n'
182
class OldTests(ExternalBase):
103
class OldTests(InTempDir):
183
104
# old tests moved from ./testbzr
184
105
def runTest(self):
185
106
from os import chdir, mkdir
186
107
from os.path import exists
190
111
backtick = self.backtick
191
112
progress = self.log
193
114
progress("basic branch creation")
115
runcmd(['mkdir', 'branch1'])
330
runbzr('log -v --forward')
331
runbzr('log -m', retcode=1)
332
log_out = backtick('bzr log -m commit')
333
assert "this is my new commit" in log_out
334
assert "rename nested" not in log_out
335
assert 'revision-id' not in log_out
336
assert 'revision-id' in backtick('bzr log --show-ids -m commit')
339
254
progress("file with spaces in name")
357
class RevertCommand(ExternalBase):
275
# Can't create a branch if it already exists
276
runbzr('branch branch1', retcode=1)
277
# Can't create a branch if its parent doesn't exist
278
runbzr('branch /unlikely/to/exist', retcode=1)
279
runbzr('branch branch1 branch2')
283
runbzr('pull', retcode=1)
284
runbzr('pull ../branch2')
287
runbzr('commit --unchanged -m empty')
289
chdir('../../branch2')
291
runbzr('commit --unchanged -m empty')
293
runbzr('commit --unchanged -m empty')
294
runbzr('pull', retcode=1)
297
progress('status after remove')
298
mkdir('status-after-remove')
299
# see mail from William Dodé, 2005-05-25
300
# $ bzr init; touch a; bzr add a; bzr commit -m "add a"
301
# * looking for changes...
306
# bzr: local variable 'kind' referenced before assignment
307
# at /vrac/python/bazaar-ng/bzrlib/diff.py:286 in compare_trees()
308
# see ~/.bzr.log for debug information
309
chdir('status-after-remove')
311
file('a', 'w').write('foo')
313
runbzr(['commit', '-m', 'add a'])
319
progress('ignore patterns')
320
mkdir('ignorebranch')
321
chdir('ignorebranch')
323
assert backtick('bzr unknowns') == ''
325
file('foo.tmp', 'wt').write('tmp files are ignored')
326
assert backtick('bzr unknowns') == ''
328
file('foo.c', 'wt').write('int main() {}')
329
assert backtick('bzr unknowns') == 'foo.c\n'
331
assert backtick('bzr unknowns') == ''
333
# 'ignore' works when creating the .bzignore file
334
file('foo.blah', 'wt').write('blah')
335
assert backtick('bzr unknowns') == 'foo.blah\n'
336
runbzr('ignore *.blah')
337
assert backtick('bzr unknowns') == ''
338
assert file('.bzrignore', 'rb').read() == '*.blah\n'
340
# 'ignore' works when then .bzrignore file already exists
341
file('garh', 'wt').write('garh')
342
assert backtick('bzr unknowns') == 'garh\n'
343
runbzr('ignore garh')
344
assert backtick('bzr unknowns') == ''
345
assert file('.bzrignore', 'rb').read() == '*.blah\ngarh\n'
352
progress("recursive and non-recursive add")
357
fp = os.path.join('foo', 'test.txt')
361
runbzr('add --no-recurse foo')
362
runbzr('file-id foo')
363
runbzr('file-id ' + fp, 1) # not versioned yet
364
runbzr('commit -m add-dir-only')
366
runbzr('file-id ' + fp, 1) # still not versioned
369
runbzr('file-id ' + fp)
370
runbzr('commit -m add-sub-file')
376
class RevertCommand(InTempDir):
358
377
def runTest(self):
359
378
self.runbzr('init')