~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to testbzr

  • Committer: Martin Pool
  • Date: 2005-06-10 02:21:14 UTC
  • Revision ID: mbp@sourcefrog.net-20050610022114-8f49c9244a5b8e2f
- improved external-command patch from john

Show diffs side-by-side

added added

removed removed

Lines of Context:
145
145
 
146
146
logfile = open(LOGFILENAME, 'wt', buffering=1)
147
147
 
 
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')
148
196
 
149
197
try:
150
198
    from getopt import getopt
456
504
 
457
505
 
458
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]()
 
515
 
459
516
    progress("all tests passed!")
460
517
except Exception, e:
461
518
    sys.stderr.write('*' * 50 + '\n'