~ubuntu-branches/debian/squeeze/nose/squeeze

« back to all changes in this revision

Viewing changes to nose/plugins/debug.py

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Marek, Torsten Marek, Gustavo Noronha Silva
  • Date: 2008-06-12 13:39:43 UTC
  • mfrom: (1.2.1 upstream) (2.1.5 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080612133943-2q7syp67fwl4on13
Tags: 0.10.3-1

[Torsten Marek]
* New upstream release (Closes: #461994)
* debian/control
  - bump standards version to 3.8.0, no changes necessary
  - add suggestions for python-coverage (Closes: #457053)
  - change dependency on python-setuptools into 
    python-pkg-resources (Closes: #468719)
  - added myself to uploaders

[Gustavo Noronha Silva]
* debian/control:
  - remove -1 from build-dep on setuptools

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
"""
 
2
This plugin provides --pdb and --pdb-failures options that cause the
 
3
test runner to drop into pdb if it encounters an error or failure,
 
4
respectively.
 
5
"""
 
6
 
 
7
import os
 
8
import pdb
 
9
from nose.plugins.base import Plugin
 
10
 
 
11
class Pdb(Plugin):
 
12
    """
 
13
    Provides --pdb and --pdb-failures options that cause the test runner to
 
14
    drop into pdb if it encounters an error or failure, respectively.
 
15
    """
 
16
    enabled_for_errors = False
 
17
    enabled_for_failures = False
 
18
    score = 5 # run last, among builtins
 
19
    
 
20
    def options(self, parser, env=os.environ):
 
21
        parser.add_option(
 
22
            "--pdb", action="store_true", dest="debugErrors",
 
23
            default=env.get('NOSE_PDB', False),
 
24
            help="Drop into debugger on errors")
 
25
        parser.add_option(
 
26
            "--pdb-failures", action="store_true",
 
27
            dest="debugFailures",
 
28
            default=env.get('NOSE_PDB_FAILURES', False),
 
29
            help="Drop into debugger on failures")
 
30
 
 
31
    def configure(self, options, conf):
 
32
        self.conf = conf
 
33
        self.enabled = options.debugErrors or options.debugFailures
 
34
        self.enabled_for_errors = options.debugErrors
 
35
        self.enabled_for_failures = options.debugFailures
 
36
 
 
37
    def addError(self, test, err):
 
38
        if not self.enabled_for_errors:
 
39
            return
 
40
        self.debug(err)
 
41
 
 
42
    def addFailure(self, test, err):
 
43
        if not self.enabled_for_failures:
 
44
            return
 
45
        self.debug(err)
 
46
 
 
47
    def debug(self, err):
 
48
        import sys
 
49
        ec, ev, tb = err
 
50
        stdout = sys.stdout
 
51
        sys.stdout = sys.__stdout__
 
52
        try:
 
53
            pdb.post_mortem(tb)
 
54
        finally:
 
55
            sys.stdout = stdout