awips2/pythonPackages/nose/unit_tests/test_pdb_plugin.py
root 06a8b51d6d Initial revision of AWIPS2 11.9.0-7p5
Former-commit-id: 64fa9254b946eae7e61bbc3f513b7c3696c4f54f
2012-01-06 08:55:05 -06:00

117 lines
3.2 KiB
Python
Executable file

import sys
import unittest
from nose.config import Config
from nose.plugins import debug
from optparse import OptionParser
from StringIO import StringIO
class StubPdb:
called = False
def post_mortem(self, tb):
self.called = True
class TestPdbPlugin(unittest.TestCase):
def setUp(self):
self._pdb = debug.pdb
self._so = sys.stdout
debug.pdb = StubPdb()
def tearDown(self):
debug.pdb = self._pdb
sys.stdout = self._so
def test_plugin_api(self):
p = debug.Pdb()
p.addOptions
p.configure
p.addError
p.addFailure
def test_plugin_calls_pdb(self):
p = debug.Pdb()
try:
raise Exception("oops")
except:
err = sys.exc_info()
p.enabled = True
p.enabled_for_errors = True
p.enabled_for_failures = True
p.addError(None, err)
assert debug.pdb.called, "Did not call pdb.post_mortem on error"
debug.pdb.called = False
p.addFailure(None, err)
assert debug.pdb.called, "Did not call pdb.post_mortem on failure"
def test_command_line_options_enable(self):
parser = OptionParser()
p = debug.Pdb()
p.addOptions(parser)
options, args = parser.parse_args(['test_configuration',
'--pdb',
'--pdb-failures'])
p.configure(options, Config())
assert p.enabled
assert p.enabled_for_errors
assert p.enabled_for_failures
def test_disabled_by_default(self):
p = debug.Pdb()
assert not p.enabled
assert not p.enabled_for_failures
parser = OptionParser()
p.addOptions(parser)
options, args = parser.parse_args(['test_configuration'])
p.configure(options, Config())
assert not p.enabled
assert not p.enabled_for_errors
assert not p.enabled_for_failures
def test_env_settings_enable(self):
p = debug.Pdb()
assert not p.enabled
assert not p.enabled_for_failures
env = {'NOSE_PDB': '1',
'NOSE_PDB_FAILURES': '1'}
parser = OptionParser()
p.addOptions(parser, env)
options, args = parser.parse_args(['test_configuration'])
p.configure(options, Config())
assert p.enabled
assert p.enabled_for_errors
assert p.enabled_for_failures
def test_real_stdout_restored_before_call(self):
class CheckStdout(StubPdb):
def post_mortem(self, tb):
assert sys.stdout is sys.__stdout__, \
"sys.stdout was not restored to sys.__stdout__ " \
"before call"
debug.pdb = CheckStdout()
patch = StringIO()
sys.stdout = patch
p = debug.Pdb()
p.enabled = True
p.enabled_for_errors = True
try:
raise Exception("oops")
except:
err = sys.exc_info()
p.addError(None, err)
assert sys.stdout is patch, "sys.stdout was not reset after call"
if __name__ == '__main__':
unittest.main()