From 4149922e64aecf2a213f8efb120cd2d61fed3eb7 Mon Sep 17 00:00:00 2001 From: Michael Merickel <github@m.merickel.org> Date: Fri, 26 Oct 2018 01:08:57 +0200 Subject: [PATCH] Merge pull request #3397 from mmerickel/refactor-actions --- tests/test_config/test_init.py | 1038 --------------------------------------------------------- 1 files changed, 0 insertions(+), 1,038 deletions(-) diff --git a/tests/test_config/test_init.py b/tests/test_config/test_init.py index 2c92b60..811672f 100644 --- a/tests/test_config/test_init.py +++ b/tests/test_config/test_init.py @@ -1,7 +1,5 @@ import os import unittest -from zope.interface import Interface -from zope.interface import implementer from pyramid.compat import im_func from pyramid.testing import skip_on @@ -10,7 +8,6 @@ from . import dummy_include from . import dummy_extend from . import dummy_extend2 -from . import IDummy from . import DummyContext from pyramid.exceptions import ConfigurationExecutionError @@ -34,8 +31,6 @@ name='', exception_view=False, ): - from zope.interface import Interface - from pyramid.interfaces import IRequest from pyramid.interfaces import IView from pyramid.interfaces import IViewClassifier from pyramid.interfaces import IExceptionViewClassifier @@ -44,10 +39,6 @@ classifier = IExceptionViewClassifier else: classifier = IViewClassifier - if ctx_iface is None: - ctx_iface = Interface - if request_iface is None: - request_iface = IRequest return config.registry.adapters.lookup( (classifier, request_iface, ctx_iface), IView, @@ -299,7 +290,6 @@ def test_ctor_httpexception_view_default(self): from pyramid.interfaces import IExceptionResponse from pyramid.httpexceptions import default_exceptionresponse_view - from pyramid.interfaces import IRequest config = self._makeOne() view = self._getViewCallable( @@ -309,7 +299,6 @@ def test_ctor_exceptionresponse_view_None(self): from pyramid.interfaces import IExceptionResponse - from pyramid.interfaces import IRequest config = self._makeOne(exceptionresponse_view=None) view = self._getViewCallable( @@ -319,7 +308,6 @@ def test_ctor_exceptionresponse_view_custom(self): from pyramid.interfaces import IExceptionResponse - from pyramid.interfaces import IRequest def exceptionresponse_view(context, request): # pragma: no cover pass @@ -548,7 +536,6 @@ def test_setup_registry_explicit_notfound_trumps_iexceptionresponse(self): from pyramid.renderers import null_renderer from zope.interface import implementedBy - from pyramid.interfaces import IRequest from pyramid.httpexceptions import HTTPNotFound from pyramid.registry import Registry @@ -975,110 +962,8 @@ config.include(include) self.assertTrue(stack[0] is config.registry) - def test_action_branching_kw_is_None(self): - config = self._makeOne(autocommit=True) - self.assertEqual(config.action('discrim'), None) - - def test_action_branching_kw_is_not_None(self): - config = self._makeOne(autocommit=True) - self.assertEqual(config.action('discrim', kw={'a': 1}), None) - - def test_action_autocommit_with_introspectables(self): - from pyramid.config.util import ActionInfo - - config = self._makeOne(autocommit=True) - intr = DummyIntrospectable() - config.action('discrim', introspectables=(intr,)) - self.assertEqual(len(intr.registered), 1) - self.assertEqual(intr.registered[0][0], config.introspector) - self.assertEqual(intr.registered[0][1].__class__, ActionInfo) - - def test_action_autocommit_with_introspectables_introspection_off(self): - config = self._makeOne(autocommit=True) - config.introspection = False - intr = DummyIntrospectable() - config.action('discrim', introspectables=(intr,)) - self.assertEqual(len(intr.registered), 0) - - def test_action_branching_nonautocommit_with_config_info(self): - config = self._makeOne(autocommit=False) - config.info = 'abc' - state = DummyActionState() - state.autocommit = False - config.action_state = state - config.action('discrim', kw={'a': 1}) - self.assertEqual( - state.actions, - [ - ( - (), - { - 'args': (), - 'callable': None, - 'discriminator': 'discrim', - 'includepath': (), - 'info': 'abc', - 'introspectables': (), - 'kw': {'a': 1}, - 'order': 0, - }, - ) - ], - ) - - def test_action_branching_nonautocommit_without_config_info(self): - config = self._makeOne(autocommit=False) - config.info = '' - config._ainfo = ['z'] - state = DummyActionState() - config.action_state = state - state.autocommit = False - config.action('discrim', kw={'a': 1}) - self.assertEqual( - state.actions, - [ - ( - (), - { - 'args': (), - 'callable': None, - 'discriminator': 'discrim', - 'includepath': (), - 'info': 'z', - 'introspectables': (), - 'kw': {'a': 1}, - 'order': 0, - }, - ) - ], - ) - - def test_action_branching_nonautocommit_with_introspectables(self): - config = self._makeOne(autocommit=False) - config.info = '' - config._ainfo = [] - state = DummyActionState() - config.action_state = state - state.autocommit = False - intr = DummyIntrospectable() - config.action('discrim', introspectables=(intr,)) - self.assertEqual(state.actions[0][1]['introspectables'], (intr,)) - - def test_action_nonautocommit_with_introspectables_introspection_off(self): - config = self._makeOne(autocommit=False) - config.info = '' - config._ainfo = [] - config.introspection = False - state = DummyActionState() - config.action_state = state - state.autocommit = False - intr = DummyIntrospectable() - config.action('discrim', introspectables=(intr,)) - self.assertEqual(state.actions[0][1]['introspectables'], ()) - def test_scan_integration(self): from zope.interface import alsoProvides - from pyramid.interfaces import IRequest from pyramid.view import render_view_to_response import tests.test_config.pkgs.scannable as package @@ -1185,7 +1070,6 @@ def test_scan_integration_with_ignore(self): from zope.interface import alsoProvides - from pyramid.interfaces import IRequest from pyramid.view import render_view_to_response import tests.test_config.pkgs.scannable as package @@ -1207,7 +1091,6 @@ def test_scan_integration_dottedname_package(self): from zope.interface import alsoProvides - from pyramid.interfaces import IRequest from pyramid.view import render_view_to_response config = self._makeOne(autocommit=True) @@ -1305,149 +1188,6 @@ self.assertNotEqual(sm, '123') finally: getSiteManager.reset() - - def test_commit_conflict_simple(self): - config = self._makeOne() - - def view1(request): # pragma: no cover - pass - - def view2(request): # pragma: no cover - pass - - config.add_view(view1) - config.add_view(view2) - self.assertRaises(ConfigurationConflictError, config.commit) - - def test_commit_conflict_resolved_with_include(self): - config = self._makeOne() - - def view1(request): # pragma: no cover - pass - - def view2(request): # pragma: no cover - pass - - def includeme(config): - config.add_view(view2) - - config.add_view(view1) - config.include(includeme) - config.commit() - registeredview = self._getViewCallable(config) - self.assertEqual(registeredview.__name__, 'view1') - - def test_commit_conflict_with_two_includes(self): - config = self._makeOne() - - def view1(request): # pragma: no cover - pass - - def view2(request): # pragma: no cover - pass - - def includeme1(config): - config.add_view(view1) - - def includeme2(config): - config.add_view(view2) - - config.include(includeme1) - config.include(includeme2) - try: - config.commit() - except ConfigurationConflictError as why: - c1, c2 = _conflictFunctions(why) - self.assertEqual(c1, 'includeme1') - self.assertEqual(c2, 'includeme2') - else: # pragma: no cover - raise AssertionError - - def test_commit_conflict_resolved_with_two_includes_and_local(self): - config = self._makeOne() - - def view1(request): # pragma: no cover - pass - - def view2(request): # pragma: no cover - pass - - def view3(request): # pragma: no cover - pass - - def includeme1(config): - config.add_view(view1) - - def includeme2(config): - config.add_view(view2) - - config.include(includeme1) - config.include(includeme2) - config.add_view(view3) - config.commit() - registeredview = self._getViewCallable(config) - self.assertEqual(registeredview.__name__, 'view3') - - def test_autocommit_no_conflicts(self): - from pyramid.renderers import null_renderer - - config = self._makeOne(autocommit=True) - - def view1(request): # pragma: no cover - pass - - def view2(request): # pragma: no cover - pass - - def view3(request): # pragma: no cover - pass - - config.add_view(view1, renderer=null_renderer) - config.add_view(view2, renderer=null_renderer) - config.add_view(view3, renderer=null_renderer) - config.commit() - registeredview = self._getViewCallable(config) - self.assertEqual(registeredview.__name__, 'view3') - - def test_conflict_set_notfound_view(self): - config = self._makeOne() - - def view1(request): # pragma: no cover - pass - - def view2(request): # pragma: no cover - pass - - config.set_notfound_view(view1) - config.set_notfound_view(view2) - try: - config.commit() - except ConfigurationConflictError as why: - c1, c2 = _conflictFunctions(why) - self.assertEqual(c1, 'test_conflict_set_notfound_view') - self.assertEqual(c2, 'test_conflict_set_notfound_view') - else: # pragma: no cover - raise AssertionError - - def test_conflict_set_forbidden_view(self): - config = self._makeOne() - - def view1(request): # pragma: no cover - pass - - def view2(request): # pragma: no cover - pass - - config.set_forbidden_view(view1) - config.set_forbidden_view(view2) - try: - config.commit() - except ConfigurationConflictError as why: - c1, c2 = _conflictFunctions(why) - self.assertEqual(c1, 'test_conflict_set_forbidden_view') - self.assertEqual(c2, 'test_conflict_set_forbidden_view') - else: # pragma: no cover - raise AssertionError def test___getattr__missing_when_directives_exist(self): config = self._makeOne() @@ -1624,749 +1364,6 @@ ) -class TestActionState(unittest.TestCase): - def _makeOne(self): - from pyramid.config import ActionState - - return ActionState() - - def test_it(self): - c = self._makeOne() - self.assertEqual(c.actions, []) - - def test_action_simple(self): - from . import dummyfactory as f - - c = self._makeOne() - c.actions = [] - c.action(1, f, (1,), {'x': 1}) - self.assertEqual( - c.actions, - [ - { - 'args': (1,), - 'callable': f, - 'discriminator': 1, - 'includepath': (), - 'info': None, - 'introspectables': (), - 'kw': {'x': 1}, - 'order': 0, - } - ], - ) - c.action(None) - self.assertEqual( - c.actions, - [ - { - 'args': (1,), - 'callable': f, - 'discriminator': 1, - 'includepath': (), - 'info': None, - 'introspectables': (), - 'kw': {'x': 1}, - 'order': 0, - }, - { - 'args': (), - 'callable': None, - 'discriminator': None, - 'includepath': (), - 'info': None, - 'introspectables': (), - 'kw': {}, - 'order': 0, - }, - ], - ) - - def test_action_with_includepath(self): - c = self._makeOne() - c.actions = [] - c.action(None, includepath=('abc',)) - self.assertEqual( - c.actions, - [ - { - 'args': (), - 'callable': None, - 'discriminator': None, - 'includepath': ('abc',), - 'info': None, - 'introspectables': (), - 'kw': {}, - 'order': 0, - } - ], - ) - - def test_action_with_info(self): - c = self._makeOne() - c.action(None, info='abc') - self.assertEqual( - c.actions, - [ - { - 'args': (), - 'callable': None, - 'discriminator': None, - 'includepath': (), - 'info': 'abc', - 'introspectables': (), - 'kw': {}, - 'order': 0, - } - ], - ) - - def test_action_with_includepath_and_info(self): - c = self._makeOne() - c.action(None, includepath=('spec',), info='bleh') - self.assertEqual( - c.actions, - [ - { - 'args': (), - 'callable': None, - 'discriminator': None, - 'includepath': ('spec',), - 'info': 'bleh', - 'introspectables': (), - 'kw': {}, - 'order': 0, - } - ], - ) - - def test_action_with_order(self): - c = self._makeOne() - c.actions = [] - c.action(None, order=99999) - self.assertEqual( - c.actions, - [ - { - 'args': (), - 'callable': None, - 'discriminator': None, - 'includepath': (), - 'info': None, - 'introspectables': (), - 'kw': {}, - 'order': 99999, - } - ], - ) - - def test_action_with_introspectables(self): - c = self._makeOne() - c.actions = [] - intr = DummyIntrospectable() - c.action(None, introspectables=(intr,)) - self.assertEqual( - c.actions, - [ - { - 'args': (), - 'callable': None, - 'discriminator': None, - 'includepath': (), - 'info': None, - 'introspectables': (intr,), - 'kw': {}, - 'order': 0, - } - ], - ) - - def test_processSpec(self): - c = self._makeOne() - self.assertTrue(c.processSpec('spec')) - self.assertFalse(c.processSpec('spec')) - - def test_execute_actions_tuples(self): - output = [] - - def f(*a, **k): - output.append((a, k)) - - c = self._makeOne() - c.actions = [ - (1, f, (1,)), - (1, f, (11,), {}, ('x',)), - (2, f, (2,)), - (None, None), - ] - c.execute_actions() - self.assertEqual(output, [((1,), {}), ((2,), {})]) - - def test_execute_actions_dicts(self): - output = [] - - def f(*a, **k): - output.append((a, k)) - - c = self._makeOne() - c.actions = [ - { - 'discriminator': 1, - 'callable': f, - 'args': (1,), - 'kw': {}, - 'order': 0, - 'includepath': (), - 'info': None, - 'introspectables': (), - }, - { - 'discriminator': 1, - 'callable': f, - 'args': (11,), - 'kw': {}, - 'includepath': ('x',), - 'order': 0, - 'info': None, - 'introspectables': (), - }, - { - 'discriminator': 2, - 'callable': f, - 'args': (2,), - 'kw': {}, - 'order': 0, - 'includepath': (), - 'info': None, - 'introspectables': (), - }, - { - 'discriminator': None, - 'callable': None, - 'args': (), - 'kw': {}, - 'order': 0, - 'includepath': (), - 'info': None, - 'introspectables': (), - }, - ] - c.execute_actions() - self.assertEqual(output, [((1,), {}), ((2,), {})]) - - def test_execute_actions_with_introspectables(self): - output = [] - - def f(*a, **k): - output.append((a, k)) - - c = self._makeOne() - intr = DummyIntrospectable() - c.actions = [ - { - 'discriminator': 1, - 'callable': f, - 'args': (1,), - 'kw': {}, - 'order': 0, - 'includepath': (), - 'info': None, - 'introspectables': (intr,), - } - ] - introspector = object() - c.execute_actions(introspector=introspector) - self.assertEqual(output, [((1,), {})]) - self.assertEqual(intr.registered, [(introspector, None)]) - - def test_execute_actions_with_introspectable_no_callable(self): - c = self._makeOne() - intr = DummyIntrospectable() - c.actions = [ - { - 'discriminator': 1, - 'callable': None, - 'args': (1,), - 'kw': {}, - 'order': 0, - 'includepath': (), - 'info': None, - 'introspectables': (intr,), - } - ] - introspector = object() - c.execute_actions(introspector=introspector) - self.assertEqual(intr.registered, [(introspector, None)]) - - def test_execute_actions_error(self): - output = [] - - def f(*a, **k): - output.append(('f', a, k)) - - def bad(): - raise NotImplementedError - - c = self._makeOne() - c.actions = [ - (1, f, (1,)), - (1, f, (11,), {}, ('x',)), - (2, f, (2,)), - (3, bad, (), {}, (), 'oops'), - ] - self.assertRaises(ConfigurationExecutionError, c.execute_actions) - self.assertEqual(output, [('f', (1,), {}), ('f', (2,), {})]) - - def test_reentrant_action(self): - output = [] - c = self._makeOne() - - def f(*a, **k): - output.append(('f', a, k)) - c.actions.append((3, g, (8,), {})) - - def g(*a, **k): - output.append(('g', a, k)) - - c.actions = [(1, f, (1,))] - c.execute_actions() - self.assertEqual(output, [('f', (1,), {}), ('g', (8,), {})]) - - def test_reentrant_action_with_deferred_discriminator(self): - # see https://github.com/Pylons/pyramid/issues/2697 - from pyramid.registry import Deferred - - output = [] - c = self._makeOne() - - def f(*a, **k): - output.append(('f', a, k)) - c.actions.append((4, g, (4,), {}, (), None, 2)) - - def g(*a, **k): - output.append(('g', a, k)) - - def h(*a, **k): - output.append(('h', a, k)) - - def discrim(): - self.assertEqual(output, [('f', (1,), {}), ('g', (2,), {})]) - return 3 - - d = Deferred(discrim) - c.actions = [ - (d, h, (3,), {}, (), None, 1), # order 1 - (1, f, (1,)), # order 0 - (2, g, (2,)), # order 0 - ] - c.execute_actions() - self.assertEqual( - output, - [ - ('f', (1,), {}), - ('g', (2,), {}), - ('h', (3,), {}), - ('g', (4,), {}), - ], - ) - - def test_reentrant_action_error(self): - from pyramid.exceptions import ConfigurationError - - c = self._makeOne() - - def f(*a, **k): - c.actions.append((3, g, (8,), {}, (), None, -1)) - - def g(*a, **k): # pragma: no cover - pass - - c.actions = [(1, f, (1,))] - self.assertRaises(ConfigurationError, c.execute_actions) - - def test_reentrant_action_without_clear(self): - c = self._makeOne() - - def f(*a, **k): - c.actions.append((3, g, (8,))) - - def g(*a, **k): - pass - - c.actions = [(1, f, (1,))] - c.execute_actions(clear=False) - self.assertEqual(c.actions, [(1, f, (1,)), (3, g, (8,))]) - - def test_executing_conflicting_action_across_orders(self): - from pyramid.exceptions import ConfigurationConflictError - - c = self._makeOne() - - def f(*a, **k): - pass - - def g(*a, **k): # pragma: no cover - pass - - c.actions = [(1, f, (1,), {}, (), None, -1), (1, g, (2,))] - self.assertRaises(ConfigurationConflictError, c.execute_actions) - - def test_executing_conflicting_action_across_reentrant_orders(self): - from pyramid.exceptions import ConfigurationConflictError - - c = self._makeOne() - - def f(*a, **k): - c.actions.append((1, g, (8,))) - - def g(*a, **k): # pragma: no cover - pass - - c.actions = [(1, f, (1,), {}, (), None, -1)] - self.assertRaises(ConfigurationConflictError, c.execute_actions) - - -class Test_reentrant_action_functional(unittest.TestCase): - def _makeConfigurator(self, *arg, **kw): - from pyramid.config import Configurator - - config = Configurator(*arg, **kw) - return config - - def test_functional(self): - def add_auto_route(config, name, view): - def register(): - config.add_view(route_name=name, view=view) - config.add_route(name, '/' + name) - - config.action(('auto route', name), register, order=-30) - - config = self._makeConfigurator() - config.add_directive('add_auto_route', add_auto_route) - - def my_view(request): # pragma: no cover - return request.response - - config.add_auto_route('foo', my_view) - config.commit() - from pyramid.interfaces import IRoutesMapper - - mapper = config.registry.getUtility(IRoutesMapper) - routes = mapper.get_routes() - route = routes[0] - self.assertEqual(len(routes), 1) - self.assertEqual(route.name, 'foo') - self.assertEqual(route.path, '/foo') - - def test_deferred_discriminator(self): - # see https://github.com/Pylons/pyramid/issues/2697 - from pyramid.config import PHASE0_CONFIG - - config = self._makeConfigurator() - - def deriver(view, info): - return view - - deriver.options = ('foo',) - config.add_view_deriver(deriver, 'foo_view') - # add_view uses a deferred discriminator and will fail if executed - # prior to add_view_deriver executing its action - config.add_view(lambda r: r.response, name='', foo=1) - - def dummy_action(): - # trigger a re-entrant action - config.action(None, lambda: None) - - config.action(None, dummy_action, order=PHASE0_CONFIG) - config.commit() - - -class Test_resolveConflicts(unittest.TestCase): - def _callFUT(self, actions): - from pyramid.config import resolveConflicts - - return resolveConflicts(actions) - - def test_it_success_tuples(self): - from . import dummyfactory as f - - result = self._callFUT( - [ - (None, f), - (1, f, (1,), {}, (), 'first'), - (1, f, (2,), {}, ('x',), 'second'), - (1, f, (3,), {}, ('y',), 'third'), - (4, f, (4,), {}, ('y',), 'should be last', 99999), - (3, f, (3,), {}, ('y',)), - (None, f, (5,), {}, ('y',)), - ] - ) - result = list(result) - self.assertEqual( - result, - [ - { - 'info': None, - 'args': (), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': None, - 'includepath': (), - 'order': 0, - }, - { - 'info': 'first', - 'args': (1,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 1, - 'includepath': (), - 'order': 0, - }, - { - 'info': None, - 'args': (3,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 3, - 'includepath': ('y',), - 'order': 0, - }, - { - 'info': None, - 'args': (5,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': None, - 'includepath': ('y',), - 'order': 0, - }, - { - 'info': 'should be last', - 'args': (4,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 4, - 'includepath': ('y',), - 'order': 99999, - }, - ], - ) - - def test_it_success_dicts(self): - from . import dummyfactory as f - - result = self._callFUT( - [ - (None, f), - (1, f, (1,), {}, (), 'first'), - (1, f, (2,), {}, ('x',), 'second'), - (1, f, (3,), {}, ('y',), 'third'), - (4, f, (4,), {}, ('y',), 'should be last', 99999), - (3, f, (3,), {}, ('y',)), - (None, f, (5,), {}, ('y',)), - ] - ) - result = list(result) - self.assertEqual( - result, - [ - { - 'info': None, - 'args': (), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': None, - 'includepath': (), - 'order': 0, - }, - { - 'info': 'first', - 'args': (1,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 1, - 'includepath': (), - 'order': 0, - }, - { - 'info': None, - 'args': (3,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 3, - 'includepath': ('y',), - 'order': 0, - }, - { - 'info': None, - 'args': (5,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': None, - 'includepath': ('y',), - 'order': 0, - }, - { - 'info': 'should be last', - 'args': (4,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 4, - 'includepath': ('y',), - 'order': 99999, - }, - ], - ) - - def test_it_conflict(self): - from . import dummyfactory as f - - result = self._callFUT( - [ - (None, f), - (1, f, (2,), {}, ('x',), 'eek'), # will conflict - (1, f, (3,), {}, ('y',), 'ack'), # will conflict - (4, f, (4,), {}, ('y',)), - (3, f, (3,), {}, ('y',)), - (None, f, (5,), {}, ('y',)), - ] - ) - self.assertRaises(ConfigurationConflictError, list, result) - - def test_it_with_actions_grouped_by_order(self): - from . import dummyfactory as f - - result = self._callFUT( - [ - (None, f), # X - (1, f, (1,), {}, (), 'third', 10), # X - (1, f, (2,), {}, ('x',), 'fourth', 10), - (1, f, (3,), {}, ('y',), 'fifth', 10), - (2, f, (1,), {}, (), 'sixth', 10), # X - (3, f, (1,), {}, (), 'seventh', 10), # X - (5, f, (4,), {}, ('y',), 'eighth', 99999), # X - (4, f, (3,), {}, (), 'first', 5), # X - (4, f, (5,), {}, ('y',), 'second', 5), - ] - ) - result = list(result) - self.assertEqual(len(result), 6) - # resolved actions should be grouped by (order, i) - self.assertEqual( - result, - [ - { - 'info': None, - 'args': (), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': None, - 'includepath': (), - 'order': 0, - }, - { - 'info': 'first', - 'args': (3,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 4, - 'includepath': (), - 'order': 5, - }, - { - 'info': 'third', - 'args': (1,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 1, - 'includepath': (), - 'order': 10, - }, - { - 'info': 'sixth', - 'args': (1,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 2, - 'includepath': (), - 'order': 10, - }, - { - 'info': 'seventh', - 'args': (1,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 3, - 'includepath': (), - 'order': 10, - }, - { - 'info': 'eighth', - 'args': (4,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 5, - 'includepath': ('y',), - 'order': 99999, - }, - ], - ) - - def test_override_success_across_orders(self): - from . import dummyfactory as f - - result = self._callFUT( - [ - (1, f, (2,), {}, ('x',), 'eek', 0), - (1, f, (3,), {}, ('x', 'y'), 'ack', 10), - ] - ) - result = list(result) - self.assertEqual( - result, - [ - { - 'info': 'eek', - 'args': (2,), - 'callable': f, - 'introspectables': (), - 'kw': {}, - 'discriminator': 1, - 'includepath': ('x',), - 'order': 0, - } - ], - ) - - def test_conflicts_across_orders(self): - from . import dummyfactory as f - - result = self._callFUT( - [ - (1, f, (2,), {}, ('x', 'y'), 'eek', 0), - (1, f, (3,), {}, ('x'), 'ack', 10), - ] - ) - self.assertRaises(ConfigurationConflictError, list, result) - - class TestGlobalRegistriesIntegration(unittest.TestCase): def setUp(self): from pyramid.config import global_registries @@ -2430,11 +1427,6 @@ self.popped = True -@implementer(IDummy) -class DummyEvent: - pass - - class DummyRegistry(object): def __init__(self, adaptation=None, util=None): self.utilities = [] @@ -2457,36 +1449,6 @@ def queryUtility(self, *arg, **kw): return self.util - - -class IOther(Interface): - pass - - -def _conflictFunctions(e): - conflicts = e._conflicts.values() - for conflict in conflicts: - for confinst in conflict: - yield confinst.function - - -class DummyActionState(object): - autocommit = False - info = '' - - def __init__(self): - self.actions = [] - - def action(self, *arg, **kw): - self.actions.append((arg, kw)) - - -class DummyIntrospectable(object): - def __init__(self): - self.registered = [] - - def register(self, introspector, action_info): - self.registered.append((introspector, action_info)) class DummyPredicate(object): -- Gitblit v1.9.3