summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt6
-rw-r--r--repoze/bfg/configuration.py5
-rw-r--r--repoze/bfg/tests/test_configuration.py5
3 files changed, 12 insertions, 4 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 71164a681..44970b230 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,9 @@
+Next release
+============
+
+- The ``traverse`` route predicate could not successfully generate a
+ traversal path.
+
1.3a12 (2010-09-08)
===================
diff --git a/repoze/bfg/configuration.py b/repoze/bfg/configuration.py
index 5a97c4f38..06115abf7 100644
--- a/repoze/bfg/configuration.py
+++ b/repoze/bfg/configuration.py
@@ -2022,8 +2022,9 @@ def _make_predicates(xhr=None, request_method=None, path_info=None,
def traverse_predicate(context, request):
if 'traverse' in context:
return True
- tvalue = tgenerate(context)
- context['traverse'] = traversal_path(tvalue)
+ m = context['match']
+ tvalue = tgenerate(m)
+ m['traverse'] = traversal_path(tvalue)
return True
# This isn't actually a predicate, it's just a infodict
# modifier that injects ``traverse`` into the matchdict. As a
diff --git a/repoze/bfg/tests/test_configuration.py b/repoze/bfg/tests/test_configuration.py
index 062fbfa0b..2724b3381 100644
--- a/repoze/bfg/tests/test_configuration.py
+++ b/repoze/bfg/tests/test_configuration.py
@@ -3440,11 +3440,12 @@ class Test__make_predicates(unittest.TestCase):
order, predicates, phash = self._callFUT(traverse='/1/:a/:b')
self.assertEqual(len(predicates), 1)
pred = predicates[0]
- info = {'a':'a', 'b':'b'}
+ info = {'match':{'a':'a', 'b':'b'}}
request = DummyRequest()
result = pred(info, request)
self.assertEqual(result, True)
- self.assertEqual(info, {'a':'a', 'b':'b', 'traverse':('1', 'a', 'b')})
+ self.assertEqual(info, {'match':
+ {'a':'a', 'b':'b', 'traverse':('1', 'a', 'b')}})
class TestMultiView(unittest.TestCase):
def _getTargetClass(self):