diff options
Diffstat (limited to 'src/zope/traversing/tests')
-rw-r--r-- | src/zope/traversing/tests/test_conveniencefunctions.py | 70 | ||||
-rw-r--r-- | src/zope/traversing/tests/test_dependencies.py | 7 | ||||
-rw-r--r-- | src/zope/traversing/tests/test_lang.py | 1 | ||||
-rw-r--r-- | src/zope/traversing/tests/test_namespacetrversal.py | 13 | ||||
-rw-r--r-- | src/zope/traversing/tests/test_presentation.py | 3 | ||||
-rw-r--r-- | src/zope/traversing/tests/test_publicationtraverse.py | 14 | ||||
-rw-r--r-- | src/zope/traversing/tests/test_skin.py | 3 | ||||
-rw-r--r-- | src/zope/traversing/tests/test_traverser.py | 16 | ||||
-rw-r--r-- | src/zope/traversing/tests/test_vh.py | 21 | ||||
-rw-r--r-- | src/zope/traversing/tests/test_vhosting.py | 16 |
10 files changed, 93 insertions, 71 deletions
diff --git a/src/zope/traversing/tests/test_conveniencefunctions.py b/src/zope/traversing/tests/test_conveniencefunctions.py index a42c3f3..1f8baf7 100644 --- a/src/zope/traversing/tests/test_conveniencefunctions.py +++ b/src/zope/traversing/tests/test_conveniencefunctions.py @@ -34,11 +34,11 @@ from zope.traversing.testing import contained class C(object): __parent__ = None __name__ = None + def __init__(self, name): self.name = name - class TestFunctional(PlacelessSetup, unittest.TestCase): def setUp(self): @@ -64,7 +64,8 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): self.tr = Traverser(root) zope.component.provideAdapter(Traverser, (None,), ITraverser) - zope.component.provideAdapter(DefaultTraversable, (None,), ITraversable) + zope.component.provideAdapter( + DefaultTraversable, (None,), ITraversable) zope.component.provideAdapter(LocationPhysicallyLocatable, (None,), ILocationInfo) zope.component.provideAdapter(RootPhysicallyLocatable, @@ -75,7 +76,7 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): self.assertEqual( traverse(self.item, '/folder/item'), self.tr.traverse('/folder/item') - ) + ) def test_traverse_with_default(self): from zope.traversing.api import traverse @@ -90,7 +91,7 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): TypeError, traverse, self.unwrapped_item, '/folder/item' - ) + ) def testTraverseName(self): from zope.traversing.api import traverseName @@ -123,17 +124,17 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): LocationError, traverseName, self.folder, '../root' - ) + ) self.assertRaises( LocationError, traverseName, self.folder, '/root' - ) + ) self.assertRaises( LocationError, traverseName, self.folder, './item' - ) + ) def testTraverseNameUnicode(self): from zope.interface import implementer @@ -152,27 +153,26 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): traverseName, BrokenTraversable(), '') - def testGetName(self): from zope.traversing.api import getName self.assertEqual( getName(self.item), 'item' - ) + ) def testGetParent(self): from zope.traversing.api import getParent self.assertEqual( getParent(self.item), self.folder - ) + ) def testGetParentFromRoot(self): from zope.traversing.api import getParent self.assertEqual( getParent(self.root), None - ) + ) def testGetParentBrokenChain(self): from zope.traversing.api import getParent @@ -180,7 +180,7 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): TypeError, getParent, self.broken_chain_folder - ) + ) def testGetParentFromUnwrapped(self): from zope.traversing.api import getParent @@ -188,14 +188,14 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): TypeError, getParent, self.unwrapped_item - ) + ) def testGetParents(self): from zope.traversing.api import getParents self.assertEqual( getParents(self.item), [self.folder, self.root] - ) + ) def testGetParentsBrokenChain(self): from zope.traversing.api import getParents @@ -203,35 +203,35 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): TypeError, getParents, self.broken_chain_item - ) + ) def testGetPath(self): from zope.traversing.api import getPath self.assertEqual( getPath(self.item), u'/folder/item' - ) + ) def testGetPathOfRoot(self): from zope.traversing.api import getPath self.assertEqual( getPath(self.root), u'/', - ) + ) def testGetNameOfRoot(self): from zope.traversing.api import getName self.assertEqual( getName(self.root), u'', - ) + ) def testGetRoot(self): from zope.traversing.api import getRoot self.assertEqual( getRoot(self.item), self.root - ) + ) def testCanonicalPath(self): @@ -250,7 +250,7 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): (IndexError, '/a/../..'), (ValueError, '/a//v'), - ) + ) # sequence of N-tuples: # (loc_returned_as_string, input, input, ...) @@ -263,17 +263,17 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): # arguments to try in addition to the above '/xx/yy/zz', '/xx/./yy/ww/../zz', - ), + ), (u'/xx/yy/zz', '/xx/yy/zz', - ), + ), (u'/xx', '/xx', - ), + ), (u'/', '/', self.root, - ), + ), ) from zope.traversing.api import canonicalPath @@ -287,7 +287,6 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): self.assertEqual(canonicalPath(argument), correct_answer, "failure on %s" % argument) - def test_normalizePath(self): _bad_locations = ( @@ -295,7 +294,7 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): (ValueError, '/foo//bar'), (IndexError, '/a/../..'), (IndexError, '/a/./../..'), - ) + ) # sequence of N-tuples: # (loc_returned_as_string, input, input, ...) @@ -309,25 +308,24 @@ class TestFunctional(PlacelessSetup, unittest.TestCase): '/xx/yy/zz', '/xx/./yy/ww/../zz', '/xx/./yy/ww/./../zz', - ), + ), ('xx/yy/zz', # arguments to try in addition to the above 'xx/yy/zz', 'xx/./yy/ww/../zz', 'xx/./yy/ww/./../zz', - ), + ), ('/xx/yy/zz', '/xx/yy/zz', - ), + ), ('/xx', '/xx', - ), + ), ('/', '/', - ), + ), ) - from zope.traversing.api import _normalizePath for error_type, value in _bad_locations: @@ -390,14 +388,18 @@ class TestStandalone(unittest.TestCase): # Unlike TestFunctional, we don't register gobs of # adapters, making these tests more self-contained - assertRaisesRegex = getattr(unittest.TestCase, 'assertRaisesRegex', - getattr(unittest.TestCase, 'assertRaisesRegexp')) + assertRaisesRegex = getattr( + unittest.TestCase, + 'assertRaisesRegex', + getattr(unittest.TestCase, 'assertRaisesRegexp')) # PY2 def test_getParent_no_location_info(self): from zope.traversing.api import getParent test = self + class Context(object): called = False + def __conform__(self, iface): self.called = True test.assertEqual(iface, ILocationInfo) diff --git a/src/zope/traversing/tests/test_dependencies.py b/src/zope/traversing/tests/test_dependencies.py index 7466181..49fa092 100644 --- a/src/zope/traversing/tests/test_dependencies.py +++ b/src/zope/traversing/tests/test_dependencies.py @@ -1,6 +1,5 @@ import unittest -import zope.component from zope.configuration.xmlconfig import XMLConfig from zope.publisher.browser import TestRequest @@ -19,9 +18,3 @@ class ZCMLDependencies(unittest.TestCase): import zope.traversing.namespace self.assertTrue(isinstance(res, zope.traversing.namespace.lang)) self.assertTrue(res.context is self) - - -def test_suite(): - suite = unittest.TestSuite() - suite.addTest(unittest.makeSuite(ZCMLDependencies)) - return suite diff --git a/src/zope/traversing/tests/test_lang.py b/src/zope/traversing/tests/test_lang.py index 23a53f8..8590161 100644 --- a/src/zope/traversing/tests/test_lang.py +++ b/src/zope/traversing/tests/test_lang.py @@ -34,6 +34,7 @@ class TestRequest(test_browserlanguages.TestRequest): def shiftNameToApplication(self): self.shifted = True + class Test(CleanUp, unittest.TestCase): def setUp(self): diff --git a/src/zope/traversing/tests/test_namespacetrversal.py b/src/zope/traversing/tests/test_namespacetrversal.py index bde1aeb..cadbd78 100644 --- a/src/zope/traversing/tests/test_namespacetrversal.py +++ b/src/zope/traversing/tests/test_namespacetrversal.py @@ -37,6 +37,7 @@ class TestSimpleHandler(unittest.TestCase): h = namespace.SimpleHandler(42, 43) self.assertEqual(h.context, 42) + class TestFunctions(unittest.TestCase): def test_getResource_not_found(self): @@ -76,6 +77,7 @@ class TestEtc(PlacelessSetup, unittest.TestCase): def test_traverse_site_no_manager(self): test = self + class Context(object): def __getattribute__(self, name): test.assertEqual(name, 'getSiteManager') @@ -91,6 +93,7 @@ class TestEtc(PlacelessSetup, unittest.TestCase): def test_traverse_site_lookup_error(self): class Context(object): called = False + def getSiteManager(self): self.called = True from zope.component import ComponentLookupError @@ -106,7 +109,8 @@ class TestEtc(PlacelessSetup, unittest.TestCase): def test_traverse_utility(self): from zope.traversing.interfaces import IEtcNamespace - component.provideUtility(self, provides=IEtcNamespace, name='my etc name') + component.provideUtility( + self, provides=IEtcNamespace, name='my etc name') result = namespace.etc(None, None).traverse('my etc name', ()) self.assertIs(result, self) @@ -124,14 +128,17 @@ class TestView(unittest.TestCase): class TestVh(unittest.TestCase): - assertRaisesRegex = getattr(unittest.TestCase, 'assertRaisesRegex', - getattr(unittest.TestCase, 'assertRaisesRegexp')) + assertRaisesRegex = getattr( + unittest.TestCase, + 'assertRaisesRegex', + getattr(unittest.TestCase, 'assertRaisesRegexp')) # PY2 def test_invalid_vh(self): with self.assertRaisesRegex(ValueError, 'Vhost directive should have the form'): namespace.vh(None, None).traverse(u'invalid name', ()) + def test_suite(): checker = RENormalizing([ # Python 3 includes module name in exceptions diff --git a/src/zope/traversing/tests/test_presentation.py b/src/zope/traversing/tests/test_presentation.py index 10a9039..17b9df6 100644 --- a/src/zope/traversing/tests/test_presentation.py +++ b/src/zope/traversing/tests/test_presentation.py @@ -29,15 +29,18 @@ from zope.traversing.testing import browserView class IContent(Interface): pass + @implementer(IContent) class Content(object): pass + class Resource(object): def __init__(self, request): pass + class View(object): def __init__(self, content, request): diff --git a/src/zope/traversing/tests/test_publicationtraverse.py b/src/zope/traversing/tests/test_publicationtraverse.py index 086177e..8218314 100644 --- a/src/zope/traversing/tests/test_publicationtraverse.py +++ b/src/zope/traversing/tests/test_publicationtraverse.py @@ -135,7 +135,6 @@ class TestPublicationTraverser(CleanUp, unittest.TestCase): self.assertRaises( NotFound, t.traversePath, request, ob, '/++skin++missingskin') - def test_traversePath_trailing_slash(self): class Traverser(PublicationTraverser): def __init__(self): @@ -144,7 +143,6 @@ class TestPublicationTraverser(CleanUp, unittest.TestCase): def traverseName(self, request, ob, name): self.names.append(name) - t = Traverser() t.traversePath(None, None, 'abc/def/') self.assertEqual(t.names, ['abc', 'def']) @@ -158,7 +156,6 @@ class TestPublicationTraverser(CleanUp, unittest.TestCase): # complained yet. self.assertEqual(t.names, ['abc', 'def', '', '']) - def test_traversePath_double_dots_cannot_remove(self): class Traverser(PublicationTraverser): def __init__(self): @@ -167,20 +164,20 @@ class TestPublicationTraverser(CleanUp, unittest.TestCase): def traverseName(self, request, ob, name): self.names.append(name) - t = Traverser() t.traversePath(None, None, '..') self.assertEqual(t.names, ['..']) def test_traverseRelativeURL_to_no_browser_publisher(self): test = self + class Traverser(PublicationTraverser): def traversePath(self, request, ob, path): return ob - class Context(object): called = False + def __conform__(self, iface): self.called = True test.assertEqual(iface, IBrowserPublisher) @@ -193,6 +190,7 @@ class TestPublicationTraverser(CleanUp, unittest.TestCase): self.assertTrue(context.called) + class TestBeforeTraverseEvent(unittest.TestCase): def test_interfaces(self): @@ -208,17 +206,21 @@ class TestBeforeTraverseEvent(unittest.TestCase): self.assertIs(target, ob.object) verifyObject(IBeforeTraverseEvent, ob) + class IContent(Interface): pass + @implementer(IContent) class Content(object): pass + class View(object): def __init__(self, name): self.name = name + @implementer(ITraversable) class DummyViewTraverser(object): @@ -228,6 +230,7 @@ class DummyViewTraverser(object): def traverse(self, name, furtherPath): return View(name) + @implementer(IPublishTraverse) class DummyPublishTraverse(object): @@ -237,6 +240,7 @@ class DummyPublishTraverse(object): def publishTraverse(self, request, name): return View(name) + @implementer(IBrowserPublisher) class DummyBrowserPublisher(object): diff --git a/src/zope/traversing/tests/test_skin.py b/src/zope/traversing/tests/test_skin.py index bd2c4d1..8460428 100644 --- a/src/zope/traversing/tests/test_skin.py +++ b/src/zope/traversing/tests/test_skin.py @@ -26,8 +26,11 @@ class FauxRequest(object): def shiftNameToApplication(self): self.shifted = 1 + class IFoo(Interface): pass + + directlyProvides(IFoo, IBrowserSkinType) diff --git a/src/zope/traversing/tests/test_traverser.py b/src/zope/traversing/tests/test_traverser.py index 492cccd..69ff88b 100644 --- a/src/zope/traversing/tests/test_traverser.py +++ b/src/zope/traversing/tests/test_traverser.py @@ -48,10 +48,12 @@ class ParticipationStub(object): self.principal = principal self.interaction = None + class C(Contained): def __init__(self, name): self.name = name + class TraverserTests(PlacelessSetup, unittest.TestCase): def setUp(self): @@ -72,6 +74,7 @@ class TraverserTests(PlacelessSetup, unittest.TestCase): def test_traverse_empty_path_is_context(self): self.assertIs(self.item, self.tr.traverse('')) + class UnrestrictedNoTraverseTests(unittest.TestCase): def setUp(self): self.root = root = C('root') @@ -88,11 +91,13 @@ class UnrestrictedNoTraverseTests(unittest.TestCase): self.assertRaises(LocationError, self.tr.traverse, 'folder') + class UnrestrictedTraverseTests(PlacelessSetup, unittest.TestCase): def setUp(self): PlacelessSetup.setUp(self) - zope.component.provideAdapter(DefaultTraversable, (None,), ITraversable) + zope.component.provideAdapter( + DefaultTraversable, (None,), ITraversable) zope.component.provideAdapter(LocationPhysicallyLocatable, (None,), ILocationInfo) zope.component.provideAdapter(RootPhysicallyLocatable, @@ -158,7 +163,7 @@ class UnrestrictedTraverseTests(PlacelessSetup, unittest.TestCase): 'foo': 'bar', 'anotherdict': {'bar': 'foo'}, 'items': '123', - } + } tr = Traverser(adict) self.assertEqual(tr.traverse('items'), adict.items) self.assertEqual(tr.traverse('anotherdict/bar'), 'foo') @@ -189,7 +194,8 @@ class RestrictedTraverseTests(PlacelessSetup, unittest.TestCase): def setUp(self): PlacelessSetup.setUp(self) - zope.component.provideAdapter(DefaultTraversable, (None,), ITraversable) + zope.component.provideAdapter( + DefaultTraversable, (None,), ITraversable) zope.component.provideAdapter(LocationPhysicallyLocatable, (None,), ILocationInfo) zope.component.provideAdapter(RootPhysicallyLocatable, @@ -295,9 +301,11 @@ class TestFunctions(unittest.TestCase): def test_traversePathElement_UnicodeEncodeError_with_default(self): test = self + class Traversable(object): called = False fail = test.fail + def traverse(self, nm, further_path): self.called = True u'\xff'.encode("ascii") @@ -310,10 +318,10 @@ class TestFunctions(unittest.TestCase): traversable=t)) self.assertTrue(t.called) - def test_traversePathElement_LocationError_with_default(self): class Traversable(object): called = False + def traverse(self, nm, further_path): self.called = True raise LocationError() diff --git a/src/zope/traversing/tests/test_vh.py b/src/zope/traversing/tests/test_vh.py index 70d88ec..d70c408 100644 --- a/src/zope/traversing/tests/test_vh.py +++ b/src/zope/traversing/tests/test_vh.py @@ -40,6 +40,7 @@ class TestRequest(object): del self._traversed_names[:] self._app_names = names or [] + class TestVHNamespace(unittest.TestCase): def test_vh(self): @@ -66,32 +67,22 @@ class TestVHNamespace(unittest.TestCase): handler = vh(ob, request) self.assertRaises(ValueError, handler.traverse, 'http:host:80', ()) - def test_vh_host(self): from zope.traversing.namespace import vh request = TestRequest(['folder1'], ['folder1_1', '++']) ob = object() - result = vh(ob, request).traverse('http:www.fubarco.com:80', ()) + vh(ob, request).traverse('http:www.fubarco.com:80', ()) self.assertEqual(request._app_server, 'http://www.fubarco.com:80') - def test_unicode_vh_host(self): from zope.traversing.namespace import vh request = TestRequest(['folder1'], ['folder1_1', '++']) ob = object() - result = vh(ob, request).traverse(u'http:www.fubarco.com:80', ()) - self.assertTrue(isinstance(request._app_server, str), repr(request._app_server)) - - -def test_suite(): - suite = unittest.TestSuite() - suite.addTest(unittest.makeSuite(TestVHNamespace)) - return suite - - -if __name__ == '__main__': - unittest.main() + vh(ob, request).traverse(u'http:www.fubarco.com:80', ()) + self.assertTrue( + isinstance(request._app_server, str), + repr(request._app_server)) diff --git a/src/zope/traversing/tests/test_vhosting.py b/src/zope/traversing/tests/test_vhosting.py index 137a997..df35500 100644 --- a/src/zope/traversing/tests/test_vhosting.py +++ b/src/zope/traversing/tests/test_vhosting.py @@ -48,9 +48,11 @@ class MyObj(Contained): def __getitem__(self, key): return traverse(self, '/foo/bar/' + key) + class IFolder(zope.interface.Interface): pass + @zope.interface.implementer(IFolder, IBrowserPublisher) class Folder(Contained, dict): def __init__(self): @@ -64,7 +66,7 @@ class Folder(Contained, dict): def publishTraverse(self, request, name): subob = self.get(name, None) if subob is None: - raise NotFound(self.context, name, request) # pragma: no cover + raise NotFound(self.context, name, request) # pragma: no cover return subob @@ -87,21 +89,27 @@ class ZopeTraverser(object): object = traversePathElement(object, name, path_items, request=request) return object + + zopeTraverser = ZopeTraverser() + class PathExpr(expressions.PathExpr): def __init__(self, name, expr, engine): super(PathExpr, self).__init__(name, expr, engine, zopeTraverser) + def Engine(): e = ExpressionEngine() for pt in PathExpr._default_type_names: e.registerType(pt, PathExpr) return e + Engine = Engine() + class MyTalesPage(object): def __init__(self, source): @@ -131,6 +139,7 @@ class MyPageEval(BrowserView): index = __call__ + class MyFolderPage(BrowserView): def __call__(self, **kw): @@ -242,7 +251,7 @@ class TestVirtualHosting(unittest.TestCase): """addFolders('/a/b/c/d') would traverse and/or create three nested folders (a, b, c) and return a tuple (c, 'd') where c is a Folder instance at /a/b/c.""" - folder = self.app #self.connection.root()['Application'] + folder = self.app # self.connection.root()['Application'] if path[0] == '/': path = path[1:] path = path.split('/') @@ -331,7 +340,8 @@ class DummyPublication(object): """Post-callObject hook (if it was successful). """ - def handleException(self, ob, request, exc_info, retry_allowed=1): # pragma: no cover + def handleException( + self, ob, request, exc_info, retry_allowed=1): # pragma: no cover """Handle an exception Either: |