[Repoze-checkins] r1297 - in repoze.bfg/trunk/repoze/bfg: . tests
Chris McDonough
chrism at agendaless.com
Sat Jul 12 06:42:24 EDT 2008
Author: Chris McDonough <chrism at agendaless.com>
Date: Sat Jul 12 06:42:23 2008
New Revision: 1297
Log:
Add explicit viewname logic.
Modified:
repoze.bfg/trunk/repoze/bfg/tests/test_traversal.py
repoze.bfg/trunk/repoze/bfg/traversal.py
Modified: repoze.bfg/trunk/repoze/bfg/tests/test_traversal.py
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/tests/test_traversal.py (original)
+++ repoze.bfg/trunk/repoze/bfg/tests/test_traversal.py Sat Jul 12 06:42:23 2008
@@ -28,7 +28,7 @@
self.assertEqual(f('/foo/space%20thing/bar'), ['foo', 'space thing',
'bar'])
-class NaivePolicyTests(unittest.TestCase, PlacelessSetup):
+class NaivePublishTraverserTests(unittest.TestCase, PlacelessSetup):
def setUp(self):
PlacelessSetup.setUp(self)
@@ -40,8 +40,6 @@
return NaivePublishTraverser
def _makeOne(self, *arg, **kw):
- import zope.component
- gsm = zope.component.getGlobalSiteManager()
klass = self._getTargetClass()
return klass(*arg, **kw)
@@ -94,6 +92,16 @@
self.assertEqual(name, 'bar')
self.assertEqual(subpath, ['baz', 'buz'])
+ def test_call_with_explicit_viewname(self):
+ foo = DummyContext()
+ request = DummyRequest()
+ root = DummyContext(foo)
+ policy = self._makeOne(root, request)
+ ctx, name, subpath = policy('/@@foo')
+ self.assertEqual(ctx, root)
+ self.assertEqual(name, 'foo')
+ self.assertEqual(subpath, [])
+
class DummyContext:
def __init__(self, next=None):
self.next = next
@@ -112,6 +120,6 @@
def __call__(self, environ, name):
try:
- return self.context[name]
+ return name, self.context[name]
except KeyError:
- return None
+ return name, None
Modified: repoze.bfg/trunk/repoze/bfg/traversal.py
==============================================================================
--- repoze.bfg/trunk/repoze/bfg/traversal.py (original)
+++ repoze.bfg/trunk/repoze/bfg/traversal.py Sat Jul 12 06:42:23 2008
@@ -23,12 +23,14 @@
return clean
def step(ob, name, default):
+ if name.startswith('@@'):
+ return name[2:], default
if not hasattr(ob, '__getitem__'):
- return default
+ return name, default
try:
- return ob[name]
+ return name, ob[name]
except KeyError:
- return default
+ return name, default
_marker = ()
@@ -47,7 +49,7 @@
while path:
segment = path.pop(0)
- next = step(ob, segment, _marker)
+ segment, next = step(ob, segment, _marker)
if next is _marker:
name = segment
break
More information about the Repoze-checkins
mailing list