| Index: third_party/twisted_8_1/twisted/test/test_reflect.py
|
| diff --git a/third_party/twisted_8_1/twisted/test/test_reflect.py b/third_party/twisted_8_1/twisted/test/test_reflect.py
|
| deleted file mode 100644
|
| index 5e970b8b4bd3086147e241316214a5e41cbbd35d..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/test/test_reflect.py
|
| +++ /dev/null
|
| @@ -1,491 +0,0 @@
|
| -# Copyright (c) 2001-2007 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -
|
| -"""
|
| -Test cases for twisted.reflect module.
|
| -"""
|
| -
|
| -import weakref, os
|
| -from ihooks import ModuleImporter
|
| -
|
| -try:
|
| - from collections import deque
|
| -except ImportError:
|
| - deque = None
|
| -
|
| -# Twisted Imports
|
| -from twisted.trial import unittest
|
| -from twisted.python import reflect
|
| -
|
| -
|
| -
|
| -class SettableTest(unittest.TestCase):
|
| - def setUp(self):
|
| - self.setter = reflect.Settable()
|
| -
|
| - def tearDown(self):
|
| - del self.setter
|
| -
|
| - def testSet(self):
|
| - self.setter(a=1, b=2)
|
| - self.failUnlessEqual(self.setter.a, 1)
|
| - self.failUnlessEqual(self.setter.b, 2)
|
| -
|
| -
|
| -class AccessorTester(reflect.Accessor):
|
| - def set_x(self, x):
|
| - self.y = x
|
| - self.reallySet('x',x)
|
| -
|
| - def get_z(self):
|
| - self.q = 1
|
| - return 1
|
| -
|
| - def del_z(self):
|
| - self.reallyDel("q")
|
| -
|
| -
|
| -class AccessorTest(unittest.TestCase):
|
| - def setUp(self):
|
| - self.tester = AccessorTester()
|
| -
|
| - def testSet(self):
|
| - self.tester.x = 1
|
| - self.failUnlessEqual(self.tester.x, 1)
|
| - self.failUnlessEqual(self.tester.y, 1)
|
| -
|
| - def testGet(self):
|
| - self.failUnlessEqual(self.tester.z, 1)
|
| - self.failUnlessEqual(self.tester.q, 1)
|
| -
|
| - def testDel(self):
|
| - self.tester.z
|
| - self.failUnlessEqual(self.tester.q, 1)
|
| - del self.tester.z
|
| - self.failUnlessEqual(hasattr(self.tester, "q"), 0)
|
| - self.tester.x = 1
|
| - del self.tester.x
|
| - self.failUnlessEqual(hasattr(self.tester, "x"), 0)
|
| -
|
| -
|
| -class LookupsTestCase(unittest.TestCase):
|
| - """
|
| - Tests for L{namedClass}, L{namedModule}, and L{namedAny}.
|
| - """
|
| -
|
| - def test_namedClassLookup(self):
|
| - """
|
| - L{namedClass} should return the class object for the name it is passed.
|
| - """
|
| - self.assertIdentical(
|
| - reflect.namedClass("twisted.python.reflect.Summer"),
|
| - reflect.Summer)
|
| -
|
| -
|
| - def test_namedModuleLookup(self):
|
| - """
|
| - L{namedModule} should return the module object for the name it is
|
| - passed.
|
| - """
|
| - self.assertIdentical(
|
| - reflect.namedModule("twisted.python.reflect"), reflect)
|
| -
|
| -
|
| - def test_namedAnyPackageLookup(self):
|
| - """
|
| - L{namedAny} should return the package object for the name it is passed.
|
| - """
|
| - import twisted.python
|
| - self.assertIdentical(
|
| - reflect.namedAny("twisted.python"), twisted.python)
|
| -
|
| - def test_namedAnyModuleLookup(self):
|
| - """
|
| - L{namedAny} should return the module object for the name it is passed.
|
| - """
|
| - self.assertIdentical(
|
| - reflect.namedAny("twisted.python.reflect"), reflect)
|
| -
|
| -
|
| - def test_namedAnyClassLookup(self):
|
| - """
|
| - L{namedAny} should return the class object for the name it is passed.
|
| - """
|
| - self.assertIdentical(
|
| - reflect.namedAny("twisted.python.reflect.Summer"), reflect.Summer)
|
| -
|
| -
|
| - def test_namedAnyAttributeLookup(self):
|
| - """
|
| - L{namedAny} should return the object an attribute of a non-module,
|
| - non-package object is bound to for the name it is passed.
|
| - """
|
| - # Note - not assertEqual because unbound method lookup creates a new
|
| - # object every time. This is a foolishness of Python's object
|
| - # implementation, not a bug in Twisted.
|
| - self.assertEqual(
|
| - reflect.namedAny("twisted.python.reflect.Summer.reallySet"),
|
| - reflect.Summer.reallySet)
|
| -
|
| -
|
| - def test_namedAnySecondAttributeLookup(self):
|
| - """
|
| - L{namedAny} should return the object an attribute of an object which
|
| - itself was an attribute of a non-module, non-package object is bound to
|
| - for the name it is passed.
|
| - """
|
| - self.assertIdentical(
|
| - reflect.namedAny(
|
| - "twisted.python.reflect.Summer.reallySet.__doc__"),
|
| - reflect.Summer.reallySet.__doc__)
|
| -
|
| -
|
| - def test_importExceptions(self):
|
| - """
|
| - Exceptions raised by modules which L{namedAny} causes to be imported
|
| - should pass through L{namedAny} to the caller.
|
| - """
|
| - self.assertRaises(
|
| - ZeroDivisionError,
|
| - reflect.namedAny, "twisted.test.reflect_helper_ZDE")
|
| - # Make sure that this behavior is *consistent* for 2.3, where there is
|
| - # no post-failed-import cleanup
|
| - self.assertRaises(
|
| - ZeroDivisionError,
|
| - reflect.namedAny, "twisted.test.reflect_helper_ZDE")
|
| - self.assertRaises(
|
| - ValueError,
|
| - reflect.namedAny, "twisted.test.reflect_helper_VE")
|
| - # Modules which themselves raise ImportError when imported should result in an ImportError
|
| - self.assertRaises(
|
| - ImportError,
|
| - reflect.namedAny, "twisted.test.reflect_helper_IE")
|
| -
|
| -
|
| - def test_attributeExceptions(self):
|
| - """
|
| - If segments on the end of a fully-qualified Python name represents
|
| - attributes which aren't actually present on the object represented by
|
| - the earlier segments, L{namedAny} should raise an L{AttributeError}.
|
| - """
|
| - self.assertRaises(
|
| - AttributeError,
|
| - reflect.namedAny, "twisted.nosuchmoduleintheworld")
|
| - # ImportError behaves somewhat differently between "import
|
| - # extant.nonextant" and "import extant.nonextant.nonextant", so test
|
| - # the latter as well.
|
| - self.assertRaises(
|
| - AttributeError,
|
| - reflect.namedAny, "twisted.nosuch.modulein.theworld")
|
| - self.assertRaises(
|
| - AttributeError,
|
| - reflect.namedAny, "twisted.python.reflect.Summer.nosuchattributeintheworld")
|
| -
|
| -
|
| - def test_invalidNames(self):
|
| - """
|
| - Passing a name which isn't a fully-qualified Python name to L{namedAny}
|
| - should result in a L{ValueError}.
|
| - """
|
| - # Finally, invalid module names should raise a ValueError
|
| - self.assertRaises(
|
| - ValueError,
|
| - reflect.namedAny, "")
|
| - self.assertRaises(
|
| - ValueError,
|
| - reflect.namedAny, "12345")
|
| - self.assertRaises(
|
| - ValueError,
|
| - reflect.namedAny, "@#$@(#.!@(#!@#")
|
| - # This case is kind of stupid and is mostly a historical accident.
|
| - self.assertRaises(
|
| - ValueError,
|
| - reflect.namedAny, "tcelfer.nohtyp.detsiwt")
|
| -
|
| -
|
| -
|
| -class ImportHooksLookupTests(LookupsTestCase):
|
| - """
|
| - Tests for lookup methods in the presence of L{ihooks}-style import hooks.
|
| - Runs all of the tests from L{LookupsTestCase} after installing a custom
|
| - import hook.
|
| - """
|
| - def setUp(self):
|
| - """
|
| - Perturb the normal import behavior subtly by installing an import
|
| - hook. No custom behavior is provided, but this adds some extra
|
| - frames to the call stack, which L{namedAny} must be able to account
|
| - for.
|
| - """
|
| - self.importer = ModuleImporter()
|
| - self.importer.install()
|
| -
|
| -
|
| - def tearDown(self):
|
| - """
|
| - Uninstall the custom import hook.
|
| - """
|
| - self.importer.uninstall()
|
| -
|
| -
|
| -
|
| -class ObjectGrep(unittest.TestCase):
|
| - def test_dictionary(self):
|
| - """
|
| - Test references search through a dictionnary, as a key or as a value.
|
| - """
|
| - o = object()
|
| - d1 = {None: o}
|
| - d2 = {o: None}
|
| -
|
| - self.assertIn("[None]", reflect.objgrep(d1, o, reflect.isSame))
|
| - self.assertIn("{None}", reflect.objgrep(d2, o, reflect.isSame))
|
| -
|
| - def test_list(self):
|
| - """
|
| - Test references search through a list.
|
| - """
|
| - o = object()
|
| - L = [None, o]
|
| -
|
| - self.assertIn("[1]", reflect.objgrep(L, o, reflect.isSame))
|
| -
|
| - def test_tuple(self):
|
| - """
|
| - Test references search through a tuple.
|
| - """
|
| - o = object()
|
| - T = (o, None)
|
| -
|
| - self.assertIn("[0]", reflect.objgrep(T, o, reflect.isSame))
|
| -
|
| - def test_instance(self):
|
| - """
|
| - Test references search through an object attribute.
|
| - """
|
| - class Dummy:
|
| - pass
|
| - o = object()
|
| - d = Dummy()
|
| - d.o = o
|
| -
|
| - self.assertIn(".o", reflect.objgrep(d, o, reflect.isSame))
|
| -
|
| - def test_weakref(self):
|
| - """
|
| - Test references search through a weakref object.
|
| - """
|
| - class Dummy:
|
| - pass
|
| - o = Dummy()
|
| - w1 = weakref.ref(o)
|
| -
|
| - self.assertIn("()", reflect.objgrep(w1, o, reflect.isSame))
|
| -
|
| - def test_boundMethod(self):
|
| - """
|
| - Test references search through method special attributes.
|
| - """
|
| - class Dummy:
|
| - def dummy(self):
|
| - pass
|
| - o = Dummy()
|
| - m = o.dummy
|
| -
|
| - self.assertIn(".im_self", reflect.objgrep(m, m.im_self, reflect.isSame))
|
| - self.assertIn(".im_class", reflect.objgrep(m, m.im_class, reflect.isSame))
|
| - self.assertIn(".im_func", reflect.objgrep(m, m.im_func, reflect.isSame))
|
| -
|
| - def test_everything(self):
|
| - """
|
| - Test references search using complex set of objects.
|
| - """
|
| - class Dummy:
|
| - def method(self):
|
| - pass
|
| -
|
| - o = Dummy()
|
| - D1 = {(): "baz", None: "Quux", o: "Foosh"}
|
| - L = [None, (), D1, 3]
|
| - T = (L, {}, Dummy())
|
| - D2 = {0: "foo", 1: "bar", 2: T}
|
| - i = Dummy()
|
| - i.attr = D2
|
| - m = i.method
|
| - w = weakref.ref(m)
|
| -
|
| - self.assertIn("().im_self.attr[2][0][2]{'Foosh'}", reflect.objgrep(w, o, reflect.isSame))
|
| -
|
| - def test_depthLimit(self):
|
| - """
|
| - Test the depth of references search.
|
| - """
|
| - a = []
|
| - b = [a]
|
| - c = [a, b]
|
| - d = [a, c]
|
| -
|
| - self.assertEquals(['[0]'], reflect.objgrep(d, a, reflect.isSame, maxDepth=1))
|
| - self.assertEquals(['[0]', '[1][0]'], reflect.objgrep(d, a, reflect.isSame, maxDepth=2))
|
| - self.assertEquals(['[0]', '[1][0]', '[1][1][0]'], reflect.objgrep(d, a, reflect.isSame, maxDepth=3))
|
| -
|
| - def test_deque(self):
|
| - """
|
| - Test references search through a deque object. Only for Python > 2.3.
|
| - """
|
| - o = object()
|
| - D = deque()
|
| - D.append(None)
|
| - D.append(o)
|
| -
|
| - self.assertIn("[1]", reflect.objgrep(D, o, reflect.isSame))
|
| -
|
| - if deque is None:
|
| - test_deque.skip = "Deque not available"
|
| -
|
| -
|
| -class GetClass(unittest.TestCase):
|
| - def testOld(self):
|
| - class OldClass:
|
| - pass
|
| - old = OldClass()
|
| - self.assertIn(reflect.getClass(OldClass).__name__, ('class', 'classobj'))
|
| - self.assertEquals(reflect.getClass(old).__name__, 'OldClass')
|
| -
|
| - def testNew(self):
|
| - class NewClass(object):
|
| - pass
|
| - new = NewClass()
|
| - self.assertEquals(reflect.getClass(NewClass).__name__, 'type')
|
| - self.assertEquals(reflect.getClass(new).__name__, 'NewClass')
|
| -
|
| -class Breakable(object):
|
| -
|
| - breakRepr = False
|
| - breakStr = False
|
| -
|
| - def __str__(self):
|
| - if self.breakStr:
|
| - raise self
|
| - else:
|
| - return '<Breakable>'
|
| -
|
| - def __repr__(self):
|
| - if self.breakRepr:
|
| - raise self
|
| - else:
|
| - return 'Breakable()'
|
| -
|
| -class BrokenType(Breakable, type):
|
| - breakName = False
|
| - def get___name__(self):
|
| - if self.breakName:
|
| - raise RuntimeError("no name")
|
| - return 'BrokenType'
|
| - __name__ = property(get___name__)
|
| -
|
| -class BTBase(Breakable):
|
| - __metaclass__ = BrokenType
|
| - breakRepr = True
|
| - breakStr = True
|
| -
|
| -
|
| -class NoClassAttr(object):
|
| - __class__ = property(lambda x: x.not_class)
|
| -
|
| -class SafeRepr(unittest.TestCase):
|
| -
|
| - def testWorkingRepr(self):
|
| - x = [1,2,3]
|
| - self.assertEquals(reflect.safe_repr(x), repr(x))
|
| -
|
| - def testBrokenRepr(self):
|
| - b = Breakable()
|
| - b.breakRepr = True
|
| - reflect.safe_repr(b)
|
| -
|
| - def testBrokenStr(self):
|
| - b = Breakable()
|
| - b.breakStr = True
|
| - reflect.safe_repr(b)
|
| -
|
| - def testBrokenClassRepr(self):
|
| - class X(BTBase):
|
| - breakRepr = True
|
| - reflect.safe_repr(X)
|
| - reflect.safe_repr(X())
|
| -
|
| - def testBrokenClassStr(self):
|
| - class X(BTBase):
|
| - breakStr = True
|
| - reflect.safe_repr(X)
|
| - reflect.safe_repr(X())
|
| -
|
| - def testBroken__Class__Attr(self):
|
| - reflect.safe_repr(NoClassAttr())
|
| -
|
| - def testBroken__Class__Name__Attr(self):
|
| - class X(BTBase):
|
| - breakName = True
|
| - reflect.safe_repr(X())
|
| -
|
| -
|
| -class SafeStr(unittest.TestCase):
|
| - def testWorkingStr(self):
|
| - x = [1,2,3]
|
| - self.assertEquals(reflect.safe_str(x), str(x))
|
| -
|
| - def testBrokenStr(self):
|
| - b = Breakable()
|
| - b.breakStr = True
|
| - reflect.safe_str(b)
|
| -
|
| - def testBrokenRepr(self):
|
| - b = Breakable()
|
| - b.breakRepr = True
|
| - reflect.safe_str(b)
|
| -
|
| - def testBrokenClassStr(self):
|
| - class X(BTBase):
|
| - breakStr = True
|
| - reflect.safe_str(X)
|
| - reflect.safe_str(X())
|
| -
|
| - def testBrokenClassRepr(self):
|
| - class X(BTBase):
|
| - breakRepr = True
|
| - reflect.safe_str(X)
|
| - reflect.safe_str(X())
|
| -
|
| - def testBroken__Class__Attr(self):
|
| - reflect.safe_str(NoClassAttr())
|
| -
|
| - def testBroken__Class__Name__Attr(self):
|
| - class X(BTBase):
|
| - breakName = True
|
| - reflect.safe_str(X())
|
| -
|
| -
|
| -class FilenameToModule(unittest.TestCase):
|
| - """
|
| - Test L{reflect.filenameToModuleName} detection.
|
| - """
|
| - def test_directory(self):
|
| - """
|
| - Tests it finds good name for directories/packages.
|
| - """
|
| - module = reflect.filenameToModuleName(os.path.join('twisted', 'test'))
|
| - self.assertEquals(module, 'test')
|
| - module = reflect.filenameToModuleName(os.path.join('twisted', 'test')
|
| - + os.path.sep)
|
| - self.assertEquals(module, 'test')
|
| -
|
| - def test_file(self):
|
| - """
|
| - Test it finds good name for files.
|
| - """
|
| - module = reflect.filenameToModuleName(
|
| - os.path.join('twisted', 'test', 'test_reflect.py'))
|
| - self.assertEquals(module, 'test_reflect')
|
| -
|
|
|