23
22
This always runs bzr as an external process to try to catch bugs
24
23
related to argument processing, startup, etc.
28
testbzr [-p PYTHON] [BZR]
30
By default this tests the copy of bzr found in the same directory as
31
testbzr, or the first one found on the $PATH. A copy of bzr may be
32
given on the command line to override this, for example when applying
33
a new test suite to an old copy of bzr or vice versa.
35
testbzr normally invokes bzr using the same version of python as it
36
would normally use to run -- that is, the system default python,
37
unless that is older than 2.3. The -p option allows specification of
38
a different Python interpreter, such as when testing that bzr still
41
25
This replaces the previous test.sh which was not very portable."""
43
27
import sys, os, traceback
137
115
if os.path.exists(TESTDIR):
138
116
shutil.rmtree(TESTDIR)
140
start_dir = os.getcwd()
143
119
logfile = open(LOGFILENAME, 'wt', buffering=1)
147
from getopt import getopt
148
opts, args = getopt(sys.argv[1:], 'p:')
150
for option, value in opts:
152
OVERRIDE_PYTHON = value
155
mypath = os.path.abspath(sys.argv[0])
156
print '%-30s %s' % ('running tests from', mypath)
163
BZRPATH = os.path.join(os.path.split(mypath)[0], 'bzr')
165
print '%-30s %s' % ('against bzr', BZRPATH)
166
print '%-30s %s' % ('in directory', os.getcwd())
167
print '%-30s %s' % ('with python', (OVERRIDE_PYTHON or '(default)'))
169
print backtick([BZRPATH, 'version'])
171
123
runcmd(['mkdir', TESTDIR])
173
test_root = os.getcwd()
175
126
progress("introductory commands")
176
127
runcmd("bzr version")
209
154
assert out == 'test.txt\n'
211
156
out = backtick("bzr status")
212
assert out == 'unknown:\n test.txt\n'
157
assert out == '''? test.txt\n'''
214
159
out = backtick("bzr status --all")
215
assert out == "unknown:\n test.txt\n"
217
out = backtick("bzr status test.txt --all")
218
assert out == "unknown:\n test.txt\n"
220
f = file('test2.txt', 'wt')
221
f.write('goodbye cruel world...\n')
224
out = backtick("bzr status test.txt")
225
assert out == "unknown:\n test.txt\n"
227
out = backtick("bzr status")
228
assert out == ("unknown:\n"
232
os.unlink('test2.txt')
160
assert out == "? test.txt\n"
234
162
progress("command aliases")
235
163
out = backtick("bzr st --all")
236
assert out == ("unknown:\n"
164
assert out == "? test.txt\n"
239
165
out = backtick("bzr stat")
240
assert out == ("unknown:\n"
166
assert out == "? test.txt\n"
243
168
progress("command help")
244
169
runcmd("bzr help st")
299
222
runcmd(['bzr', 'commit', '-m', 'rename nested subdirectories'])
302
assert backtick('bzr root')[:-1] == os.path.join(test_root, 'branch1')
303
225
runcmd('bzr move ../hello.txt .')
304
226
assert exists('./hello.txt')
305
assert backtick('bzr relpath hello.txt') == os.path.join('sub1', 'sub2', 'hello.txt\n')
306
assert backtick('bzr relpath ../../sub1/sub2/hello.txt') == os.path.join('sub1', 'sub2', 'hello.txt\n')
307
227
runcmd(['bzr', 'commit', '-m', 'move to parent directory'])
309
assert backtick('bzr relpath sub2/hello.txt') == os.path.join('sub1', 'sub2', 'hello.txt\n')
311
230
runcmd('bzr move sub2/hello.txt .')
312
231
assert exists('hello.txt')
314
f = file('hello.txt', 'wt')
315
f.write('some nice new content\n')
318
f = file('msg.tmp', 'wt')
319
f.write('this is my new commit\n')
322
runcmd('bzr commit -F msg.tmp')
324
assert backtick('bzr revno') == '5\n'
325
runcmd('bzr export -r 5 export-5.tmp')
326
runcmd('bzr export export.tmp')
333
progress("file with spaces in name")
334
mkdir('sub directory')
335
file('sub directory/file with spaces ', 'wt').write('see how this works\n')
338
runcmd('bzr commit -m add-spaces')
342
runcmd('bzr log --forward')
354
progress('status after remove')
355
mkdir('status-after-remove')
356
# see mail from William Dodé, 2005-05-25
357
# $ bzr init; touch a; bzr add a; bzr commit -m "add a"
358
# * looking for changes...
363
# bzr: local variable 'kind' referenced before assignment
364
# at /vrac/python/bazaar-ng/bzrlib/diff.py:286 in compare_trees()
365
# see ~/.bzr.log for debug information
366
cd('status-after-remove')
368
file('a', 'w').write('foo')
370
runcmd(['bzr', 'commit', '-m', 'add a'])
371
runcmd('bzr remove a')
376
progress('ignore patterns')
377
mkdir('ignorebranch')
380
assert backtick('bzr unknowns') == ''
382
file('foo.tmp', 'wt').write('tmp files are ignored')
383
assert backtick('bzr unknowns') == ''
385
file('foo.c', 'wt').write('int main() {}')
386
assert backtick('bzr unknowns') == 'foo.c\n'
387
runcmd('bzr add foo.c')
388
assert backtick('bzr unknowns') == ''
390
# 'ignore' works when creating the .bzignore file
391
file('foo.blah', 'wt').write('blah')
392
assert backtick('bzr unknowns') == 'foo.blah\n'
393
runcmd('bzr ignore *.blah')
394
assert backtick('bzr unknowns') == ''
395
assert file('.bzrignore', 'rb').read() == '*.blah\n'
397
# 'ignore' works when then .bzrignore file already exists
398
file('garh', 'wt').write('garh')
399
assert backtick('bzr unknowns') == 'garh\n'
400
runcmd('bzr ignore garh')
401
assert backtick('bzr unknowns') == ''
402
assert file('.bzrignore', 'rb').read() == '*.blah\ngarh\n'
409
progress("recursive and non-recursive add")
414
fp = os.path.join('foo', 'test.txt')
418
runcmd('bzr add --no-recurse foo')
419
runcmd('bzr file-id foo')
420
runcmd('bzr file-id ' + fp, 1) # not versioned yet
421
runcmd('bzr commit -m add-dir-only')
423
runcmd('bzr file-id ' + fp, 1) # still not versioned
425
runcmd('bzr add foo')
426
runcmd('bzr file-id ' + fp)
427
runcmd('bzr commit -m add-sub-file')
434
236
progress("all tests passed!")
435
237
except Exception, e: