import sys
import unittest
import warnings

from nose.plugins.skip import SkipTest
from nose.plugins.errorclass import ErrorClass, ErrorClassPlugin


class TestErrorClassWithStringException(unittest.TestCase):

    def test_string_exception_not_masked(self):
        if sys.version_info >= (3,):
            raise SkipTest("Python 3.x does not support string exceptions")

        class X(Exception):
            pass

        class EP(ErrorClassPlugin):
            xes = ErrorClass(X, label='XXX', isfailure=True)

        warnings.filterwarnings(action='ignore', category=DeprecationWarning)
        try:

            raise Exception("oh no!")
        except:
            exc = sys.exc_info()

        ep = EP()
        self.assertEqual(ep.addError(None, exc), None)
