~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_errors.py

After adding a pseudo-failure update the stored test count again

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006-2011 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
25
25
    bzrdir,
26
26
    errors,
27
27
    osutils,
28
 
    symbol_versioning,
29
28
    urlutils,
30
29
    )
31
 
from bzrlib.tests import TestCase, TestCaseWithTransport, TestSkipped
 
30
from bzrlib.tests import (
 
31
    TestCase,
 
32
    TestCaseWithTransport,
 
33
    TestSkipped,
 
34
    )
32
35
 
33
36
 
34
37
class TestErrors(TestCaseWithTransport):
297
300
            str(error))
298
301
 
299
302
    def test_up_to_date(self):
300
 
        error = errors.UpToDateFormat(bzrdir.BzrDirFormat4())
301
 
        self.assertEqualDiff("The branch format All-in-one "
302
 
                             "format 4 is already at the most "
303
 
                             "recent format.",
304
 
                             str(error))
 
303
        error = errors.UpToDateFormat("someformat")
 
304
        self.assertEqualDiff(
 
305
            "The branch format someformat is already at the most "
 
306
            "recent format.", str(error))
305
307
 
306
308
    def test_corrupt_repository(self):
307
309
        repo = self.make_repository('.')
575
577
        try:
576
578
            1/0
577
579
        except ZeroDivisionError:
578
 
            exc_info = sys.exc_info()
579
 
        err = errors.HookFailed('hook stage', 'hook name', exc_info, warn=False)
580
 
        self.assertStartsWith(
581
 
            str(err), 'Hook \'hook name\' during hook stage failed:\n')
582
 
        self.assertEndsWith(
583
 
            str(err), 'integer division or modulo by zero')
 
580
            err = errors.HookFailed('hook stage', 'hook name', sys.exc_info(),
 
581
                warn=False)
 
582
        # GZ 2010-11-08: Should not store exc_info in exception instances, but
 
583
        #                HookFailed is deprecated anyway and could maybe go.
 
584
        try:
 
585
            self.assertStartsWith(
 
586
                str(err), 'Hook \'hook name\' during hook stage failed:\n')
 
587
            self.assertEndsWith(
 
588
                str(err), 'integer division or modulo by zero')
 
589
        finally:
 
590
            del err
584
591
 
585
592
    def test_tip_change_rejected(self):
586
593
        err = errors.TipChangeRejected(u'Unicode message\N{INTERROBANG}')
609
616
        try:
610
617
            raise Exception("example error")
611
618
        except Exception:
612
 
            exc_info = sys.exc_info()
613
 
        err = errors.SmartMessageHandlerError(exc_info)
614
 
        self.assertStartsWith(
615
 
            str(err), "The message handler raised an exception:\n")
616
 
        self.assertEndsWith(str(err), "Exception: example error\n")
 
619
            err = errors.SmartMessageHandlerError(sys.exc_info())
 
620
        # GZ 2010-11-08: Should not store exc_info in exception instances.
 
621
        try:
 
622
            self.assertStartsWith(
 
623
                str(err), "The message handler raised an exception:\n")
 
624
            self.assertEndsWith(str(err), "Exception: example error\n")
 
625
        finally:
 
626
            del err
617
627
 
618
628
    def test_must_have_working_tree(self):
619
629
        err = errors.MustHaveWorkingTree('foo', 'bar')
672
682
        err = errors.NotBranchError('path', bzrdir=bzrdir)
673
683
        self.assertEqual('Not a branch: "path".', str(err))
674
684
 
 
685
    def test_not_branch_bzrdir_with_recursive_not_branch_error(self):
 
686
        class FakeBzrDir(object):
 
687
            def open_repository(self):
 
688
                # str() on the NotBranchError will trigger a call to this,
 
689
                # which in turn will another, identical NotBranchError.
 
690
                raise errors.NotBranchError('path', bzrdir=FakeBzrDir())
 
691
        err = errors.NotBranchError('path', bzrdir=FakeBzrDir())
 
692
        self.assertEqual('Not a branch: "path".', str(err))
 
693
 
675
694
    def test_not_branch_laziness(self):
676
695
        real_bzrdir = self.make_bzrdir('path')
677
696
        class FakeBzrDir(object):