~bzr-pqm/bzr/bzr.dev

2713.2.1 by Martin Pool
Return exitcode 4 if an internal error occurs
1
# Copyright (C) 2006, 2007 Canonical Ltd
1740.5.1 by Martin Pool
When an unhandled exception occurs, write the traceback to stderr.
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1740.5.1 by Martin Pool
When an unhandled exception occurs, write the traceback to stderr.
16
17
"""Tests for display of exceptions."""
18
2830.2.2 by Martin Pool
Update test for report_exception to be cleaner and work with new run_bzr behavior
19
from cStringIO import StringIO
1740.5.1 by Martin Pool
When an unhandled exception occurs, write the traceback to stderr.
20
import os
21
import sys
22
2713.2.2 by Martin Pool
Add mention of exitcode 4 for internal errors
23
from bzrlib import (
24
    bzrdir,
25
    errors,
26
    repository,
2830.2.2 by Martin Pool
Update test for report_exception to be cleaner and work with new run_bzr behavior
27
    trace,
2713.2.2 by Martin Pool
Add mention of exitcode 4 for internal errors
28
    )
1551.9.3 by Aaron Bentley
Revert buggy apport changes
29
30
from bzrlib.tests import TestCaseInTempDir, TestCase
1740.5.6 by Martin Pool
Clean up many exception classes.
31
from bzrlib.errors import NotBranchError
1740.5.1 by Martin Pool
When an unhandled exception occurs, write the traceback to stderr.
32
2830.2.2 by Martin Pool
Update test for report_exception to be cleaner and work with new run_bzr behavior
33
1740.5.1 by Martin Pool
When an unhandled exception occurs, write the traceback to stderr.
34
class TestExceptionReporting(TestCase):
35
2830.2.11 by Martin Pool
Integrate testing of return codes/error reporting
36
    def test_exception_exitcode(self):
2830.2.7 by Martin Pool
Return exitcode 4 on internal error
37
        # we must use a subprocess, because the normal in-memory mechanism
38
        # allows errors to propagate up through the test suite
2830.2.10 by Martin Pool
merge trunk
39
        out, err = self.run_bzr_subprocess(['assert-fail'],
2947.3.1 by Alexander Belchenko
test_exceptions.py: run_bzr_subprocess should use universal_newlines=True
40
            universal_newlines=True,
2830.2.7 by Martin Pool
Return exitcode 4 on internal error
41
            retcode=errors.EXIT_INTERNAL_ERROR)
2830.2.11 by Martin Pool
Integrate testing of return codes/error reporting
42
        self.assertEqual(4, errors.EXIT_INTERNAL_ERROR)
1551.9.3 by Aaron Bentley
Revert buggy apport changes
43
        self.assertContainsRe(err,
4584.3.32 by Martin Pool
Correct blackbox tests for new apport message
44
                r'exceptions\.AssertionError: always fails\n')
45
        self.assertContainsRe(err, r'Bazaar has encountered an internal error')
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
46
1904.2.5 by Martin Pool
Fix format warning inside test suite and add test
47
48
class TestDeprecationWarning(TestCaseInTempDir):
49
50
    def test_repository_deprecation_warning(self):
51
        """Old formats give a warning"""
52
        # the warning's normally off for testing but we reenable it
53
        repository._deprecation_warning_done = False
54
        try:
55
            os.mkdir('foo')
56
            bzrdir.BzrDirFormat5().initialize('foo')
2552.2.3 by Vincent Ladeuil
Deprecate the varargs syntax and fix the tests.
57
            out, err = self.run_bzr("status foo")
1927.3.1 by Carl Friedrich Bolz
Throw away on-disk logfile when possible.
58
            self.assertContainsRe(self._get_log(keep_log_file=True),
59
                                  "bzr upgrade")
1904.2.5 by Martin Pool
Fix format warning inside test suite and add test
60
        finally:
61
            repository._deprecation_warning_done = True
62