~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to testbzr

  • Committer: Martin Pool
  • Date: 2005-05-17 07:01:47 UTC
  • Revision ID: mbp@sourcefrog.net-20050517070147-c38da17418ea6711
- Add patch to give symlink support

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#! /usr/bin/python
2
 
# -*- coding: utf-8 -*-
3
2
 
4
3
# Copyright (C) 2005 Canonical Ltd
5
4
 
46
45
 
47
46
TESTDIR = "testbzr.tmp"
48
47
 
49
 
 
50
 
# we always invoke bzr as 'python bzr' (or e.g. 'python2.3 bzr')
51
 
# partly so as to cope if the bzr binary is not marked executable
52
 
OVERRIDE_PYTHON = 'python'
 
48
OVERRIDE_PYTHON = None
53
49
 
54
50
LOGFILENAME = 'testbzr.log'
55
51
 
145
141
 
146
142
logfile = open(LOGFILENAME, 'wt', buffering=1)
147
143
 
148
 
def test_plugins():
149
 
    """Run a test involving creating a plugin to load,
150
 
    and making sure it is seen properly.
151
 
    """
152
 
    mkdir('plugin_test')
153
 
    f = open(os.path.join('plugin_test', 'myplug.py'), 'wb')
154
 
    f.write("""import bzrlib, bzrlib.commands
155
 
class cmd_myplug(bzrlib.commands.Command):
156
 
    '''Just a simple test plugin.'''
157
 
    aliases = ['mplg']
158
 
    def run(self):
159
 
        print 'Hello from my plugin'
160
 
""")
161
 
    f.close()
162
 
 
163
 
    os.environ['BZRPLUGINPATH'] = os.path.abspath('plugin_test')
164
 
    help = backtick('bzr help commands')
165
 
    assert help.find('myplug') != -1
166
 
    assert help.find('Just a simple test plugin.') != -1
167
 
 
168
 
    
169
 
    assert backtick('bzr myplug') == 'Hello from my plugin\n'
170
 
    assert backtick('bzr mplg') == 'Hello from my plugin\n'
171
 
 
172
 
    f = open(os.path.join('plugin_test', 'override.py'), 'wb')
173
 
    f.write("""import bzrlib, bzrlib.commands
174
 
class cmd_commit(bzrlib.commands.cmd_commit):
175
 
    '''Commit changes into a new revision.'''
176
 
    def run(self, *args, **kwargs):
177
 
        print "I'm sorry dave, you can't do that"
178
 
 
179
 
class cmd_help(bzrlib.commands.cmd_help):
180
 
    '''Show help on a command or other topic.'''
181
 
    def run(self, *args, **kwargs):
182
 
        print "You have been overridden"
183
 
        bzrlib.commands.cmd_help.run(self, *args, **kwargs)
184
 
 
185
 
""")
186
 
    f.close()
187
 
 
188
 
    newhelp = backtick('bzr help commands')
189
 
    assert newhelp.startswith('You have been overridden\n')
190
 
    # We added a line, but the rest should work
191
 
    assert newhelp[25:] == help
192
 
 
193
 
    assert backtick('bzr commit -m test') == "I'm sorry dave, you can't do that\n"
194
 
    
195
 
    shutil.rmtree('plugin_test')
196
144
 
197
145
try:
198
146
    from getopt import getopt
209
157
    global BZRPATH
210
158
 
211
159
    if args:
212
 
        BZRPATH = args[0]
 
160
        BZRPATH = args[1]
213
161
    else:
214
162
        BZRPATH = os.path.join(os.path.split(mypath)[0], 'bzr')
215
163
 
217
165
    print '%-30s %s' % ('in directory', os.getcwd())
218
166
    print '%-30s %s' % ('with python', (OVERRIDE_PYTHON or '(default)'))
219
167
    print
220
 
    print backtick('bzr version')
 
168
    print backtick([BZRPATH, 'version'])
221
169
    
222
170
    runcmd(['mkdir', TESTDIR])
223
171
    cd(TESTDIR)
329
277
    runcmd("bzr add sub1")
330
278
    runcmd("bzr rename sub1 sub2")
331
279
    runcmd("bzr move hello.txt sub2")
332
 
    assert backtick("bzr relpath sub2/hello.txt") == os.path.join("sub2", "hello.txt\n")
 
280
    assert backtick("bzr relpath sub2/hello.txt") == "sub2/hello.txt\n"
333
281
 
334
282
    assert exists("sub2")
335
283
    assert exists("sub2/hello.txt")
353
301
    assert backtick('bzr root')[:-1] == os.path.join(test_root, 'branch1')
354
302
    runcmd('bzr move ../hello.txt .')
355
303
    assert exists('./hello.txt')
356
 
    assert backtick('bzr relpath hello.txt') == os.path.join('sub1', 'sub2', 'hello.txt\n')
357
 
    assert backtick('bzr relpath ../../sub1/sub2/hello.txt') == os.path.join('sub1', 'sub2', 'hello.txt\n')
 
