~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_commands.py

  • Committer: Florent Gallaire
  • Date: 2017-03-17 10:39:02 UTC
  • mto: This revision was merged to the branch mainline in revision 6622.
  • Revision ID: fgallaire@gmail.com-20170317103902-xsmafws9vn8rczx9
Fix for Windows and 32-bit platforms buggy gmtime().

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011 Canonical Ltd
 
1
# Copyright (C) 2005-2012, 2016 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
24
24
    config,
25
25
    errors,
26
26
    option,
27
 
    symbol_versioning,
28
27
    tests,
 
28
    trace,
29
29
    )
30
30
from bzrlib.commands import display_command
31
31
from bzrlib.tests import TestSkipped
98
98
            # We override the run() command method so we can observe the
99
99
            # overrides from inside.
100
100
            c = config.GlobalStack()
101
 
            self.assertEquals('12', c.get('xx'))
102
 
            self.assertEquals('foo', c.get('yy'))
 
101
            self.assertEqual('12', c.get('xx'))
 
102
            self.assertEqual('foo', c.get('yy'))
103
103
        self.overrideAttr(builtins.cmd_rocks, 'run', run)
104
104
        self.run_bzr(['rocks', '-Oxx=12', '-Oyy=foo'])
105
105
        c = config.GlobalStack()
106
106
        # Ensure that we don't leak outside of the command
107
 
        self.assertEquals(None, c.get('xx'))
108
 
        self.assertEquals(None, c.get('yy'))
 
107
        self.assertEqual(None, c.get('xx'))
 
108
        self.assertEqual(None, c.get('yy'))
109
109
 
110
110
 
111
111
class TestInvokedAs(tests.TestCase):
117
117
        # get one from the real get_cmd_object.
118
118
        c = commands.get_cmd_object('ci')
119
119
        self.assertIsInstance(c, builtins.cmd_commit)
120
 
        self.assertEquals(c.invoked_as, 'ci')
 
120
        self.assertEqual(c.invoked_as, 'ci')
121
121
 
122
122
 
123
123
class TestGetAlias(tests.TestCase):
194
194
class TestRegisterLazy(tests.TestCase):
195
195
 
196
196
    def setUp(self):
197
 
        tests.TestCase.setUp(self)
 
197
        super(TestRegisterLazy, self).setUp()
198
198
        import bzrlib.tests.fake_command
199
199
        del sys.modules['bzrlib.tests.fake_command']
200
200
        global lazy_command_imported
371
371
        cmds = list(commands.all_command_names())
372
372
        self.assertEqual(['called'], hook_calls)
373
373
        self.assertSubset(['foo', 'bar'], cmds)
 
374
 
 
375
class TestPreAndPostCommandHooks(tests.TestCase):
 
376
    class TestError(StandardError):
 
377
        __doc__ = """A test exception."""
 
378
 
 
379
    def test_pre_and_post_hooks(self):
 
380
        hook_calls = []
 
381
 
 
382
        def pre_command(cmd):
 
383
            self.assertEqual([], hook_calls)
 
384
            hook_calls.append('pre')
 
385
 
 
386
        def post_command(cmd):
 
387
            self.assertEqual(['pre', 'run'], hook_calls)
 
388
            hook_calls.append('post')
 
389
 
 
390
        def run(cmd):
 
391
            self.assertEqual(['pre'], hook_calls)
 
392
            hook_calls.append('run')
 
393
 
 
394
        self.overrideAttr(builtins.cmd_rocks, 'run', run)
 
395
        commands.install_bzr_command_hooks()
 
396
        commands.Command.hooks.install_named_hook(
 
397
            "pre_command", pre_command, None)
 
398
        commands.Command.hooks.install_named_hook(
 
399
            "post_command", post_command, None)
 
400
 
 
401
        self.assertEqual([], hook_calls)
 
402
        self.run_bzr(['rocks', '-Oxx=12', '-Oyy=foo'])
 
403
        self.assertEqual(['pre', 'run', 'post'], hook_calls)
 
404
 
 
405
    def test_post_hook_provided_exception(self):
 
406
        hook_calls = []
 
407
 
 
408
        def post_command(cmd):
 
409
            hook_calls.append('post')
 
410
 
 
411
        def run(cmd):
 
412
            hook_calls.append('run')
 
413
            raise self.TestError()
 
414
 
 
415
        self.overrideAttr(builtins.cmd_rocks, 'run', run)
 
416
        commands.install_bzr_command_hooks()
 
417
        commands.Command.hooks.install_named_hook(
 
418
            "post_command", post_command, None)
 
419
 
 
420
        self.assertEqual([], hook_calls)
 
421
        self.assertRaises(self.TestError, commands.run_bzr, [u'rocks'])
 
422
        self.assertEqual(['run', 'post'], hook_calls)
 
423
 
 
424
    def test_pre_command_error(self):
 
425
        """Ensure an BzrCommandError in pre_command aborts the command"""
 
426
 
 
427
        hook_calls = []
 
428
 
 
429
        def pre_command(cmd):
 
430
            hook_calls.append('pre')
 
431
            # verify that all subclasses of BzrCommandError caught too
 
432
            raise errors.BzrOptionError()
 
433
 
 
434
        def post_command(cmd, e):
 
435
            self.fail('post_command should not be called')
 
436
 
 
437
        def run(cmd):
 
438
            self.fail('command should not be called')
 
439
 
 
440
        self.overrideAttr(builtins.cmd_rocks, 'run', run)
 
441
        commands.install_bzr_command_hooks()
 
442
        commands.Command.hooks.install_named_hook(
 
443
            "pre_command", pre_command, None)
 
444
        commands.Command.hooks.install_named_hook(
 
445
            "post_command", post_command, None)
 
446
 
 
447
        self.assertEqual([], hook_calls)
 
448
        self.assertRaises(errors.BzrCommandError,
 
449
                          commands.run_bzr, [u'rocks'])
 
450
        self.assertEqual(['pre'], hook_calls)
 
451