[Checkins] SVN: zope.configuration/branches/tseaver-test_cleanup/src/zope/configuration/tests/test_config.py Full coverage for z.c.config.ConfigurationMachine.
Tres Seaver
cvs-admin at zope.org
Wed May 9 05:51:26 UTC 2012
Log message for revision 125759:
Full coverage for z.c.config.ConfigurationMachine.
Also for z.c.config.ConfigurationExcecutionError.
Changed:
U zope.configuration/branches/tseaver-test_cleanup/src/zope/configuration/tests/test_config.py
-=-
Modified: zope.configuration/branches/tseaver-test_cleanup/src/zope/configuration/tests/test_config.py
===================================================================
--- zope.configuration/branches/tseaver-test_cleanup/src/zope/configuration/tests/test_config.py 2012-05-09 05:51:19 UTC (rev 125758)
+++ zope.configuration/branches/tseaver-test_cleanup/src/zope/configuration/tests/test_config.py 2012-05-09 05:51:23 UTC (rev 125759)
@@ -455,7 +455,9 @@
self.assertRaises(ConfigurationError, reg.factory, context, (NS, NAME))
-class ConfigurationMachineTests(unittest.TestCase):
+class ConfigurationMachineTests(_Catchable,
+ unittest.TestCase,
+ ):
def _getTargetClass(self):
from zope.configuration.config import ConfigurationMachine
@@ -474,6 +476,245 @@
from zope.configuration.interfaces import IConfigurationContext
verifyObject(IConfigurationContext, self._makeOne())
+ def test_ctor(self):
+ from zope.configuration.config import RootStackItem
+ from zope.configuration.config import metans
+ cm = self._makeOne()
+ self.assertEqual(cm.package, None)
+ self.assertEqual(cm.basepath, None)
+ self.assertEqual(cm.includepath, ())
+ self.assertEqual(cm.info, '')
+ self.assertEqual(len(cm.actions), 0)
+ self.assertEqual(len(cm.stack), 1)
+ root = cm.stack[0]
+ self.assertTrue(isinstance(root, RootStackItem))
+ self.assertTrue(root.context is cm)
+ self.assertEqual(len(cm.i18n_strings), 0)
+ # Check bootstrapped meta:*.
+ self.assertTrue((metans, 'directive') in cm._registry)
+ self.assertTrue((metans, 'directives') in cm._registry)
+ self.assertTrue((metans, 'complexDirective') in cm._registry)
+ self.assertTrue((metans, 'groupingDirective') in cm._registry)
+ self.assertTrue((metans, 'provides') in cm._registry)
+ self.assertTrue((metans, 'subdirective') in cm._registry)
+
+ def test_begin_w___data_and_kw(self):
+ from zope.configuration.config import IConfigurationContext
+ NS = 'http://namespace.example.com/'
+ NAME = 'testing'
+ def _factory(context, data, info):
+ pass
+ cm = self._makeOne()
+ cm.register(IConfigurationContext, (NS, NAME), _factory)
+ self.assertRaises(TypeError,
+ cm.begin, (NS, NAME), {'foo': 'bar'}, baz='bam')
+
+ def test_begin_w___data_no_kw(self):
+ from zope.interface import Interface
+ from zope.configuration.config import IConfigurationContext
+ from zope.configuration.config import RootStackItem
+ class ISchema(Interface):
+ pass
+ class IUsedIn(Interface):
+ pass
+ def _handler(*args, **kw):
+ pass
+ NS = 'http://namespace.example.com/'
+ NAME = 'testing'
+ _called_with = []
+ item = object()
+ def _factory(context, data, info):
+ _called_with.append((context, data, info))
+ return item
+ cm = self._makeOne()
+ cm.register(IConfigurationContext, (NS, NAME), _factory)
+ cm.begin((NS, NAME), {'name': 'testing',
+ 'schema': ISchema,
+ 'usedIn': IUsedIn,
+ 'handler': _handler,
+ }, 'INFO')
+ self.assertEqual(len(cm.stack), 2)
+ root = cm.stack[0]
+ self.assertTrue(isinstance(root, RootStackItem))
+ nested = cm.stack[1]
+ self.assertTrue(nested is item)
+ self.assertEqual(_called_with,
+ [(cm, {'name': 'testing',
+ 'schema': ISchema,
+ 'usedIn': IUsedIn,
+ 'handler': _handler,
+ }, 'INFO')])
+
+ def test_begin_wo___data_w_kw(self):
+ from zope.interface import Interface
+ from zope.configuration.config import IConfigurationContext
+ from zope.configuration.config import RootStackItem
+ class ISchema(Interface):
+ pass
+ class IUsedIn(Interface):
+ pass
+ def _handler(*args, **kw):
+ pass
+ NS = 'http://namespace.example.com/'
+ NAME = 'testing'
+ _called_with = []
+ item = object()
+ def _factory(context, data, info):
+ _called_with.append((context, data, info))
+ return item
+ cm = self._makeOne()
+ cm.register(IConfigurationContext, (NS, NAME), _factory)
+ cm.begin((NS, NAME), None, 'INFO',
+ name='testing',
+ schema=ISchema,
+ usedIn=IUsedIn,
+ handler=_handler,
+ )
+ self.assertEqual(len(cm.stack), 2)
+ root = cm.stack[0]
+ self.assertTrue(isinstance(root, RootStackItem))
+ nested = cm.stack[1]
+ self.assertTrue(nested is item)
+ self.assertEqual(_called_with,
+ [(cm, {'name': 'testing',
+ 'schema': ISchema,
+ 'usedIn': IUsedIn,
+ 'handler': _handler,
+ }, 'INFO')])
+
+ def test_end(self):
+ from zope.configuration.config import RootStackItem
+ class FauxItem(object):
+ _finished = False
+ def finish(self):
+ self._finished = True
+ cm = self._makeOne()
+ item = FauxItem()
+ cm.stack.append(item)
+ cm.end()
+ self.assertEqual(len(cm.stack), 1)
+ root = cm.stack[0]
+ self.assertTrue(isinstance(root, RootStackItem))
+ self.assertTrue(item._finished)
+
+ def test___call__(self):
+ from zope.interface import Interface
+ from zope.configuration.config import IConfigurationContext
+ from zope.configuration.config import RootStackItem
+ class ISchema(Interface):
+ pass
+ class IUsedIn(Interface):
+ pass
+ class FauxItem(object):
+ _finished = False
+ def finish(self):
+ self._finished = True
+ def _handler(*args, **kw):
+ pass
+ NS = 'http://namespace.example.com/'
+ NAME = 'testing'
+ _called_with = []
+ item = FauxItem()
+ def _factory(context, data, info):
+ _called_with.append((context, data, info))
+ return item
+ cm = self._makeOne()
+ cm.register(IConfigurationContext, (NS, NAME), _factory)
+ cm((NS, NAME), 'INFO',
+ name='testing',
+ schema=ISchema,
+ usedIn=IUsedIn,
+ handler=_handler,
+ )
+ self.assertEqual(len(cm.stack), 1)
+ root = cm.stack[0]
+ self.assertTrue(isinstance(root, RootStackItem))
+ self.assertEqual(_called_with,
+ [(cm, {'name': 'testing',
+ 'schema': ISchema,
+ 'usedIn': IUsedIn,
+ 'handler': _handler,
+ }, 'INFO')])
+ self.assertTrue(item._finished)
+
+ def test_getInfo_only_root_default(self):
+ cm = self._makeOne()
+ self.assertEqual(cm.getInfo(), '')
+
+ def test_getInfo_only_root(self):
+ cm = self._makeOne()
+ cm.info = 'INFO'
+ self.assertEqual(cm.getInfo(), 'INFO')
+
+ def test_getInfo_w_item(self):
+ class FauxItem(object):
+ info = 'FAUX'
+ def __init__(self):
+ self.context = self
+ cm = self._makeOne()
+ cm.stack.append(FauxItem())
+ self.assertEqual(cm.getInfo(), 'FAUX')
+
+ def test_setInfo_only_root(self):
+ cm = self._makeOne()
+ cm.setInfo('INFO')
+ self.assertEqual(cm.info, 'INFO')
+
+ def test_setInfo_w_item(self):
+ class FauxItem(object):
+ info = 'FAUX'
+ def __init__(self):
+ self.context = self
+ cm = self._makeOne()
+ item = FauxItem()
+ cm.stack.append(item)
+ cm.setInfo('UPDATED')
+ self.assertEqual(item.info, 'UPDATED')
+
+ def test_execute_actions_empty(self):
+ cm = self._makeOne()
+ cm.execute_actions() # noop
+
+ def test_execute_actions_wo_errors(self):
+ _called_with = {}
+ def _a1(*args, **kw):
+ _called_with.setdefault('_a1', []).append((args, kw))
+ def _a2(*args, **kw):
+ _called_with.setdefault('_a2', []).append((args, kw))
+ cm = self._makeOne()
+ cm.action(None, None) # will be skipped
+ cm.action(None, _a1, ('a', 0), {'foo': 'bar'}, 4)
+ cm.action(None, _a2, ('a', 1), {'foo': 'baz'}, 3)
+ cm.action(None, _a1, ('b', 2), {'foo': 'qux'}, 2)
+ cm.execute_actions()
+ self.assertEqual(_called_with['_a1'],
+ [(('b', 2), {'foo': 'qux'}),
+ (('a', 0), {'foo': 'bar'}),
+ ])
+ self.assertEqual(_called_with['_a2'],
+ [(('a', 1), {'foo': 'baz'}),
+ ])
+
+ def test_execute_actions_w_errors_w_testing(self):
+ def _err(*args, **kw):
+ raise ValueError('XXX')
+ cm = self._makeOne()
+ cm.action(None, _err)
+ exc = self.assertRaises(ValueError, cm.execute_actions, testing=True)
+ self.assertEqual(str(exc), 'XXX')
+
+ def test_execute_actions_w_errors_wo_testing(self):
+ from zope.configuration.config import ConfigurationExecutionError
+ def _err(*args, **kw):
+ raise ValueError('XXX')
+ cm = self._makeOne()
+ cm.info = 'INFO'
+ cm.action(None, _err)
+ exc = self.assertRaises(ConfigurationExecutionError,
+ cm.execute_actions)
+ self.assertEqual(str(exc),
+ "<type 'exceptions.ValueError'>: XXX\n in:\n INFO")
+
def test_keyword_handling(self):
from zope.configuration.config import metans
from zope.configuration.tests.directives import f
More information about the checkins
mailing list