summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2011-09-03 15:08:23 -0400
committerChris McDonough <chrism@plope.com>2011-09-03 15:08:23 -0400
commit940ab0d43fd38588da3b5d7937e8787287b7c000 (patch)
tree2a7e3dd3adcc0317bce037f97e4d86f33410cf3d
parent79ef3d108e2aa1d630a6f06a8bed107e2ba6d43e (diff)
downloadpyramid-940ab0d43fd38588da3b5d7937e8787287b7c000.tar.gz
pyramid-940ab0d43fd38588da3b5d7937e8787287b7c000.tar.bz2
pyramid-940ab0d43fd38588da3b5d7937e8787287b7c000.zip
disuse ActionStateWrapper in Configurator.action now that we know we're using an actionstate version that has a info kw arg
-rw-r--r--pyramid/config/__init__.py7
-rw-r--r--pyramid/tests/test_config/test_init.py48
2 files changed, 31 insertions, 24 deletions
diff --git a/pyramid/config/__init__.py b/pyramid/config/__init__.py
index b7f5fc545..a3cec37fe 100644
--- a/pyramid/config/__init__.py
+++ b/pyramid/config/__init__.py
@@ -455,18 +455,17 @@ class Configurator(
else:
if context is None: # defer expensive creation of context
context = self._ctx = self._make_context(self.autocommit)
- if not context.info:
+ info = context.info
+ if not info:
# Try to provide more accurate info for conflict reports by
# wrapping the context in a decorator and attaching caller info
# to it, unless the context already has info (if it already has
# info, it's likely a context generated by a ZCML directive).
- context = ActionStateWrapper(context)
if self._ainfo:
info = self._ainfo[0]
else:
info = ''
- context.info = info
- context.action(discriminator, callable, args, kw, order)
+ context.action(discriminator, callable, args, kw, order, info=info)
def commit(self):
""" Commit any pending configuration actions. If a configuration
diff --git a/pyramid/tests/test_config/test_init.py b/pyramid/tests/test_config/test_init.py
index 29be757d3..0df96af40 100644
--- a/pyramid/tests/test_config/test_init.py
+++ b/pyramid/tests/test_config/test_init.py
@@ -733,29 +733,30 @@ pyramid.tests.test_config.dummy_include2""",
config = self._makeOne(autocommit=True)
self.assertEqual(config.action('discrim', kw={'a':1}), None)
- def test_action_branching_nonautocommit_without_context_info(self):
+ def test_action_branching_nonautocommit_with_context_info(self):
config = self._makeOne(autocommit=False)
- config._ctx = DummyContext()
- config._ctx.info = None
- config._ctx.autocommit = False
- config._ctx.actions = []
- self.assertEqual(config.action('discrim', kw={'a':1}), None)
- self.assertEqual(config._ctx.actions, [('discrim', None, (), {'a': 1})])
- # info is not set on ctx, it's set on the groupingcontextdecorator,
- # and then lost
+ state = DummyActionState()
+ state.autocommit = False
+ state.info = 'abc'
+ config._ctx = state
+ config.action('discrim', kw={'a':1})
+ self.assertEqual(
+ state.actions,
+ [(('discrim', None, (), {'a': 1}, 0), {'info': 'abc'})]
+ )
- def test_action_branching_nonautocommit_with_context_info(self):
+ def test_action_branching_nonautocommit_without_context_info(self):
config = self._makeOne(autocommit=False)
- config._ctx = DummyContext()
- config._ctx.info = 'abc'
- config._ctx.autocommit = False
- config._ctx.actions = []
- config._ctx.action = lambda *arg, **kw: self.assertEqual(
- arg,
- ('discrim', None, (), {'a': 1}, 0))
- self.assertEqual(config.action('discrim', kw={'a':1}), None)
- self.assertEqual(config._ctx.actions, [])
- self.assertEqual(config._ctx.info, 'abc')
+ state = DummyActionState()
+ state.autocommit = False
+ state.info = ''
+ config._ctx = state
+ config._ainfo = ['z']
+ config.action('discrim', kw={'a':1})
+ self.assertEqual(
+ state.actions,
+ [(('discrim', None, (), {'a': 1}, 0), {'info': 'z'})]
+ )
def test_scan_integration(self):
from zope.interface import alsoProvides
@@ -1575,3 +1576,10 @@ def _conflictFunctions(e):
for confinst in conflict:
yield confinst[2]
+class DummyActionState(object):
+ autocommit = False
+ info = ''
+ def __init__(self):
+ self.actions = []
+ def action(self, *arg, **kw):
+ self.actions.append((arg, kw))