304
    assert backtick('bzr relpath hello.txt') == 'sub1/sub2/hello.txt\n'
 
305
    assert backtick('bzr relpath ../../sub1/sub2/hello.txt') == 'sub1/sub2/hello.txt\n'
358
306
    runcmd(['bzr', 'commit', '-m', 'move to parent directory'])
359
307
    cd('..')
360
 
    assert backtick('bzr relpath sub2/hello.txt') == os.path.join('sub1', 'sub2', 'hello.txt\n')
 
308
    assert backtick('bzr relpath sub2/hello.txt') == 'sub1/sub2/hello.txt\n'
361
309
 
362
310
    runcmd('bzr move sub2/hello.txt .')
363
311
    assert exists('hello.txt')
389
337
    runcmd('bzr commit -m add-spaces')
390
338
    runcmd('bzr check')
391
339
 
392
 
    runcmd('bzr log')
393
 
    runcmd('bzr log --forward')
394
 
 
395
 
    runcmd('bzr info')
396
 
 
397
 
 
398
 
    
399
 
 
400
 
 
401
 
 
402
 
    cd('..')
403
 
    cd('..')
404
 
    progress('branch')
405
 
    # Can't create a branch if it already exists
406
 
    runcmd('bzr branch branch1', retcode=1)
407
 
    # Can't create a branch if its parent doesn't exist
408
 
    runcmd('bzr branch /unlikely/to/exist', retcode=1)
409
 
    runcmd('bzr branch branch1 branch2')
410
 
 
411
 
    progress("pull")
412
 
    cd('branch1')
413
 
    runcmd('bzr pull', retcode=1)
414
 
    runcmd('bzr pull ../branch2')
415
 
    cd('.bzr')
416
 
    runcmd('bzr pull')
417
 
    runcmd('bzr commit -m empty')
418
 
    runcmd('bzr pull')
419
 
    cd('../../branch2')
420
 
    runcmd('bzr pull')
421
 
    runcmd('bzr commit -m empty')
422
 
    cd('../branch1')
423
 
    runcmd('bzr commit -m empty')
424
 
    runcmd('bzr pull', retcode=1)
425
 
    cd ('..')
426
 
 
427
 
    progress('status after remove')
428
 
    mkdir('status-after-remove')
429
 
    # see mail from William Dodé, 2005-05-25
430
 
    # $ bzr init; touch a; bzr add a; bzr commit -m "add a"
431
 
    #     * looking for changes...
432
 
    #     added a
433
 
    #     * commited r1
434
 
    #     $ bzr remove a
435
 
    #     $ bzr status
436
 
    #     bzr: local variable 'kind' referenced before assignment
437
 
    #     at /vrac/python/bazaar-ng/bzrlib/diff.py:286 in compare_trees()
438
 
    #     see ~/.bzr.log for debug information
439
 
    cd('status-after-remove')
440
 
    runcmd('bzr init')
441
 
    file('a', 'w').write('foo')
442
 
    runcmd('bzr add a')
443
 
    runcmd(['bzr', 'commit', '-m', 'add a'])
444
 
    runcmd('bzr remove a')
445
 
    runcmd('bzr status')
446
 
 
 
340
    
 
341
    
 
342
    
 
343
    cd('..')
447
344
    cd('..')
448
345
 
449
346
    progress('ignore patterns')
474
371
    assert backtick('bzr unknowns') == ''
475
372
    assert file('.bzrignore', 'rb').read() == '*.blah\ngarh\n'
476
373
 
477
 
    cd('..')
478
 
 
479
 
 
480
 
 
481
 
 
482
 
    progress("recursive and non-recursive add")
483
 
    mkdir('no-recurse')
484
 
    cd('no-recurse')
485
 
    runcmd('bzr init')
486
 
    mkdir('foo')
487
 
    fp = os.path.join('foo', 'test.txt')
488
 
    f = file(fp, 'w')
489
 
    f.write('hello!\n')
490
 
    f.close()
491
 
    runcmd('bzr add --no-recurse foo')
492
 
    runcmd('bzr file-id foo')
493
 
    runcmd('bzr file-id ' + fp, 1)      # not versioned yet
494
 
    runcmd('bzr commit -m add-dir-only')
495
 
 
496
 
    runcmd('bzr file-id ' + fp, 1)      # still not versioned 
497
 
 
498
 
    runcmd('bzr add foo')
499
 
    runcmd('bzr file-id ' + fp)
500
 
    runcmd('bzr commit -m add-sub-file')
501
 
    
502
 
    cd('..')
503
 
 
504
 
 
505
 
 
506
 
 
507
 
    # Run any function in this 
508
 
    g = globals()
509
 
    funcs = g.keys()
510
 
    funcs.sort()
511
 
    for k in funcs:
512
 
        if k.startswith('test_') and callable(g[k]):
513
 
            progress(k[5:].replace('_', ' '))
514
 
            g[k]()
 
374
 
515
375
 
516
376
    progress("all tests passed!")
517
377
except Exception, e: