def test_onlyOldStyleMayBeDecorated(self): """ Using L{_oldstyle._oldStyle} on a new-style class on Python 2 will raise an exception. """ with self.assertRaises(ValueError) as e: _oldstyle._oldStyle(SomeNewStyleClass) self.assertEqual( e.exception.args[0], ("twisted.python._oldstyle._oldStyle is being used to decorate a " "new-style class (twisted.test.test_nooldstyle.SomeNewStyleClass)" ". This should only be used to decorate old-style classes."))
def test_noOpByDefault(self): """ On Python 3 or on Py2 when C{TWISTED_NEWSTYLE} is not set, L{_oldStyle._oldStyle} is a no-op. """ updatedClass = _oldstyle._oldStyle(SomeOldStyleClass) self.assertEqual(type(updatedClass), type(SomeOldStyleClass)) self.assertIs(updatedClass, SomeOldStyleClass)
def test_carriesAttributes(self): """ The class returned by L{_oldstyle._oldStyle} has the same C{__name__}, C{__module__}, and docstring (C{__doc__}) attributes as the original. """ updatedClass = _oldstyle._oldStyle(SomeOldStyleClass) self.assertEqual(updatedClass.__name__, SomeOldStyleClass.__name__) self.assertEqual(updatedClass.__doc__, SomeOldStyleClass.__doc__) self.assertEqual(updatedClass.__module__, SomeOldStyleClass.__module__)
def test_makesNewStyle(self): """ L{_oldstyle._oldStyle} wraps an old-style class and returns a new-style class that has the same functions, attributes, etc. """ self.assertEqual(type(SomeOldStyleClass), types.ClassType) updatedClass = _oldstyle._oldStyle(SomeOldStyleClass) self.assertEqual(type(updatedClass), type) self.assertEqual(updatedClass().func(), "hi") self.assertEqual(updatedClass().bar, "baz")