From 940ab0d43fd38588da3b5d7937e8787287b7c000 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sat, 3 Sep 2011 15:08:23 -0400 Subject: disuse ActionStateWrapper in Configurator.action now that we know we're using an actionstate version that has a info kw arg --- pyramid/config/__init__.py | 7 +++-- pyramid/tests/test_config/test_init.py | 48 ++++++++++++++++++++-------------- 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)) -- cgit v1.2.3