summaryrefslogtreecommitdiff
path: root/src/zope/traversing/tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/zope/traversing/tests')
-rw-r--r--src/zope/traversing/tests/test_conveniencefunctions.py70
-rw-r--r--src/zope/traversing/tests/test_dependencies.py7
-rw-r--r--src/zope/traversing/tests/test_lang.py1
-rw-r--r--src/zope/traversing/tests/test_namespacetrversal.py13
-rw-r--r--src/zope/traversing/tests/test_presentation.py3
-rw-r--r--src/zope/traversing/tests/test_publicationtraverse.py14
-rw-r--r--src/zope/traversing/tests/test_skin.py3
-rw-r--r--src/zope/traversing/tests/test_traverser.py16
-rw-r--r--src/zope/traversing/tests/test_vh.py21
-rw-r--r--src/zope/traversing/tests/test_vhosting.py16
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: