예제 #1
0
    def test_nativeext_submanager(self):
        class Mine(instrumentation.ClassManager): pass
        class A(object):
            __sa_instrumentation_manager__ = Mine

        register_class(A)
        eq_(type(instrumentation.manager_of_class(A)), Mine)
예제 #2
0
    def test_nativeext_interfaceexact(self):
        class A(object):
            __sa_instrumentation_manager__ = instrumentation.InstrumentationManager

        register_class(A)
        ne_(type(instrumentation.manager_of_class(A)),
            instrumentation.ClassManager)
예제 #3
0
    def test_customfinder_pass(self):
        class A(object): pass
        def find(cls):
            return None

        instrumentation.instrumentation_finders.insert(0, find)
        register_class(A)
        eq_(type(instrumentation.manager_of_class(A)), instrumentation.ClassManager)
예제 #4
0
    def test_standard(self):
        class A(object):
            pass

        register_class(A)

        eq_(type(instrumentation.manager_of_class(A)),
            instrumentation.ClassManager)
예제 #5
0
    def test_alternate_finders(self):
        """Ensure the generic finder front-end deals with edge cases."""

        class Unknown(object): pass
        class Known(MyBaseClass): pass

        register_class(Known)
        k, u = Known(), Unknown()

        assert instrumentation.manager_of_class(Unknown) is None
        assert instrumentation.manager_of_class(Known) is not None
        assert instrumentation.manager_of_class(None) is None

        assert attributes.instance_state(k) is not None
        assert_raises((AttributeError, KeyError),
                          attributes.instance_state, u)
        assert_raises((AttributeError, KeyError),
                          attributes.instance_state, None)
예제 #6
0
    def test_nativeext_submanager(self):
        class Mine(instrumentation.ClassManager):
            pass

        class A(object):
            __sa_instrumentation_manager__ = Mine

        register_class(A)
        eq_(type(instrumentation.manager_of_class(A)), Mine)
예제 #7
0
    def test_nativeext_interfaceexact(self):
        class A(object):
            __sa_instrumentation_manager__ = \
                instrumentation.InstrumentationManager

        register_class(A)
        ne_(
            type(instrumentation.manager_of_class(A)),
            instrumentation.ClassManager)
예제 #8
0
    def test_standard(self):
        class A(object):
            pass

        register_class(A)

        eq_(
            type(instrumentation.manager_of_class(A)),
            instrumentation.ClassManager)
예제 #9
0
    def test_alternate_finders(self):
        """Ensure the generic finder front-end deals with edge cases."""
        class Unknown(object):
            pass

        class Known(MyBaseClass):
            pass

        register_class(Known)
        k, u = Known(), Unknown()

        assert instrumentation.manager_of_class(Unknown) is None
        assert instrumentation.manager_of_class(Known) is not None
        assert instrumentation.manager_of_class(None) is None

        assert attributes.instance_state(k) is not None
        assert_raises((AttributeError, KeyError), attributes.instance_state, u)
        assert_raises((AttributeError, KeyError), attributes.instance_state,
                      None)
예제 #10
0
    def test_customfinder_pass(self):
        class A(object):
            pass

        def find(cls):
            return None

        instrumentation.instrumentation_finders.insert(0, find)
        register_class(A)
        eq_(type(instrumentation.manager_of_class(A)),
            instrumentation.ClassManager)
예제 #11
0
    def test_subclassed(self):
        class MyEvents(events.InstanceEvents):
            pass
        class MyClassManager(instrumentation.ClassManager):
            dispatch = event.dispatcher(MyEvents)

        instrumentation.instrumentation_finders.insert(0, lambda cls: MyClassManager)

        class A(object): pass

        register_class(A)
        manager = instrumentation.manager_of_class(A)
        assert issubclass(manager.dispatch._events, MyEvents)
예제 #12
0
    def test_subclassed(self):
        class MyEvents(events.InstanceEvents):
            pass

        class MyClassManager(instrumentation.ClassManager):
            dispatch = event.dispatcher(MyEvents)

        instrumentation.instrumentation_finders.insert(
            0, lambda cls: MyClassManager)

        class A(object):
            pass

        register_class(A)
        manager = instrumentation.manager_of_class(A)
        assert issubclass(manager.dispatch._events, MyEvents)