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