diff options
| author | Chris McDonough <chrism@plope.com> | 2012-08-24 14:03:22 -0400 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2012-08-24 14:03:22 -0400 |
| commit | bf64f1e841fe39597402dea8346abd2cd900d0dd (patch) | |
| tree | 697e37298a6ead65d8f2a5e2daf1cc0169f7285f | |
| parent | c9a0331f5f867a1ba3f13565f8c61cfa433bc8fc (diff) | |
| parent | 5191b69b2e2ea095a00cc09cfd4cb5498e325279 (diff) | |
| download | pyramid-bf64f1e841fe39597402dea8346abd2cd900d0dd.tar.gz pyramid-bf64f1e841fe39597402dea8346abd2cd900d0dd.tar.bz2 pyramid-bf64f1e841fe39597402dea8346abd2cd900d0dd.zip | |
Merge branch 'wwitzel3-ww/621'
| -rw-r--r-- | pyramid/config/util.py | 9 | ||||
| -rw-r--r-- | pyramid/tests/test_config/__init__.py | 8 | ||||
| -rw-r--r-- | pyramid/tests/test_config/test_init.py | 26 | ||||
| -rw-r--r-- | pyramid/tests/test_config/test_init.py:TestConfigurator_add_directive | 0 |
4 files changed, 40 insertions, 3 deletions
diff --git a/pyramid/config/util.py b/pyramid/config/util.py index cabcab649..a4df44408 100644 --- a/pyramid/config/util.py +++ b/pyramid/config/util.py @@ -1,5 +1,7 @@ import traceback +from functools import update_wrapper + from zope.interface import implementer from pyramid.interfaces import IActionInfo @@ -55,9 +57,10 @@ def action_method(wrapped): finally: self._ainfo.pop() return result - wrapper.__name__ = wrapped.__name__ - wrapper.__doc__ = wrapped.__doc__ - wrapper.__docobj__ = wrapped # for sphinx + + if hasattr(wrapped, '__name__'): + update_wrapper(wrapper, wrapped) + wrapper.__docobj__ = wrapped return wrapper def as_sorted_tuple(val): diff --git a/pyramid/tests/test_config/__init__.py b/pyramid/tests/test_config/__init__.py index 5b40a8c09..81d9f4965 100644 --- a/pyramid/tests/test_config/__init__.py +++ b/pyramid/tests/test_config/__init__.py @@ -43,3 +43,11 @@ def dummy_extend(config, discrim): def dummy_extend2(config, discrim): config.action(discrim, None, config.registry) +from functools import partial +dummy_partial = partial(dummy_extend, discrim='partial') + +class DummyCallable(object): + def __call__(self, config, discrim): + config.action(discrim, None, config.package) +dummy_callable = DummyCallable() + diff --git a/pyramid/tests/test_config/test_init.py b/pyramid/tests/test_config/test_init.py index abe22400b..f39906dd9 100644 --- a/pyramid/tests/test_config/test_init.py +++ b/pyramid/tests/test_config/test_init.py @@ -1421,6 +1421,32 @@ class TestConfigurator_add_directive(unittest.TestCase): self.assertEqual(action['callable'], None) self.assertEqual(action['args'], test_config) + def test_add_directive_with_partial(self): + from pyramid.tests import test_config + config = self.config + config.add_directive( + 'dummy_partial', 'pyramid.tests.test_config.dummy_partial') + self.assertTrue(hasattr(config, 'dummy_partial')) + config.dummy_partial() + after = config.action_state + action = after.actions[-1] + self.assertEqual(action['discriminator'], 'partial') + self.assertEqual(action['callable'], None) + self.assertEqual(action['args'], test_config) + + def test_add_directive_with_custom_callable(self): + from pyramid.tests import test_config + config = self.config + config.add_directive( + 'dummy_callable', 'pyramid.tests.test_config.dummy_callable') + self.assertTrue(hasattr(config, 'dummy_callable')) + config.dummy_callable('discrim') + after = config.action_state + action = after.actions[-1] + self.assertEqual(action['discriminator'], 'discrim') + self.assertEqual(action['callable'], None) + self.assertEqual(action['args'], test_config) + def test_extend_with_python_callable(self): from pyramid.tests import test_config config = self.config diff --git a/pyramid/tests/test_config/test_init.py:TestConfigurator_add_directive b/pyramid/tests/test_config/test_init.py:TestConfigurator_add_directive new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/pyramid/tests/test_config/test_init.py:TestConfigurator_add_directive |
