~bzr-pqm/bzr/bzr.dev

3959.1.1 by Martin Pool
Remove redundant description of debug flags from debug.py
1
# Copyright (C) 2005, 2006, 2009 Canonical Ltd
2095.5.2 by Martin Pool
save commit message if commit fails (#32054)
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
2095.5.2 by Martin Pool
save commit message if commit fails (#32054)
16
2555.3.22 by Martin Pool
hook docs
17
"""Set of flags that enable different debug behaviour.
18
4070.8.3 by Martin Pool
Finish debug_flags support and add a test case
19
These are set with eg ``-Dlock`` on the bzr command line or in
20
~/.bazaar/bazaar.conf debug_flags.
2555.3.22 by Martin Pool
hook docs
21
4110.2.7 by Martin Pool
Split debug flags into their own help topic
22
See `bzr help debug-flags` or `bzrlib/help_topics/en/debug-flags.txt`
3959.1.1 by Martin Pool
Remove redundant description of debug flags from debug.py
23
for a list of the available options.
2555.3.22 by Martin Pool
hook docs
24
"""
3959.1.5 by Martin Pool
pep8 correctness (maybe) for global variables
25
6379.6.7 by Jelmer Vernooij
Move importing from future until after doc string, otherwise the doc string will disappear.
26
from __future__ import absolute_import
27
3959.1.5 by Martin Pool
pep8 correctness (maybe) for global variables
28
debug_flags = set()
4070.8.2 by Martin Pool
Initial support for debug_flags config option
29
30
31
def set_debug_flags_from_config():
32
    """Turn on debug flags based on the global configuration"""
33
6059.4.5 by Vincent Ladeuil
Migrate debug_flags to stack-based config.
34
    from bzrlib import config
4070.8.2 by Martin Pool
Initial support for debug_flags config option
35
6059.4.5 by Vincent Ladeuil
Migrate debug_flags to stack-based config.
36
    c = config.GlobalStack()
37
    for f in c.get('debug_flags'):
38
        debug_flags.add(f)
6082.3.1 by Vincent Ladeuil
Yes we can... debug blackbox tests interactively
39
40
6082.3.2 by Vincent Ladeuil
Simplify and fix test.debug too.
41
def set_trace():
6082.3.1 by Vincent Ladeuil
Yes we can... debug blackbox tests interactively
42
    """Pdb using original stdin and stdout.
43
44
    When debugging blackbox tests, sys.stdin and sys.stdout are captured for
45
    test purposes and cannot be used for interactive debugging. This class uses
46
    the origianl stdin/stdout to allow such use.
47
48
    Instead of doing:
49
50
       import pdb; pdb.set_trace()
51
52
    you can do:
53
54
       from bzrlib import debug; debug.set_trace()
55
    """
6082.3.4 by Vincent Ladeuil
Delay the required imports.
56
    import pdb
57
    import sys
6082.3.2 by Vincent Ladeuil
Simplify and fix test.debug too.
58
    pdb.Pdb(stdin=sys.__stdin__, stdout=sys.__stdout__
59
            ).set_trace(sys._getframe().f_back)