summaryrefslogtreecommitdiff
path: root/repoze
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-12-19 21:48:36 +0000
committerChris McDonough <chrism@agendaless.com>2009-12-19 21:48:36 +0000
commit0adc2fe61c2e225dfa1bcf9a3d814ba394e95ce7 (patch)
tree1d9b9e98d16c9c0079d41f95d6499bedeee9a4ab /repoze
parent4ffea305a052d4e3acf023c33a8dd471045f2c97 (diff)
downloadpyramid-0adc2fe61c2e225dfa1bcf9a3d814ba394e95ce7.tar.gz
pyramid-0adc2fe61c2e225dfa1bcf9a3d814ba394e95ce7.tar.bz2
pyramid-0adc2fe61c2e225dfa1bcf9a3d814ba394e95ce7.zip
- Add a new API to the ``repoze.bfg.configuration.Configurator``
class: ``add_settings``. This API can be used to add "settings" (information returned within via the ``repoze.bfg.settings.get_settings`` API) after the configurator has been initially set up. This is most useful for testing purposes.
Diffstat (limited to 'repoze')
-rw-r--r--repoze/bfg/configuration.py12
-rw-r--r--repoze/bfg/testing.py4
-rw-r--r--repoze/bfg/tests/test_configuration.py20
3 files changed, 36 insertions, 0 deletions
diff --git a/repoze/bfg/configuration.py b/repoze/bfg/configuration.py
index 44b77e138..8d88c5384 100644
--- a/repoze/bfg/configuration.py
+++ b/repoze/bfg/configuration.py
@@ -164,6 +164,7 @@ class Configurator(object):
def _set_settings(self, mapping):
settings = Settings(mapping or {})
self.registry.registerUtility(settings, ISettings)
+ return settings
def _set_root_factory(self, factory):
""" Add a :term:`root factory` to the current configuration
@@ -308,6 +309,17 @@ class Configurator(object):
self.registry.registerHandler(subscriber, iface, info=info)
return subscriber
+ def add_settings(self, settings):
+ """ Add additional settings (beyond the ones passed in as
+ ``settings`` to the constructor of this object) to the
+ dictionarylike object returned from
+ ``repoze.bfg.settings.get_settings()``. The ``settings``
+ argument should be a dictionarylike object."""
+ utility = self.registry.queryUtility(ISettings)
+ if utility is None:
+ utility = self._set_settings(settings)
+ utility.update(settings)
+
def add_subscription_adapter(self, factory, required=None, provided=None,
info=u''):
"""Add a Zope Component Architecture subscription adapter.
diff --git a/repoze/bfg/testing.py b/repoze/bfg/testing.py
index 2b9a7a904..5d0a756e7 100644
--- a/repoze/bfg/testing.py
+++ b/repoze/bfg/testing.py
@@ -320,6 +320,10 @@ def registerSettings(dictarg=None, **kw):
return values from it.
.. note:: This API is new as of :mod:`repoze.bfg` 1.1.
+
+ .. warning:: This API is deprecated as of :mod:`repoze.bfg` 1.2.
+ Instead use the ``add_settings`` method of a
+ :term:`Configurator` in your unit and integration tests.
"""
reg = get_current_registry()
settings = reg.queryUtility(ISettings)
diff --git a/repoze/bfg/tests/test_configuration.py b/repoze/bfg/tests/test_configuration.py
index 520f9a5bc..9c48cc010 100644
--- a/repoze/bfg/tests/test_configuration.py
+++ b/repoze/bfg/tests/test_configuration.py
@@ -243,6 +243,26 @@ class ConfiguratorTests(unittest.TestCase):
self.assertEqual(reg.getUtility(IRendererFactory, 'yeah'),
renderer)
+ def test_add_settings_settings_already_registered(self):
+ from repoze.bfg.registry import Registry
+ from repoze.bfg.interfaces import ISettings
+ reg = Registry()
+ config = self._makeOne(reg)
+ config._set_settings({'a':1})
+ config.add_settings({'b':2})
+ settings = reg.getUtility(ISettings)
+ self.assertEqual(settings['a'], 1)
+ self.assertEqual(settings['b'], 2)
+
+ def test_add_settings_settings_not_yet_registered(self):
+ from repoze.bfg.registry import Registry
+ from repoze.bfg.interfaces import ISettings
+ reg = Registry()
+ config = self._makeOne(reg)
+ config.add_settings({'a':1})
+ settings = reg.getUtility(ISettings)
+ self.assertEqual(settings['a'], 1)
+
def test_add_subscriber_defaults(self):
from zope.interface import implements
from zope.interface import Interface