~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_exceptions.py

(gz) Fix test failure on alpha by correcting format string for
 gc_chk_sha1_record (Martin [gz])

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""Tests for display of exceptions."""
18
18
 
19
 
import os
20
 
import re
 
19
import sys
21
20
 
22
21
from bzrlib import (
23
22
    bzrdir,
24
23
    config,
25
 
    controldir,
26
24
    errors,
27
25
    osutils,
28
26
    repository,
29
27
    tests,
30
28
    )
31
 
from bzrlib.repofmt.groupcompress_repo import RepositoryFormat2a
32
 
 
33
 
 
34
 
class TestExceptionReporting(tests.TestCaseInTempDir):
 
29
 
 
30
from bzrlib.tests import TestCase
 
31
 
 
32
 
 
33
class TestExceptionReporting(TestCase):
35
34
 
36
35
    def test_exception_exitcode(self):
37
36
        # we must use a subprocess, because the normal in-memory mechanism
44
43
                r'exceptions\.AssertionError: always fails\n')
45
44
        self.assertContainsRe(err, r'Bazaar has encountered an internal error')
46
45
 
47
 
    def test_undecodable_argv(self):
48
 
        """A user error must be reported if argv is not in the locale encoding
49
 
 
50
 
        A subprocess with an environment ascii-only setting is used so the test
51
 
        can run without worrying about the locale the test suite is using.
52
 
        """
53
 
        if os.name != "posix":
54
 
            raise tests.TestNotApplicable("Needs system beholden to C locales")
55
 
        out, err = self.run_bzr_subprocess(["\xa0"],
56
 
            env_changes={"LANG": "C", "LC_ALL": "C"},
57
 
            universal_newlines=True,
58
 
            retcode=errors.EXIT_ERROR)
59
 
        self.assertContainsRe(err, r"^bzr: ERROR: .*'\\xa0'.* unsupported",
60
 
            flags=re.MULTILINE)
61
 
        self.assertEquals(out, "")
62
 
 
63
 
 
64
 
class TestOptParseBugHandling(tests.TestCase):
 
46
 
 
47
class TestOptParseBugHandling(TestCase):
65
48
    "Test that we handle http://bugs.python.org/issue2931"
66
49
 
67
50
    def test_nonascii_optparse(self):
68
51
        """Reasonable error raised when non-ascii in option name"""
69
 
        error_re = 'Only ASCII permitted in option names'
 
52
        if sys.version_info < (2,5):
 
53
            error_re = 'no such option'
 
54
        else:
 
55
            error_re = 'Only ASCII permitted in option names'
70
56
        out = self.run_bzr_error([error_re], ['st',u'-\xe4'])
71
57
 
72
58
 
73
 
class TestObsoleteRepoFormat(RepositoryFormat2a):
74
 
 
75
 
    @classmethod
76
 
    def get_format_string(cls):
77
 
        return "Test Obsolete Repository Format"
78
 
 
79
 
    def is_deprecated(self):
80
 
        return True
81
 
 
82
 
 
83
59
class TestDeprecationWarning(tests.TestCaseWithTransport):
84
60
    """The deprecation warning is controlled via a global variable:
85
61
    repository._deprecation_warning_done. As such, it can be emitted only once
91
67
 
92
68
    def setUp(self):
93
69
        super(TestDeprecationWarning, self).setUp()
94
 
        self.addCleanup(repository.format_registry.remove,
95
 
            TestObsoleteRepoFormat)
96
 
        repository.format_registry.register(TestObsoleteRepoFormat)
97
 
        self.addCleanup(controldir.format_registry.remove, "testobsolete")
98
 
        bzrdir.register_metadir(controldir.format_registry, "testobsolete",
99
 
            "bzrlib.tests.blackbox.test_exceptions.TestObsoleteRepoFormat",
100
 
            branch_format='bzrlib.branch.BzrBranchFormat7',
101
 
            tree_format='bzrlib.workingtree_4.WorkingTreeFormat6',
102
 
            deprecated=True,
103
 
            help='Same as 2a, but with an obsolete repo format.')
104
70
        self.disable_deprecation_warning()
105
71
 
106
72
    def enable_deprecation_warning(self, repo=None):
113
79
 
114
80
    def make_obsolete_repo(self, path):
115
81
        # We don't want the deprecation raising during the repo creation
116
 
        format = controldir.format_registry.make_bzrdir("testobsolete")
117
 
        tree = self.make_branch_and_tree(path, format=format)
 
82
        tree = self.make_branch_and_tree(path, format=bzrdir.BzrDirFormat5())
118
83
        return tree
119
84
 
120
85
    def check_warning(self, present):
122
87
            check = self.assertContainsRe
123
88
        else:
124
89
            check = self.assertNotContainsRe
125
 
        check(self.get_log(), 'WARNING.*bzr upgrade')
 
90
        check(self._get_log(keep_log_file=True), 'WARNING.*bzr upgrade')
126
91
 
127
92
    def test_repository_deprecation_warning(self):
128
93
        """Old formats give a warning"""