diff options
| author | Michael Merickel <michael@merickel.org> | 2017-01-24 22:52:10 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-01-24 22:52:10 -0600 |
| commit | 3b5076b6b3fd7218acf445e917eb039999b61820 (patch) | |
| tree | 2aab4d2f1574d36beab3e1090ba3e569a01fa2dc | |
| parent | 5c71ad944e463ec1591613d018b7797b81d23eae (diff) | |
| parent | f6af107a78b36c7e428ccb58c2db939275d8fa99 (diff) | |
| download | pyramid-3b5076b6b3fd7218acf445e917eb039999b61820.tar.gz pyramid-3b5076b6b3fd7218acf445e917eb039999b61820.tar.bz2 pyramid-3b5076b6b3fd7218acf445e917eb039999b61820.zip | |
Merge pull request #2917 from mmerickel/fix-2916
restore the registry signature and add tests to show why
| -rw-r--r-- | pyramid/registry.py | 4 | ||||
| -rw-r--r-- | pyramid/tests/test_registry.py | 27 |
2 files changed, 25 insertions, 6 deletions
diff --git a/pyramid/registry.py b/pyramid/registry.py index e2bcba9f9..20b3643e9 100644 --- a/pyramid/registry.py +++ b/pyramid/registry.py @@ -56,7 +56,7 @@ class Registry(Components, dict): _settings = None - def __init__(self, package_name=CALLER_PACKAGE): + def __init__(self, package_name=CALLER_PACKAGE, *args, **kw): # add a registry-instance-specific lock, which is used when the lookup # cache is mutated self._lock = threading.Lock() @@ -64,7 +64,7 @@ class Registry(Components, dict): self._clear_view_lookup_cache() if package_name is CALLER_PACKAGE: package_name = caller_package().__name__ - Components.__init__(self, package_name) + Components.__init__(self, package_name, *args, **kw) dict.__init__(self) def _clear_view_lookup_cache(self): diff --git a/pyramid/tests/test_registry.py b/pyramid/tests/test_registry.py index 7b3357e61..aa44b5408 100644 --- a/pyramid/tests/test_registry.py +++ b/pyramid/tests/test_registry.py @@ -5,8 +5,8 @@ class TestRegistry(unittest.TestCase): from pyramid.registry import Registry return Registry - def _makeOne(self): - return self._getTargetClass()() + def _makeOne(self, *args, **kw): + return self._getTargetClass()(*args, **kw) def test___nonzero__(self): registry = self._makeOne() @@ -24,11 +24,11 @@ class TestRegistry(unittest.TestCase): def test_package_name(self): package_name = 'testing' - registry = self._getTargetClass()(package_name) + registry = self._makeOne(package_name) self.assertEqual(registry.package_name, package_name) def test_default_package_name(self): - registry = self._getTargetClass()() + registry = self._makeOne() self.assertEqual(registry.package_name, 'pyramid.tests') def test_registerHandler_and_notify(self): @@ -61,6 +61,25 @@ class TestRegistry(unittest.TestCase): registry.settings = 'foo' self.assertEqual(registry._settings, 'foo') + def test_init_forwards_args(self): + from zope.interface import Interface + from zope.interface.registry import Components + dummy = object() + c = Components() + c.registerUtility(dummy, Interface) + registry = self._makeOne('foo', (c,)) + self.assertEqual(registry.__name__, 'foo') + self.assertEqual(registry.getUtility(Interface), dummy) + + def test_init_forwards_kw(self): + from zope.interface import Interface + from zope.interface.registry import Components + dummy = object() + c = Components() + c.registerUtility(dummy, Interface) + registry = self._makeOne(bases=(c,)) + self.assertEqual(registry.getUtility(Interface), dummy) + class TestIntrospector(unittest.TestCase): def _getTargetClass(slf): from pyramid.registry import Introspector |
