# Path: airy/utils/unittest/result.py
# def failfast(method):
#     def inner(self, *args, **kw):
#     def __init__(self):
#     def startTest(self, test):
#     def startTestRun(self):
#     def stopTest(self, test):
#     def stopTestRun(self):
#     def addError(self, test, err):
#     def addFailure(self, test, err):
#     def addSuccess(self, test):
#     def addSkip(self, test, reason):
#     def addExpectedFailure(self, test, err):
#     def addUnexpectedSuccess(self, test):
#     def wasSuccessful(self):
#     def stop(self):
#     def _exc_info_to_string(self, err, test):
#     def _is_relevant_tb_level(self, tb):
#     def _count_relevant_tb_levels(self, tb):
#     def __repr__(self):
# STDOUT_LINE = '\nStdout:\n%s'
# STDERR_LINE = '\nStderr:\n%s'
# class TestResult(unittest.TestResult):


import sys
import difflib
import pprint
import re
import unittest
import warnings
from airy.utils.unittest import result
from airy.utils.unittest.util import\
    safe_repr, safe_str, strclass,\
    unorderable_list_difference
from airy.utils.unittest.compatibility import wraps
        self.addTypeEqualityFunc(list, 'assertListEqual')
        self.addTypeEqualityFunc(tuple, 'assertTupleEqual')
        self.addTypeEqualityFunc(set, 'assertSetEqual')
        self.addTypeEqualityFunc(frozenset, 'assertSetEqual')
        self.addTypeEqualityFunc(unicode, 'assertMultiLineEqual')

    def addTypeEqualityFunc(self, typeobj, function):
        """Add a type specific assertEqual style function to compare a type.

        This method is for use by TestCase subclasses that need to register
        their own type equality functions to provide nicer error messages.

        Args:
            typeobj: The data type to call this function on when both values
                    are of the same type in assertEqual().
            function: The callable taking two arguments and an optional
                    msg= argument that raises self.failureException with a
                    useful error message when the two arguments are not equal.
        """
        self._type_equality_funcs[typeobj] = function

    def addCleanup(self, function, *args, **kwargs):
        """Add a function, with arguments, to be called when the test is
        completed. Functions added are called on a LIFO basis and are
        called after tearDown on test failure or success.

        Cleanup items are called even if setUp fails (unlike tearDown)."""
        self._cleanups.append((function, args, kwargs))

    def setUp(self):

# Path: airy/utils/unittest/result.py
# def failfast(method):
#     def inner(self, *args, **kw):
#     def __init__(self):
#     def startTest(self, test):
#     def startTestRun(self):
#     def stopTest(self, test):
#     def stopTestRun(self):
#     def addError(self, test, err):
#     def addFailure(self, test, err):
#     def addSuccess(self, test):
#     def addSkip(self, test, reason):
#     def addExpectedFailure(self, test, err):
#     def addUnexpectedSuccess(self, test):
#     def wasSuccessful(self):
#     def stop(self):
#     def _exc_info_to_string(self, err, test):
#     def _is_relevant_tb_level(self, tb):
#     def _count_relevant_tb_levels(self, tb):
#     def __repr__(self):
# STDOUT_LINE = '\nStdout:\n%s'
# STDERR_LINE = '\nStderr:\n%s'
# class TestResult(unittest.TestResult):


# Path: airy/utils/unittest/case.py
import sys
import difflib
import pprint
import re
import unittest
import warnings
from airy.utils.unittest import result
from airy.utils.unittest.util import\
    safe_repr, safe_str, strclass,\
    unorderable_list_difference
from airy.utils.unittest.compatibility import wraps

        self.addTypeEqualityFunc(list, 'assertListEqual')
        self.addTypeEqualityFunc(tuple, 'assertTupleEqual')
        self.addTypeEqualityFunc(set, 'assertSetEqual')
        self.addTypeEqualityFunc(frozenset, 'assertSetEqual')
        self.addTypeEqualityFunc(unicode, 'assertMultiLineEqual')

    def addTypeEqualityFunc(self, typeobj, function):
        """Add a type specific assertEqual style function to compare a type.

        This method is for use by TestCase subclasses that need to register
        their own type equality functions to provide nicer error messages.

        Args:
            typeobj: The data type to call this function on when both values
                    are of the same type in assertEqual().
            function: The callable taking two arguments and an optional
                    msg= argument that raises self.failureException with a
                    useful error message when the two arguments are not equal.
        """
        self._type_equality_funcs[typeobj] = function

    def addCleanup(self, function, *args, **kwargs):
        """Add a function, with arguments, to be called when the test is
        completed. Functions added are called on a LIFO basis and are
        called after tearDown on test failure or success.

        Cleanup items are called even if setUp fails (unlike tearDown)."""
        self._cleanups.append((function, args, kwargs))

    def setUp(self):

        "Hook method for setting up the test fixture before exercising it."