[patch] add -Derror global option
John Arbash Meinel
john at arbash-meinel.com
Tue Oct 31 16:26:41 GMT 2006
Martin Pool wrote:
> This patch
>
> * Accepts -Danything as a global option, and stores them into a set of
> debugging flags. (The specific values are not validated, for code
> simplicity and so that they can be examined by plugins without
> needing to get into registration etc; anyhow this is intended for
> people who know what they're doing.)
>
> * With -Derror a traceback is printed on all errors, even if bzr
> thinks it's not an internal error. This is useful because we're
> sometimes wrong.
Well, right now we always log a traceback into ~/.bzr.log. Which is
actually *more* useful because you can go back and introspect what was
just going on.
I would prefer to not put variables into "bzrlib/__init__.py" directly.
It gets clumsy to import it in sub-modules.
If you look at user_encoding and __version__ which get imported in a few
other places.
Otherwise +1 from me. (It is nice to get patches from you again :)
John
=:->
>
>
>
> ------------------------------------------------------------------------
>
> === added file 'bzrlib/tests/blackbox/test_debug.py'
> --- bzrlib/tests/blackbox/test_debug.py 1970-01-01 00:00:00 +0000
> +++ bzrlib/tests/blackbox/test_debug.py 2006-10-26 14:28:47 +0000
> @@ -0,0 +1,32 @@
> +# Copyright (C) 2006 Canonical Ltd
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> +
> +"""Blackbox tests for -D debug options"""
> +
> +import os
> +
> +from bzrlib.tests import TestCase
> +
> +class TestDebugOption(TestCase):
> +
> + def test_dash_derror(self):
> + """With -Derror, tracebacks are shown even for user errors"""
> + out, err = self.run_bzr("-Derror", "branch", "nonexistent-location",
> + retcode=3)
> + # error output should contain a traceback
> + self.assertContainsRe(err, " raise errors\.NotBranchError")
> +
> +
>
> === modified file 'NEWS'
> --- NEWS 2006-10-24 14:12:53 +0000
> +++ NEWS 2006-10-26 14:24:35 +0000
> @@ -4,6 +4,10 @@
>
> INTERNALS:
>
> + * New -D option given before the command line turns on debugging output
> + for particular areas. -Derror shows tracebacks on all errors.
> + (Martin Pool)
> +
> BUG FIXES:
>
>
>
> === modified file 'bzrlib/__init__.py'
> --- bzrlib/__init__.py 2006-10-24 14:12:53 +0000
> +++ bzrlib/__init__.py 2006-10-26 14:20:31 +0000
> @@ -54,6 +54,9 @@
> 'Consider using bzrlib.ignores.add_unique_user_ignores'
> ' or bzrlib.ignores.add_runtime_ignores')
>
> +# Set of values that can enable printing particular debug messages
> +debug_flags = set()
> +
> def test_suite():
> import tests
> return tests.test_suite()
>
> === modified file 'bzrlib/commands.py'
> --- bzrlib/commands.py 2006-10-16 01:25:46 +0000
> +++ bzrlib/commands.py 2006-10-26 14:21:18 +0000
> @@ -533,6 +533,8 @@
> opt_builtin = True
> elif a in ('--quiet', '-q'):
> trace.be_quiet()
> + elif a.startswith('-D'):
> + bzrlib.debug_flags.add(a[2:])
> else:
> argv_copy.append(a)
> i += 1
>
> === modified file 'bzrlib/tests/blackbox/__init__.py'
> --- bzrlib/tests/blackbox/__init__.py 2006-10-11 23:08:27 +0000
> +++ bzrlib/tests/blackbox/__init__.py 2006-10-26 14:12:19 +0000
> @@ -51,6 +51,7 @@
> 'bzrlib.tests.blackbox.test_command_encoding',
> 'bzrlib.tests.blackbox.test_commit',
> 'bzrlib.tests.blackbox.test_conflicts',
> + 'bzrlib.tests.blackbox.test_debug',
> 'bzrlib.tests.blackbox.test_diff',
> 'bzrlib.tests.blackbox.test_exceptions',
> 'bzrlib.tests.blackbox.test_export',
>
> === modified file 'bzrlib/trace.py'
> --- bzrlib/trace.py 2006-10-16 01:25:46 +0000
> +++ bzrlib/trace.py 2006-10-26 14:27:36 +0000
> @@ -281,6 +281,13 @@
>
> # TODO: Should these be specially encoding the output?
> def report_user_error(exc_info, err_file):
> + """Report to err_file an error that's not an internal error.
> +
> + These don't get a traceback unless -Derror was given.
> + """
> + if 'error' in bzrlib.debug_flags:
> + report_bug(exc_info, err_file)
> + return
> print >>err_file, "bzr: ERROR:", str(exc_info[1])
>
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 254 bytes
Desc: OpenPGP digital signature
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20061031/96fce184/attachment.pgp
More information about the bazaar
mailing list