summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2011-10-05 22:05:41 -0400
committerChris McDonough <chrism@plope.com>2011-10-05 22:05:41 -0400
commit262cea6db9ff01068d0a40726959849006d3b27c (patch)
treed67fc74d9c4d58928969ae85e47e69e5707c45e2
parenteb0432c504f4f4d45cc714e94709ee2976bb7b8f (diff)
downloadpyramid-262cea6db9ff01068d0a40726959849006d3b27c.tar.gz
pyramid-262cea6db9ff01068d0a40726959849006d3b27c.tar.bz2
pyramid-262cea6db9ff01068d0a40726959849006d3b27c.zip
break script tests into separate files
-rw-r--r--pyramid/tests/test_scripts.py1027
-rw-r--r--pyramid/tests/test_scripts/__init__.py1
-rw-r--r--pyramid/tests/test_scripts/dummy.py151
-rw-r--r--pyramid/tests/test_scripts/test_proutes.py129
-rw-r--r--pyramid/tests/test_scripts/test_pshell.py249
-rw-r--r--pyramid/tests/test_scripts/test_ptweens.py53
-rw-r--r--pyramid/tests/test_scripts/test_pviews.py467
7 files changed, 1050 insertions, 1027 deletions
diff --git a/pyramid/tests/test_scripts.py b/pyramid/tests/test_scripts.py
deleted file mode 100644
index c76839f80..000000000
--- a/pyramid/tests/test_scripts.py
+++ /dev/null
@@ -1,1027 +0,0 @@
-import unittest
-
-class TestPShellCommand(unittest.TestCase):
- def _getTargetClass(self):
- from pyramid.scripts.pshell import PShellCommand
- return PShellCommand
-
- def _makeOne(self, patch_bootstrap=True, patch_config=True,
- patch_args=True, patch_options=True):
- cmd = self._getTargetClass()([])
- if patch_bootstrap:
- self.bootstrap = DummyBootstrap()
- cmd.bootstrap = (self.bootstrap,)
- if patch_config:
- self.config_factory = DummyConfigParserFactory()
- cmd.ConfigParser = self.config_factory
- if patch_args:
- self.args = ('/foo/bar/myapp.ini#myapp',)
- cmd.args = self.args
- if patch_options:
- class Options(object): pass
- self.options = Options()
- self.options.disable_ipython = True
- self.options.setup = None
- cmd.options = self.options
- return cmd
-
- def test_make_default_shell(self):
- command = self._makeOne()
- interact = DummyInteractor()
- shell = command.make_default_shell(interact)
- shell({'foo': 'bar'}, 'a help message')
- self.assertEqual(interact.local, {'foo': 'bar'})
- self.assertTrue('a help message' in interact.banner)
-
- def test_make_ipython_v0_11_shell(self):
- command = self._makeOne()
- ipshell_factory = DummyIPShellFactory()
- shell = command.make_ipython_v0_11_shell(ipshell_factory)
- shell({'foo': 'bar'}, 'a help message')
- self.assertEqual(ipshell_factory.kw['user_ns'], {'foo': 'bar'})
- self.assertTrue('a help message' in ipshell_factory.kw['banner2'])
- self.assertTrue(ipshell_factory.shell.called)
-
- def test_make_ipython_v0_10_shell(self):
- command = self._makeOne()
- ipshell_factory = DummyIPShellFactory()
- shell = command.make_ipython_v0_10_shell(ipshell_factory)
- shell({'foo': 'bar'}, 'a help message')
- self.assertEqual(ipshell_factory.kw['argv'], [])
- self.assertEqual(ipshell_factory.kw['user_ns'], {'foo': 'bar'})
- self.assertTrue('a help message' in ipshell_factory.shell.banner)
- self.assertTrue(ipshell_factory.shell.called)
-
- def test_command_loads_default_shell(self):
- command = self._makeOne()
- shell = DummyShell()
- command.make_ipython_v0_11_shell = lambda: None
- command.make_ipython_v0_10_shell = lambda: None
- command.make_default_shell = lambda: shell
- command.run()
- self.assertTrue(self.config_factory.parser)
- self.assertEqual(self.config_factory.parser.filename,
- '/foo/bar/myapp.ini')
- self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
- self.assertEqual(shell.env, {
- 'app':self.bootstrap.app, 'root':self.bootstrap.root,
- 'registry':self.bootstrap.registry,
- 'request':self.bootstrap.request,
- 'root_factory':self.bootstrap.root_factory,
- })
- self.assertTrue(self.bootstrap.closer.called)
- self.assertTrue(shell.help)
-
- def test_command_loads_default_shell_with_ipython_disabled(self):
- command = self._makeOne()
- shell = DummyShell()
- bad_shell = DummyShell()
- command.make_ipython_v0_11_shell = lambda: bad_shell
- command.make_ipython_v0_10_shell = lambda: bad_shell
- command.make_default_shell = lambda: shell
- command.options.disable_ipython = True
- command.run()
- self.assertTrue(self.config_factory.parser)
- self.assertEqual(self.config_factory.parser.filename,
- '/foo/bar/myapp.ini')
- self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
- self.assertEqual(shell.env, {
- 'app':self.bootstrap.app, 'root':self.bootstrap.root,
- 'registry':self.bootstrap.registry,
- 'request':self.bootstrap.request,
- 'root_factory':self.bootstrap.root_factory,
- })
- self.assertEqual(bad_shell.env, {})
- self.assertTrue(self.bootstrap.closer.called)
- self.assertTrue(shell.help)
-
- def test_command_loads_ipython_v0_11(self):
- command = self._makeOne()
- shell = DummyShell()
- command.make_ipython_v0_11_shell = lambda: shell
- command.make_ipython_v0_10_shell = lambda: None
- command.make_default_shell = lambda: None
- command.options.disable_ipython = False
- command.run()
- self.assertTrue(self.config_factory.parser)
- self.assertEqual(self.config_factory.parser.filename,
- '/foo/bar/myapp.ini')
- self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
- self.assertEqual(shell.env, {
- 'app':self.bootstrap.app, 'root':self.bootstrap.root,
- 'registry':self.bootstrap.registry,
- 'request':self.bootstrap.request,
- 'root_factory':self.bootstrap.root_factory,
- })
- self.assertTrue(self.bootstrap.closer.called)
- self.assertTrue(shell.help)
-
- def test_command_loads_ipython_v0_10(self):
- command = self._makeOne()
- shell = DummyShell()
- command.make_ipython_v0_11_shell = lambda: None
- command.make_ipython_v0_10_shell = lambda: shell
- command.make_default_shell = lambda: None
- command.options.disable_ipython = False
- command.run()
- self.assertTrue(self.config_factory.parser)
- self.assertEqual(self.config_factory.parser.filename,
- '/foo/bar/myapp.ini')
- self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
- self.assertEqual(shell.env, {
- 'app':self.bootstrap.app, 'root':self.bootstrap.root,
- 'registry':self.bootstrap.registry,
- 'request':self.bootstrap.request,
- 'root_factory':self.bootstrap.root_factory,
- })
- self.assertTrue(self.bootstrap.closer.called)
- self.assertTrue(shell.help)
-
- def test_command_loads_custom_items(self):
- command = self._makeOne()
- model = Dummy()
- self.config_factory.items = [('m', model)]
- shell = DummyShell()
- command.run(shell)
- self.assertTrue(self.config_factory.parser)
- self.assertEqual(self.config_factory.parser.filename,
- '/foo/bar/myapp.ini')
- self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
- self.assertEqual(shell.env, {
- 'app':self.bootstrap.app, 'root':self.bootstrap.root,
- 'registry':self.bootstrap.registry,
- 'request':self.bootstrap.request,
- 'root_factory':self.bootstrap.root_factory,
- 'm':model,
- })
- self.assertTrue(self.bootstrap.closer.called)
- self.assertTrue(shell.help)
-
- def test_command_setup(self):
- command = self._makeOne()
- def setup(env):
- env['a'] = 1
- env['root'] = 'root override'
- self.config_factory.items = [('setup', setup)]
- shell = DummyShell()
- command.run(shell)
- self.assertTrue(self.config_factory.parser)
- self.assertEqual(self.config_factory.parser.filename,
- '/foo/bar/myapp.ini')
- self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
- self.assertEqual(shell.env, {
- 'app':self.bootstrap.app, 'root':'root override',
- 'registry':self.bootstrap.registry,
- 'request':self.bootstrap.request,
- 'root_factory':self.bootstrap.root_factory,
- 'a':1,
- })
- self.assertTrue(self.bootstrap.closer.called)
- self.assertTrue(shell.help)
-
- def test_command_loads_check_variable_override_order(self):
- command = self._makeOne()
- model = Dummy()
- def setup(env):
- env['a'] = 1
- env['m'] = 'model override'
- env['root'] = 'root override'
- self.config_factory.items = [('setup', setup), ('m', model)]
- shell = DummyShell()
- command.run(shell)
- self.assertTrue(self.config_factory.parser)
- self.assertEqual(self.config_factory.parser.filename,
- '/foo/bar/myapp.ini')
- self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
- self.assertEqual(shell.env, {
- 'app':self.bootstrap.app, 'root':'root override',
- 'registry':self.bootstrap.registry,
- 'request':self.bootstrap.request,
- 'root_factory':self.bootstrap.root_factory,
- 'a':1, 'm':model,
- })
- self.assertTrue(self.bootstrap.closer.called)
- self.assertTrue(shell.help)
-
- def test_command_loads_setup_from_options(self):
- command = self._makeOne()
- def setup(env):
- env['a'] = 1
- env['root'] = 'root override'
- model = Dummy()
- self.config_factory.items = [('setup', 'abc'),
- ('m', model)]
- command.options.setup = setup
- shell = DummyShell()
- command.run(shell)
- self.assertTrue(self.config_factory.parser)
- self.assertEqual(self.config_factory.parser.filename,
- '/foo/bar/myapp.ini')
- self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
- self.assertEqual(shell.env, {
- 'app':self.bootstrap.app, 'root':'root override',
- 'registry':self.bootstrap.registry,
- 'request':self.bootstrap.request,
- 'root_factory':self.bootstrap.root_factory,
- 'a':1, 'm':model,
- })
- self.assertTrue(self.bootstrap.closer.called)
- self.assertTrue(shell.help)
-
- def test_command_custom_section_override(self):
- command = self._makeOne()
- dummy = Dummy()
- self.config_factory.items = [('app', dummy), ('root', dummy),
- ('registry', dummy), ('request', dummy)]
- shell = DummyShell()
- command.run(shell)
- self.assertTrue(self.config_factory.parser)
- self.assertEqual(self.config_factory.parser.filename,
- '/foo/bar/myapp.ini')
- self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
- self.assertEqual(shell.env, {
- 'app':dummy, 'root':dummy, 'registry':dummy, 'request':dummy,
- 'root_factory':self.bootstrap.root_factory,
- })
- self.assertTrue(self.bootstrap.closer.called)
- self.assertTrue(shell.help)
-
-class TestPRoutesCommand(unittest.TestCase):
- def _getTargetClass(self):
- from pyramid.scripts.proutes import PRoutesCommand
- return PRoutesCommand
-
- def _makeOne(self):
- cmd = self._getTargetClass()([])
- cmd.bootstrap = (DummyBootstrap(),)
- cmd.args = ('/foo/bar/myapp.ini#myapp',)
- return cmd
-
- def test_no_routes(self):
- command = self._makeOne()
- mapper = DummyMapper()
- command._get_mapper = lambda *arg: mapper
- L = []
- command.out = L.append
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L, [])
-
- def test_no_mapper(self):
- command = self._makeOne()
- command._get_mapper = lambda *arg:None
- L = []
- command.out = L.append
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L, [])
-
- def test_single_route_no_route_registered(self):
- command = self._makeOne()
- route = DummyRoute('a', '/a')
- mapper = DummyMapper(route)
- command._get_mapper = lambda *arg: mapper
- L = []
- command.out = L.append
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(len(L), 3)
- self.assertEqual(L[-1].split(), ['a', '/a', '<unknown>'])
-
- def test_single_route_no_views_registered(self):
- from zope.interface import Interface
- from pyramid.registry import Registry
- from pyramid.interfaces import IRouteRequest
- registry = Registry()
- def view():pass
- class IMyRoute(Interface):
- pass
- registry.registerUtility(IMyRoute, IRouteRequest, name='a')
- command = self._makeOne()
- route = DummyRoute('a', '/a')
- mapper = DummyMapper(route)
- command._get_mapper = lambda *arg: mapper
- L = []
- command.out = L.append
- command.bootstrap = (DummyBootstrap(registry=registry),)
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(len(L), 3)
- self.assertEqual(L[-1].split()[:3], ['a', '/a', 'None'])
-
- def test_single_route_one_view_registered(self):
- from zope.interface import Interface
- from pyramid.registry import Registry
- from pyramid.interfaces import IRouteRequest
- from pyramid.interfaces import IViewClassifier
- from pyramid.interfaces import IView
- registry = Registry()
- def view():pass
- class IMyRoute(Interface):
- pass
- registry.registerAdapter(view,
- (IViewClassifier, IMyRoute, Interface),
- IView, '')
- registry.registerUtility(IMyRoute, IRouteRequest, name='a')
- command = self._makeOne()
- route = DummyRoute('a', '/a')
- mapper = DummyMapper(route)
- command._get_mapper = lambda *arg: mapper
- L = []
- command.out = L.append
- command.bootstrap = (DummyBootstrap(registry=registry),)
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(len(L), 3)
- self.assertEqual(L[-1].split()[:4], ['a', '/a', '<function', 'view'])
-
- def test_single_route_one_view_registered_with_factory(self):
- from zope.interface import Interface
- from pyramid.registry import Registry
- from pyramid.interfaces import IRouteRequest
- from pyramid.interfaces import IViewClassifier
- from pyramid.interfaces import IView
- registry = Registry()
- def view():pass
- class IMyRoot(Interface):
- pass
- class IMyRoute(Interface):
- pass
- registry.registerAdapter(view,
- (IViewClassifier, IMyRoute, IMyRoot),
- IView, '')
- registry.registerUtility(IMyRoute, IRouteRequest, name='a')
- command = self._makeOne()
- def factory(request): pass
- route = DummyRoute('a', '/a', factory=factory)
- mapper = DummyMapper(route)
- command._get_mapper = lambda *arg: mapper
- L = []
- command.out = L.append
- command.bootstrap = (DummyBootstrap(registry=registry),)
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(len(L), 3)
- self.assertEqual(L[-1].split()[:3], ['a', '/a', '<unknown>'])
-
- def test__get_mapper(self):
- from pyramid.registry import Registry
- from pyramid.urldispatch import RoutesMapper
- command = self._makeOne()
- registry = Registry()
- result = command._get_mapper(registry)
- self.assertEqual(result.__class__, RoutesMapper)
-
-class TestPViewsCommand(unittest.TestCase):
- def _getTargetClass(self):
- from pyramid.scripts.pviews import PViewsCommand
- return PViewsCommand
-
- def _makeOne(self, registry=None):
- cmd = self._getTargetClass()([])
- cmd.bootstrap = (DummyBootstrap(registry=registry),)
- cmd.args = ('/foo/bar/myapp.ini#myapp',)
- return cmd
-
- def _register_mapper(self, registry, routes):
- from pyramid.interfaces import IRoutesMapper
- mapper = DummyMapper(*routes)
- registry.registerUtility(mapper, IRoutesMapper)
-
- def test__find_view_no_match(self):
- from pyramid.registry import Registry
- registry = Registry()
- self._register_mapper(registry, [])
- command = self._makeOne(registry)
- result = command._find_view('/a', registry)
- self.assertEqual(result, None)
-
- def test__find_view_no_match_multiview_registered(self):
- from zope.interface import implementer
- from zope.interface import providedBy
- from pyramid.interfaces import IRequest
- from pyramid.interfaces import IViewClassifier
- from pyramid.interfaces import IMultiView
- from pyramid.traversal import DefaultRootFactory
- from pyramid.registry import Registry
- registry = Registry()
- @implementer(IMultiView)
- class View1(object):
- pass
- request = DummyRequest({'PATH_INFO':'/a'})
- root = DefaultRootFactory(request)
- root_iface = providedBy(root)
- registry.registerAdapter(View1(),
- (IViewClassifier, IRequest, root_iface),
- IMultiView)
- self._register_mapper(registry, [])
- command = self._makeOne(registry=registry)
- result = command._find_view('/x', registry)
- self.assertEqual(result, None)
-
- def test__find_view_traversal(self):
- from zope.interface import providedBy
- from pyramid.interfaces import IRequest
- from pyramid.interfaces import IViewClassifier
- from pyramid.interfaces import IView
- from pyramid.traversal import DefaultRootFactory
- from pyramid.registry import Registry
- registry = Registry()
- def view1(): pass
- request = DummyRequest({'PATH_INFO':'/a'})
- root = DefaultRootFactory(request)
- root_iface = providedBy(root)
- registry.registerAdapter(view1,
- (IViewClassifier, IRequest, root_iface),
- IView, name='a')
- self._register_mapper(registry, [])
- command = self._makeOne(registry=registry)
- result = command._find_view('/a', registry)
- self.assertEqual(result, view1)
-
- def test__find_view_traversal_multiview(self):
- from zope.interface import implementer
- from zope.interface import providedBy
- from pyramid.interfaces import IRequest
- from pyramid.interfaces import IViewClassifier
- from pyramid.interfaces import IMultiView
- from pyramid.traversal import DefaultRootFactory
- from pyramid.registry import Registry
- registry = Registry()
- @implementer(IMultiView)
- class View1(object):
- pass
- request = DummyRequest({'PATH_INFO':'/a'})
- root = DefaultRootFactory(request)
- root_iface = providedBy(root)
- view = View1()
- registry.registerAdapter(view,
- (IViewClassifier, IRequest, root_iface),
- IMultiView, name='a')
- self._register_mapper(registry, [])
- command = self._makeOne(registry=registry)
- result = command._find_view('/a', registry)
- self.assertEqual(result, view)
-
- def test__find_view_route_no_multiview(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from pyramid.interfaces import IRouteRequest
- from pyramid.interfaces import IViewClassifier
- from pyramid.interfaces import IView
- from pyramid.registry import Registry
- registry = Registry()
- def view():pass
- class IMyRoot(Interface):
- pass
- class IMyRoute(Interface):
- pass
- registry.registerAdapter(view,
- (IViewClassifier, IMyRoute, IMyRoot),
- IView, '')
- registry.registerUtility(IMyRoute, IRouteRequest, name='a')
- @implementer(IMyRoot)
- class Factory(object):
- def __init__(self, request):
- pass
- routes = [DummyRoute('a', '/a', factory=Factory, matchdict={}),
- DummyRoute('b', '/b', factory=Factory)]
- self._register_mapper(registry, routes)
- command = self._makeOne(registry=registry)
- result = command._find_view('/a', registry)
- self.assertEqual(result, view)
-
- def test__find_view_route_multiview_no_view_registered(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from pyramid.interfaces import IRouteRequest
- from pyramid.interfaces import IMultiView
- from pyramid.interfaces import IRootFactory
- from pyramid.registry import Registry
- registry = Registry()
- def view1():pass
- def view2():pass
- class IMyRoot(Interface):
- pass
- class IMyRoute1(Interface):
- pass
- class IMyRoute2(Interface):
- pass
- registry.registerUtility(IMyRoute1, IRouteRequest, name='a')
- registry.registerUtility(IMyRoute2, IRouteRequest, name='b')
- @implementer(IMyRoot)
- class Factory(object):
- def __init__(self, request):
- pass
- registry.registerUtility(Factory, IRootFactory)
- routes = [DummyRoute('a', '/a', matchdict={}),
- DummyRoute('b', '/a', matchdict={})]
- self._register_mapper(registry, routes)
- command = self._makeOne(registry=registry)
- result = command._find_view('/a', registry)
- self.assertTrue(IMultiView.providedBy(result))
-
- def test__find_view_route_multiview(self):
- from zope.interface import Interface
- from zope.interface import implementer
- from pyramid.interfaces import IRouteRequest
- from pyramid.interfaces import IViewClassifier
- from pyramid.interfaces import IView
- from pyramid.interfaces import IMultiView
- from pyramid.interfaces import IRootFactory
- from pyramid.registry import Registry
- registry = Registry()
- def view1():pass
- def view2():pass
- class IMyRoot(Interface):
- pass
- class IMyRoute1(Interface):
- pass
- class IMyRoute2(Interface):
- pass
- registry.registerAdapter(view1,
- (IViewClassifier, IMyRoute1, IMyRoot),
- IView, '')
- registry.registerAdapter(view2,
- (IViewClassifier, IMyRoute2, IMyRoot),
- IView, '')
- registry.registerUtility(IMyRoute1, IRouteRequest, name='a')
- registry.registerUtility(IMyRoute2, IRouteRequest, name='b')
- @implementer(IMyRoot)
- class Factory(object):
- def __init__(self, request):
- pass
- registry.registerUtility(Factory, IRootFactory)
- routes = [DummyRoute('a', '/a', matchdict={}),
- DummyRoute('b', '/a', matchdict={})]
- self._register_mapper(registry, routes)
- command = self._makeOne(registry=registry)
- result = command._find_view('/a', registry)
- self.assertTrue(IMultiView.providedBy(result))
- self.assertEqual(len(result.views), 2)
- self.assertTrue((None, view1, None) in result.views)
- self.assertTrue((None, view2, None) in result.views)
-
- def test__find_multi_routes_all_match(self):
- command = self._makeOne()
- def factory(request): pass
- routes = [DummyRoute('a', '/a', factory=factory, matchdict={}),
- DummyRoute('b', '/a', factory=factory, matchdict={})]
- mapper = DummyMapper(*routes)
- request = DummyRequest({'PATH_INFO':'/a'})
- result = command._find_multi_routes(mapper, request)
- self.assertEqual(result, [{'match':{}, 'route':routes[0]},
- {'match':{}, 'route':routes[1]}])
-
- def test__find_multi_routes_some_match(self):
- command = self._makeOne()
- def factory(request): pass
- routes = [DummyRoute('a', '/a', factory=factory),
- DummyRoute('b', '/a', factory=factory, matchdict={})]
- mapper = DummyMapper(*routes)
- request = DummyRequest({'PATH_INFO':'/a'})
- result = command._find_multi_routes(mapper, request)
- self.assertEqual(result, [{'match':{}, 'route':routes[1]}])
-
- def test__find_multi_routes_none_match(self):
- command = self._makeOne()
- def factory(request): pass
- routes = [DummyRoute('a', '/a', factory=factory),
- DummyRoute('b', '/a', factory=factory)]
- mapper = DummyMapper(*routes)
- request = DummyRequest({'PATH_INFO':'/a'})
- result = command._find_multi_routes(mapper, request)
- self.assertEqual(result, [])
-
- def test_views_command_not_found(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- command._find_view = lambda arg1, arg2: None
- command.args = ('/foo/bar/myapp.ini#myapp', '/a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' Not found.')
-
- def test_views_command_not_found_url_starts_without_slash(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- command._find_view = lambda arg1, arg2: None
- command.args = ('/foo/bar/myapp.ini#myapp', 'a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' Not found.')
-
- def test_views_command_single_view_traversal(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- view = DummyView(context='context', view_name='a')
- command._find_view = lambda arg1, arg2: view
- command.args = ('/foo/bar/myapp.ini#myapp', '/a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' context: context')
- self.assertEqual(L[4], ' view name: a')
- self.assertEqual(L[8], ' pyramid.tests.test_scripts.DummyView')
-
- def test_views_command_single_view_function_traversal(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- def view(): pass
- view.__request_attrs__ = {'context': 'context', 'view_name': 'a'}
- command._find_view = lambda arg1, arg2: view
- command.args = ('/foo/bar/myapp.ini#myapp', '/a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' context: context')
- self.assertEqual(L[4], ' view name: a')
- self.assertEqual(L[8], ' pyramid.tests.test_scripts.view')
-
- def test_views_command_single_view_traversal_with_permission(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- view = DummyView(context='context', view_name='a')
- view.__permission__ = 'test'
- command._find_view = lambda arg1, arg2: view
- command.args = ('/foo/bar/myapp.ini#myapp', '/a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' context: context')
- self.assertEqual(L[4], ' view name: a')
- self.assertEqual(L[8], ' pyramid.tests.test_scripts.DummyView')
- self.assertEqual(L[9], ' required permission = test')
-
- def test_views_command_single_view_traversal_with_predicates(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- def predicate(): pass
- predicate.__text__ = "predicate = x"
- view = DummyView(context='context', view_name='a')
- view.__predicates__ = [predicate]
- command._find_view = lambda arg1, arg2: view
- command.args = ('/foo/bar/myapp.ini#myapp', '/a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' context: context')
- self.assertEqual(L[4], ' view name: a')
- self.assertEqual(L[8], ' pyramid.tests.test_scripts.DummyView')
- self.assertEqual(L[9], ' view predicates (predicate = x)')
-
- def test_views_command_single_view_route(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- route = DummyRoute('a', '/a', matchdict={})
- view = DummyView(context='context', view_name='a',
- matched_route=route, subpath='')
- command._find_view = lambda arg1, arg2: view
- command.args = ('/foo/bar/myapp.ini#myapp', '/a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' context: context')
- self.assertEqual(L[4], ' view name: a')
- self.assertEqual(L[6], ' Route:')
- self.assertEqual(L[8], ' route name: a')
- self.assertEqual(L[9], ' route pattern: /a')
- self.assertEqual(L[10], ' route path: /a')
- self.assertEqual(L[11], ' subpath: ')
- self.assertEqual(L[15], ' pyramid.tests.test_scripts.DummyView')
-
- def test_views_command_multi_view_nested(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- view1 = DummyView(context='context', view_name='a1')
- view1.__name__ = 'view1'
- view1.__view_attr__ = 'call'
- multiview1 = DummyMultiView(view1, context='context', view_name='a1')
- multiview2 = DummyMultiView(multiview1, context='context',
- view_name='a')
- command._find_view = lambda arg1, arg2: multiview2
- command.args = ('/foo/bar/myapp.ini#myapp', '/a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' context: context')
- self.assertEqual(L[4], ' view name: a')
- self.assertEqual(L[8], ' pyramid.tests.test_scripts.DummyMultiView')
- self.assertEqual(L[12], ' pyramid.tests.test_scripts.view1.call')
-
- def test_views_command_single_view_route_with_route_predicates(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- def predicate(): pass
- predicate.__text__ = "predicate = x"
- route = DummyRoute('a', '/a', matchdict={}, predicate=predicate)
- view = DummyView(context='context', view_name='a',
- matched_route=route, subpath='')
- command._find_view = lambda arg1, arg2: view
- command.args = ('/foo/bar/myapp.ini#myapp', '/a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' context: context')
- self.assertEqual(L[4], ' view name: a')
- self.assertEqual(L[6], ' Route:')
- self.assertEqual(L[8], ' route name: a')
- self.assertEqual(L[9], ' route pattern: /a')
- self.assertEqual(L[10], ' route path: /a')
- self.assertEqual(L[11], ' subpath: ')
- self.assertEqual(L[12], ' route predicates (predicate = x)')
- self.assertEqual(L[16], ' pyramid.tests.test_scripts.DummyView')
-
- def test_views_command_multiview(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- view = DummyView(context='context')
- view.__name__ = 'view'
- view.__view_attr__ = 'call'
- multiview = DummyMultiView(view, context='context', view_name='a')
- command._find_view = lambda arg1, arg2: multiview
- command.args = ('/foo/bar/myapp.ini#myapp', '/a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' context: context')
- self.assertEqual(L[4], ' view name: a')
- self.assertEqual(L[8], ' pyramid.tests.test_scripts.view.call')
-
- def test_views_command_multiview_with_permission(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- view = DummyView(context='context')
- view.__name__ = 'view'
- view.__view_attr__ = 'call'
- view.__permission__ = 'test'
- multiview = DummyMultiView(view, context='context', view_name='a')
- command._find_view = lambda arg1, arg2: multiview
- command.args = ('/foo/bar/myapp.ini#myapp', '/a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' context: context')
- self.assertEqual(L[4], ' view name: a')
- self.assertEqual(L[8], ' pyramid.tests.test_scripts.view.call')
- self.assertEqual(L[9], ' required permission = test')
-
- def test_views_command_multiview_with_predicates(self):
- from pyramid.registry import Registry
- registry = Registry()
- command = self._makeOne(registry=registry)
- L = []
- command.out = L.append
- def predicate(): pass
- predicate.__text__ = "predicate = x"
- view = DummyView(context='context')
- view.__name__ = 'view'
- view.__view_attr__ = 'call'
- view.__predicates__ = [predicate]
- multiview = DummyMultiView(view, context='context', view_name='a')
- command._find_view = lambda arg1, arg2: multiview
- command.args = ('/foo/bar/myapp.ini#myapp', '/a')
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L[1], 'URL = /a')
- self.assertEqual(L[3], ' context: context')
- self.assertEqual(L[4], ' view name: a')
- self.assertEqual(L[8], ' pyramid.tests.test_scripts.view.call')
- self.assertEqual(L[9], ' view predicates (predicate = x)')
-
-class TestPTweensCommand(unittest.TestCase):
- def _getTargetClass(self):
- from pyramid.scripts.ptweens import PTweensCommand
- return PTweensCommand
-
- def _makeOne(self):
- cmd = self._getTargetClass()([])
- cmd.bootstrap = (DummyBootstrap(),)
- cmd.args = ('/foo/bar/myapp.ini#myapp',)
- return cmd
-
- def test_command_no_tweens(self):
- command = self._makeOne()
- command._get_tweens = lambda *arg: None
- L = []
- command.out = L.append
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(L, [])
-
- def test_command_implicit_tweens_only(self):
- command = self._makeOne()
- tweens = DummyTweens([('name', 'item')], None)
- command._get_tweens = lambda *arg: tweens
- L = []
- command.out = L.append
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(
- L[0],
- '"pyramid.tweens" config value NOT set (implicitly ordered tweens '
- 'used)')
-
- def test_command_implicit_and_explicit_tweens(self):
- command = self._makeOne()
- tweens = DummyTweens([('name', 'item')], [('name2', 'item2')])
- command._get_tweens = lambda *arg: tweens
- L = []
- command.out = L.append
- result = command.run()
- self.assertEqual(result, None)
- self.assertEqual(
- L[0],
- '"pyramid.tweens" config value set (explicitly ordered tweens used)')
-
- def test__get_tweens(self):
- command = self._makeOne()
- registry = DummyRegistry()
- self.assertEqual(command._get_tweens(registry), None)
-
-class DummyTweens(object):
- def __init__(self, implicit, explicit):
- self._implicit = implicit
- self.explicit = explicit
- self.name_to_alias = {}
- def implicit(self):
- return self._implicit
-
-class Dummy:
- pass
-
-dummy_root = Dummy()
-
-class DummyRegistry(object):
- settings = {}
- def queryUtility(self, iface, default=None, name=''):
- return default
-
-dummy_registry = DummyRegistry()
-
-class DummyShell(object):
- env = {}
- help = ''
-
- def __call__(self, env, help):
- self.env = env
- self.help = help
-
-class DummyInteractor:
- def __call__(self, banner, local):
- self.banner = banner
- self.local = local
-
-class DummyIPShell(object):
- IP = Dummy()
- IP.BANNER = 'foo'
-
- def set_banner(self, banner):
- self.banner = banner
-
- def __call__(self):
- self.called = True
-
-class DummyIPShellFactory(object):
- def __call__(self, **kw):
- self.kw = kw
- self.shell = DummyIPShell()
- return self.shell
-
-class DummyApp:
- def __init__(self):
- self.registry = dummy_registry
-
-class DummyMapper(object):
- def __init__(self, *routes):
- self.routes = routes
-
- def get_routes(self):
- return self.routes
-
-class DummyRoute(object):
- def __init__(self, name, pattern, factory=None,
- matchdict=None, predicate=None):
- self.name = name
- self.path = pattern
- self.pattern = pattern
- self.factory = factory
- self.matchdict = matchdict
- self.predicates = []
- if predicate is not None:
- self.predicates = [predicate]
-
- def match(self, route):
- return self.matchdict
-
-class DummyRequest:
- application_url = 'http://example.com:5432'
- script_name = ''
- def __init__(self, environ):
- self.environ = environ
- self.matchdict = {}
-
-class DummyView(object):
- def __init__(self, **attrs):
- self.__request_attrs__ = attrs
-
-from zope.interface import implementer
-from pyramid.interfaces import IMultiView
-@implementer(IMultiView)
-class DummyMultiView(object):
-
- def __init__(self, *views, **attrs):
- self.views = [(None, view, None) for view in views]
- self.__request_attrs__ = attrs
-
-class DummyConfigParser(object):
- def __init__(self, result):
- self.result = result
-
- def read(self, filename):
- self.filename = filename
-
- def items(self, section):
- self.section = section
- if self.result is None:
- from pyramid.compat import configparser
- raise configparser.NoSectionError(section)
- return self.result
-
-class DummyConfigParserFactory(object):
- items = None
-
- def __call__(self):
- self.parser = DummyConfigParser(self.items)
- return self.parser
-
-class DummyCloser(object):
- def __call__(self):
- self.called = True
-
-class DummyBootstrap(object):
- def __init__(self, app=None, registry=None, request=None, root=None,
- root_factory=None, closer=None):
- self.app = app or DummyApp()
- if registry is None:
- registry = DummyRegistry()
- self.registry = registry
- if request is None:
- request = DummyRequest({})
- self.request = request
- if root is None:
- root = Dummy()
- self.root = root
- if root_factory is None:
- root_factory = Dummy()
- self.root_factory = root_factory
- if closer is None:
- closer = DummyCloser()
- self.closer = closer
-
- def __call__(self, *a, **kw):
- self.a = a
- self.kw = kw
- return {
- 'app': self.app,
- 'registry': self.registry,
- 'request': self.request,
- 'root': self.root,
- 'root_factory': self.root_factory,
- 'closer': self.closer,
- }
diff --git a/pyramid/tests/test_scripts/__init__.py b/pyramid/tests/test_scripts/__init__.py
new file mode 100644
index 000000000..5bb534f79
--- /dev/null
+++ b/pyramid/tests/test_scripts/__init__.py
@@ -0,0 +1 @@
+# package
diff --git a/pyramid/tests/test_scripts/dummy.py b/pyramid/tests/test_scripts/dummy.py
new file mode 100644
index 000000000..3275f7804
--- /dev/null
+++ b/pyramid/tests/test_scripts/dummy.py
@@ -0,0 +1,151 @@
+class DummyTweens(object):
+ def __init__(self, implicit, explicit):
+ self._implicit = implicit
+ self.explicit = explicit
+ self.name_to_alias = {}
+ def implicit(self):
+ return self._implicit
+
+class Dummy:
+ pass
+
+dummy_root = Dummy()
+
+class DummyRegistry(object):
+ settings = {}
+ def queryUtility(self, iface, default=None, name=''):
+ return default
+
+dummy_registry = DummyRegistry()
+
+class DummyShell(object):
+ env = {}
+ help = ''
+
+ def __call__(self, env, help):
+ self.env = env
+ self.help = help
+
+class DummyInteractor:
+ def __call__(self, banner, local):
+ self.banner = banner
+ self.local = local
+
+class DummyIPShell(object):
+ IP = Dummy()
+ IP.BANNER = 'foo'
+
+ def set_banner(self, banner):
+ self.banner = banner
+
+ def __call__(self):
+ self.called = True
+
+class DummyIPShellFactory(object):
+ def __call__(self, **kw):
+ self.kw = kw
+ self.shell = DummyIPShell()
+ return self.shell
+
+class DummyApp:
+ def __init__(self):
+ self.registry = dummy_registry
+
+class DummyMapper(object):
+ def __init__(self, *routes):
+ self.routes = routes
+
+ def get_routes(self):
+ return self.routes
+
+class DummyRoute(object):
+ def __init__(self, name, pattern, factory=None,
+ matchdict=None, predicate=None):
+ self.name = name
+ self.path = pattern
+ self.pattern = pattern
+ self.factory = factory
+ self.matchdict = matchdict
+ self.predicates = []
+ if predicate is not None:
+ self.predicates = [predicate]
+
+ def match(self, route):
+ return self.matchdict
+
+class DummyRequest:
+ application_url = 'http://example.com:5432'
+ script_name = ''
+ def __init__(self, environ):
+ self.environ = environ
+ self.matchdict = {}
+
+class DummyView(object):
+ def __init__(self, **attrs):
+ self.__request_attrs__ = attrs
+
+from zope.interface import implementer
+from pyramid.interfaces import IMultiView
+@implementer(IMultiView)
+class DummyMultiView(object):
+
+ def __init__(self, *views, **attrs):
+ self.views = [(None, view, None) for view in views]
+ self.__request_attrs__ = attrs
+
+class DummyConfigParser(object):
+ def __init__(self, result):
+ self.result = result
+
+ def read(self, filename):
+ self.filename = filename
+
+ def items(self, section):
+ self.section = section
+ if self.result is None:
+ from pyramid.compat import configparser
+ raise configparser.NoSectionError(section)
+ return self.result
+
+class DummyConfigParserFactory(object):
+ items = None
+
+ def __call__(self):
+ self.parser = DummyConfigParser(self.items)
+ return self.parser
+
+class DummyCloser(object):
+ def __call__(self):
+ self.called = True
+
+class DummyBootstrap(object):
+ def __init__(self, app=None, registry=None, request=None, root=None,
+ root_factory=None, closer=None):
+ self.app = app or DummyApp()
+ if registry is None:
+ registry = DummyRegistry()
+ self.registry = registry
+ if request is None:
+ request = DummyRequest({})
+ self.request = request
+ if root is None:
+ root = Dummy()
+ self.root = root
+ if root_factory is None:
+ root_factory = Dummy()
+ self.root_factory = root_factory
+ if closer is None:
+ closer = DummyCloser()
+ self.closer = closer
+
+ def __call__(self, *a, **kw):
+ self.a = a
+ self.kw = kw
+ return {
+ 'app': self.app,
+ 'registry': self.registry,
+ 'request': self.request,
+ 'root': self.root,
+ 'root_factory': self.root_factory,
+ 'closer': self.closer,
+ }
diff --git a/pyramid/tests/test_scripts/test_proutes.py b/pyramid/tests/test_scripts/test_proutes.py
new file mode 100644
index 000000000..a8b577316
--- /dev/null
+++ b/pyramid/tests/test_scripts/test_proutes.py
@@ -0,0 +1,129 @@
+import unittest
+from pyramid.tests.test_scripts import dummy
+
+class TestPRoutesCommand(unittest.TestCase):
+ def _getTargetClass(self):
+ from pyramid.scripts.proutes import PRoutesCommand
+ return PRoutesCommand
+
+ def _makeOne(self):
+ cmd = self._getTargetClass()([])
+ cmd.bootstrap = (dummy.DummyBootstrap(),)
+ cmd.args = ('/foo/bar/myapp.ini#myapp',)
+ return cmd
+
+ def test_no_routes(self):
+ command = self._makeOne()
+ mapper = dummy.DummyMapper()
+ command._get_mapper = lambda *arg: mapper
+ L = []
+ command.out = L.append
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L, [])
+
+ def test_no_mapper(self):
+ command = self._makeOne()
+ command._get_mapper = lambda *arg:None
+ L = []
+ command.out = L.append
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L, [])
+
+ def test_single_route_no_route_registered(self):
+ command = self._makeOne()
+ route = dummy.DummyRoute('a', '/a')
+ mapper = dummy.DummyMapper(route)
+ command._get_mapper = lambda *arg: mapper
+ L = []
+ command.out = L.append
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(len(L), 3)
+ self.assertEqual(L[-1].split(), ['a', '/a', '<unknown>'])
+
+ def test_single_route_no_views_registered(self):
+ from zope.interface import Interface
+ from pyramid.registry import Registry
+ from pyramid.interfaces import IRouteRequest
+ registry = Registry()
+ def view():pass
+ class IMyRoute(Interface):
+ pass
+ registry.registerUtility(IMyRoute, IRouteRequest, name='a')
+ command = self._makeOne()
+ route = dummy.DummyRoute('a', '/a')
+ mapper = dummy.DummyMapper(route)
+ command._get_mapper = lambda *arg: mapper
+ L = []
+ command.out = L.append
+ command.bootstrap = (dummy.DummyBootstrap(registry=registry),)
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(len(L), 3)
+ self.assertEqual(L[-1].split()[:3], ['a', '/a', 'None'])
+
+ def test_single_route_one_view_registered(self):
+ from zope.interface import Interface
+ from pyramid.registry import Registry
+ from pyramid.interfaces import IRouteRequest
+ from pyramid.interfaces import IViewClassifier
+ from pyramid.interfaces import IView
+ registry = Registry()
+ def view():pass
+ class IMyRoute(Interface):
+ pass
+ registry.registerAdapter(view,
+ (IViewClassifier, IMyRoute, Interface),
+ IView, '')
+ registry.registerUtility(IMyRoute, IRouteRequest, name='a')
+ command = self._makeOne()
+ route = dummy.DummyRoute('a', '/a')
+ mapper = dummy.DummyMapper(route)
+ command._get_mapper = lambda *arg: mapper
+ L = []
+ command.out = L.append
+ command.bootstrap = (dummy.DummyBootstrap(registry=registry),)
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(len(L), 3)
+ self.assertEqual(L[-1].split()[:4], ['a', '/a', '<function', 'view'])
+
+ def test_single_route_one_view_registered_with_factory(self):
+ from zope.interface import Interface
+ from pyramid.registry import Registry
+ from pyramid.interfaces import IRouteRequest
+ from pyramid.interfaces import IViewClassifier
+ from pyramid.interfaces import IView
+ registry = Registry()
+ def view():pass
+ class IMyRoot(Interface):
+ pass
+ class IMyRoute(Interface):
+ pass
+ registry.registerAdapter(view,
+ (IViewClassifier, IMyRoute, IMyRoot),
+ IView, '')
+ registry.registerUtility(IMyRoute, IRouteRequest, name='a')
+ command = self._makeOne()
+ def factory(request): pass
+ route = dummy.DummyRoute('a', '/a', factory=factory)
+ mapper = dummy.DummyMapper(route)
+ command._get_mapper = lambda *arg: mapper
+ L = []
+ command.out = L.append
+ command.bootstrap = (dummy.DummyBootstrap(registry=registry),)
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(len(L), 3)
+ self.assertEqual(L[-1].split()[:3], ['a', '/a', '<unknown>'])
+
+ def test__get_mapper(self):
+ from pyramid.registry import Registry
+ from pyramid.urldispatch import RoutesMapper
+ command = self._makeOne()
+ registry = Registry()
+ result = command._get_mapper(registry)
+ self.assertEqual(result.__class__, RoutesMapper)
+
diff --git a/pyramid/tests/test_scripts/test_pshell.py b/pyramid/tests/test_scripts/test_pshell.py
new file mode 100644
index 000000000..b0ea8c5ea
--- /dev/null
+++ b/pyramid/tests/test_scripts/test_pshell.py
@@ -0,0 +1,249 @@
+import unittest
+from pyramid.tests.test_scripts import dummy
+
+class TestPShellCommand(unittest.TestCase):
+ def _getTargetClass(self):
+ from pyramid.scripts.pshell import PShellCommand
+ return PShellCommand
+
+ def _makeOne(self, patch_bootstrap=True, patch_config=True,
+ patch_args=True, patch_options=True):
+ cmd = self._getTargetClass()([])
+ if patch_bootstrap:
+ self.bootstrap = dummy.DummyBootstrap()
+ cmd.bootstrap = (self.bootstrap,)
+ if patch_config:
+ self.config_factory = dummy.DummyConfigParserFactory()
+ cmd.ConfigParser = self.config_factory
+ if patch_args:
+ self.args = ('/foo/bar/myapp.ini#myapp',)
+ cmd.args = self.args
+ if patch_options:
+ class Options(object): pass
+ self.options = Options()
+ self.options.disable_ipython = True
+ self.options.setup = None
+ cmd.options = self.options
+ return cmd
+
+ def test_make_default_shell(self):
+ command = self._makeOne()
+ interact = dummy.DummyInteractor()
+ shell = command.make_default_shell(interact)
+ shell({'foo': 'bar'}, 'a help message')
+ self.assertEqual(interact.local, {'foo': 'bar'})
+ self.assertTrue('a help message' in interact.banner)
+
+ def test_make_ipython_v0_11_shell(self):
+ command = self._makeOne()
+ ipshell_factory = dummy.DummyIPShellFactory()
+ shell = command.make_ipython_v0_11_shell(ipshell_factory)
+ shell({'foo': 'bar'}, 'a help message')
+ self.assertEqual(ipshell_factory.kw['user_ns'], {'foo': 'bar'})
+ self.assertTrue('a help message' in ipshell_factory.kw['banner2'])
+ self.assertTrue(ipshell_factory.shell.called)
+
+ def test_make_ipython_v0_10_shell(self):
+ command = self._makeOne()
+ ipshell_factory = dummy.DummyIPShellFactory()
+ shell = command.make_ipython_v0_10_shell(ipshell_factory)
+ shell({'foo': 'bar'}, 'a help message')
+ self.assertEqual(ipshell_factory.kw['argv'], [])
+ self.assertEqual(ipshell_factory.kw['user_ns'], {'foo': 'bar'})
+ self.assertTrue('a help message' in ipshell_factory.shell.banner)
+ self.assertTrue(ipshell_factory.shell.called)
+
+ def test_command_loads_default_shell(self):
+ command = self._makeOne()
+ shell = dummy.DummyShell()
+ command.make_ipython_v0_11_shell = lambda: None
+ command.make_ipython_v0_10_shell = lambda: None
+ command.make_default_shell = lambda: shell
+ command.run()
+ self.assertTrue(self.config_factory.parser)
+ self.assertEqual(self.config_factory.parser.filename,
+ '/foo/bar/myapp.ini')
+ self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
+ self.assertEqual(shell.env, {
+ 'app':self.bootstrap.app, 'root':self.bootstrap.root,
+ 'registry':self.bootstrap.registry,
+ 'request':self.bootstrap.request,
+ 'root_factory':self.bootstrap.root_factory,
+ })
+ self.assertTrue(self.bootstrap.closer.called)
+ self.assertTrue(shell.help)
+
+ def test_command_loads_default_shell_with_ipython_disabled(self):
+ command = self._makeOne()
+ shell = dummy.DummyShell()
+ bad_shell = dummy.DummyShell()
+ command.make_ipython_v0_11_shell = lambda: bad_shell
+ command.make_ipython_v0_10_shell = lambda: bad_shell
+ command.make_default_shell = lambda: shell
+ command.options.disable_ipython = True
+ command.run()
+ self.assertTrue(self.config_factory.parser)
+ self.assertEqual(self.config_factory.parser.filename,
+ '/foo/bar/myapp.ini')
+ self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
+ self.assertEqual(shell.env, {
+ 'app':self.bootstrap.app, 'root':self.bootstrap.root,
+ 'registry':self.bootstrap.registry,
+ 'request':self.bootstrap.request,
+ 'root_factory':self.bootstrap.root_factory,
+ })
+ self.assertEqual(bad_shell.env, {})
+ self.assertTrue(self.bootstrap.closer.called)
+ self.assertTrue(shell.help)
+
+ def test_command_loads_ipython_v0_11(self):
+ command = self._makeOne()
+ shell = dummy.DummyShell()
+ command.make_ipython_v0_11_shell = lambda: shell
+ command.make_ipython_v0_10_shell = lambda: None
+ command.make_default_shell = lambda: None
+ command.options.disable_ipython = False
+ command.run()
+ self.assertTrue(self.config_factory.parser)
+ self.assertEqual(self.config_factory.parser.filename,
+ '/foo/bar/myapp.ini')
+ self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
+ self.assertEqual(shell.env, {
+ 'app':self.bootstrap.app, 'root':self.bootstrap.root,
+ 'registry':self.bootstrap.registry,
+ 'request':self.bootstrap.request,
+ 'root_factory':self.bootstrap.root_factory,
+ })
+ self.assertTrue(self.bootstrap.closer.called)
+ self.assertTrue(shell.help)
+
+ def test_command_loads_ipython_v0_10(self):
+ command = self._makeOne()
+ shell = dummy.DummyShell()
+ command.make_ipython_v0_11_shell = lambda: None
+ command.make_ipython_v0_10_shell = lambda: shell
+ command.make_default_shell = lambda: None
+ command.options.disable_ipython = False
+ command.run()
+ self.assertTrue(self.config_factory.parser)
+ self.assertEqual(self.config_factory.parser.filename,
+ '/foo/bar/myapp.ini')
+ self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
+ self.assertEqual(shell.env, {
+ 'app':self.bootstrap.app, 'root':self.bootstrap.root,
+ 'registry':self.bootstrap.registry,
+ 'request':self.bootstrap.request,
+ 'root_factory':self.bootstrap.root_factory,
+ })
+ self.assertTrue(self.bootstrap.closer.called)
+ self.assertTrue(shell.help)
+
+ def test_command_loads_custom_items(self):
+ command = self._makeOne()
+ model = dummy.Dummy()
+ self.config_factory.items = [('m', model)]
+ shell = dummy.DummyShell()
+ command.run(shell)
+ self.assertTrue(self.config_factory.parser)
+ self.assertEqual(self.config_factory.parser.filename,
+ '/foo/bar/myapp.ini')
+ self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
+ self.assertEqual(shell.env, {
+ 'app':self.bootstrap.app, 'root':self.bootstrap.root,
+ 'registry':self.bootstrap.registry,
+ 'request':self.bootstrap.request,
+ 'root_factory':self.bootstrap.root_factory,
+ 'm':model,
+ })
+ self.assertTrue(self.bootstrap.closer.called)
+ self.assertTrue(shell.help)
+
+ def test_command_setup(self):
+ command = self._makeOne()
+ def setup(env):
+ env['a'] = 1
+ env['root'] = 'root override'
+ self.config_factory.items = [('setup', setup)]
+ shell = dummy.DummyShell()
+ command.run(shell)
+ self.assertTrue(self.config_factory.parser)
+ self.assertEqual(self.config_factory.parser.filename,
+ '/foo/bar/myapp.ini')
+ self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
+ self.assertEqual(shell.env, {
+ 'app':self.bootstrap.app, 'root':'root override',
+ 'registry':self.bootstrap.registry,
+ 'request':self.bootstrap.request,
+ 'root_factory':self.bootstrap.root_factory,
+ 'a':1,
+ })
+ self.assertTrue(self.bootstrap.closer.called)
+ self.assertTrue(shell.help)
+
+ def test_command_loads_check_variable_override_order(self):
+ command = self._makeOne()
+ model = dummy.Dummy()
+ def setup(env):
+ env['a'] = 1
+ env['m'] = 'model override'
+ env['root'] = 'root override'
+ self.config_factory.items = [('setup', setup), ('m', model)]
+ shell = dummy.DummyShell()
+ command.run(shell)
+ self.assertTrue(self.config_factory.parser)
+ self.assertEqual(self.config_factory.parser.filename,
+ '/foo/bar/myapp.ini')
+ self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
+ self.assertEqual(shell.env, {
+ 'app':self.bootstrap.app, 'root':'root override',
+ 'registry':self.bootstrap.registry,
+ 'request':self.bootstrap.request,
+ 'root_factory':self.bootstrap.root_factory,
+ 'a':1, 'm':model,
+ })
+ self.assertTrue(self.bootstrap.closer.called)
+ self.assertTrue(shell.help)
+
+ def test_command_loads_setup_from_options(self):
+ command = self._makeOne()
+ def setup(env):
+ env['a'] = 1
+ env['root'] = 'root override'
+ model = dummy.Dummy()
+ self.config_factory.items = [('setup', 'abc'),
+ ('m', model)]
+ command.options.setup = setup
+ shell = dummy.DummyShell()
+ command.run(shell)
+ self.assertTrue(self.config_factory.parser)
+ self.assertEqual(self.config_factory.parser.filename,
+ '/foo/bar/myapp.ini')
+ self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
+ self.assertEqual(shell.env, {
+ 'app':self.bootstrap.app, 'root':'root override',
+ 'registry':self.bootstrap.registry,
+ 'request':self.bootstrap.request,
+ 'root_factory':self.bootstrap.root_factory,
+ 'a':1, 'm':model,
+ })
+ self.assertTrue(self.bootstrap.closer.called)
+ self.assertTrue(shell.help)
+
+ def test_command_custom_section_override(self):
+ command = self._makeOne()
+ dummy_ = dummy.Dummy()
+ self.config_factory.items = [('app', dummy_), ('root', dummy_),
+ ('registry', dummy_), ('request', dummy_)]
+ shell = dummy.DummyShell()
+ command.run(shell)
+ self.assertTrue(self.config_factory.parser)
+ self.assertEqual(self.config_factory.parser.filename,
+ '/foo/bar/myapp.ini')
+ self.assertEqual(self.bootstrap.a[0], '/foo/bar/myapp.ini#myapp')
+ self.assertEqual(shell.env, {
+ 'app':dummy_, 'root':dummy_, 'registry':dummy_, 'request':dummy_,
+ 'root_factory':self.bootstrap.root_factory,
+ })
+ self.assertTrue(self.bootstrap.closer.called)
+ self.assertTrue(shell.help)
+
diff --git a/pyramid/tests/test_scripts/test_ptweens.py b/pyramid/tests/test_scripts/test_ptweens.py
new file mode 100644
index 000000000..4ee38dd85
--- /dev/null
+++ b/pyramid/tests/test_scripts/test_ptweens.py
@@ -0,0 +1,53 @@
+import unittest
+from pyramid.tests.test_scripts import dummy
+
+class TestPTweensCommand(unittest.TestCase):
+ def _getTargetClass(self):
+ from pyramid.scripts.ptweens import PTweensCommand
+ return PTweensCommand
+
+ def _makeOne(self):
+ cmd = self._getTargetClass()([])
+ cmd.bootstrap = (dummy.DummyBootstrap(),)
+ cmd.args = ('/foo/bar/myapp.ini#myapp',)
+ return cmd
+
+ def test_command_no_tweens(self):
+ command = self._makeOne()
+ command._get_tweens = lambda *arg: None
+ L = []
+ command.out = L.append
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L, [])
+
+ def test_command_implicit_tweens_only(self):
+ command = self._makeOne()
+ tweens = dummy.DummyTweens([('name', 'item')], None)
+ command._get_tweens = lambda *arg: tweens
+ L = []
+ command.out = L.append
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(
+ L[0],
+ '"pyramid.tweens" config value NOT set (implicitly ordered tweens '
+ 'used)')
+
+ def test_command_implicit_and_explicit_tweens(self):
+ command = self._makeOne()
+ tweens = dummy.DummyTweens([('name', 'item')], [('name2', 'item2')])
+ command._get_tweens = lambda *arg: tweens
+ L = []
+ command.out = L.append
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(
+ L[0],
+ '"pyramid.tweens" config value set (explicitly ordered tweens used)')
+
+ def test__get_tweens(self):
+ command = self._makeOne()
+ registry = dummy.DummyRegistry()
+ self.assertEqual(command._get_tweens(registry), None)
+
diff --git a/pyramid/tests/test_scripts/test_pviews.py b/pyramid/tests/test_scripts/test_pviews.py
new file mode 100644
index 000000000..473ba5598
--- /dev/null
+++ b/pyramid/tests/test_scripts/test_pviews.py
@@ -0,0 +1,467 @@
+import unittest
+from pyramid.tests.test_scripts import dummy
+
+class TestPViewsCommand(unittest.TestCase):
+ def _getTargetClass(self):
+ from pyramid.scripts.pviews import PViewsCommand
+ return PViewsCommand
+
+ def _makeOne(self, registry=None):
+ cmd = self._getTargetClass()([])
+ cmd.bootstrap = (dummy.DummyBootstrap(registry=registry),)
+ cmd.args = ('/foo/bar/myapp.ini#myapp',)
+ return cmd
+
+ def _register_mapper(self, registry, routes):
+ from pyramid.interfaces import IRoutesMapper
+ mapper = dummy.DummyMapper(*routes)
+ registry.registerUtility(mapper, IRoutesMapper)
+
+ def test__find_view_no_match(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ self._register_mapper(registry, [])
+ command = self._makeOne(registry)
+ result = command._find_view('/a', registry)
+ self.assertEqual(result, None)
+
+ def test__find_view_no_match_multiview_registered(self):
+ from zope.interface import implementer
+ from zope.interface import providedBy
+ from pyramid.interfaces import IRequest
+ from pyramid.interfaces import IViewClassifier
+ from pyramid.interfaces import IMultiView
+ from pyramid.traversal import DefaultRootFactory
+ from pyramid.registry import Registry
+ registry = Registry()
+ @implementer(IMultiView)
+ class View1(object):
+ pass
+ request = dummy.DummyRequest({'PATH_INFO':'/a'})
+ root = DefaultRootFactory(request)
+ root_iface = providedBy(root)
+ registry.registerAdapter(View1(),
+ (IViewClassifier, IRequest, root_iface),
+ IMultiView)
+ self._register_mapper(registry, [])
+ command = self._makeOne(registry=registry)
+ result = command._find_view('/x', registry)
+ self.assertEqual(result, None)
+
+ def test__find_view_traversal(self):
+ from zope.interface import providedBy
+ from pyramid.interfaces import IRequest
+ from pyramid.interfaces import IViewClassifier
+ from pyramid.interfaces import IView
+ from pyramid.traversal import DefaultRootFactory
+ from pyramid.registry import Registry
+ registry = Registry()
+ def view1(): pass
+ request = dummy.DummyRequest({'PATH_INFO':'/a'})
+ root = DefaultRootFactory(request)
+ root_iface = providedBy(root)
+ registry.registerAdapter(view1,
+ (IViewClassifier, IRequest, root_iface),
+ IView, name='a')
+ self._register_mapper(registry, [])
+ command = self._makeOne(registry=registry)
+ result = command._find_view('/a', registry)
+ self.assertEqual(result, view1)
+
+ def test__find_view_traversal_multiview(self):
+ from zope.interface import implementer
+ from zope.interface import providedBy
+ from pyramid.interfaces import IRequest
+ from pyramid.interfaces import IViewClassifier
+ from pyramid.interfaces import IMultiView
+ from pyramid.traversal import DefaultRootFactory
+ from pyramid.registry import Registry
+ registry = Registry()
+ @implementer(IMultiView)
+ class View1(object):
+ pass
+ request = dummy.DummyRequest({'PATH_INFO':'/a'})
+ root = DefaultRootFactory(request)
+ root_iface = providedBy(root)
+ view = View1()
+ registry.registerAdapter(view,
+ (IViewClassifier, IRequest, root_iface),
+ IMultiView, name='a')
+ self._register_mapper(registry, [])
+ command = self._makeOne(registry=registry)
+ result = command._find_view('/a', registry)
+ self.assertEqual(result, view)
+
+ def test__find_view_route_no_multiview(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from pyramid.interfaces import IRouteRequest
+ from pyramid.interfaces import IViewClassifier
+ from pyramid.interfaces import IView
+ from pyramid.registry import Registry
+ registry = Registry()
+ def view():pass
+ class IMyRoot(Interface):
+ pass
+ class IMyRoute(Interface):
+ pass
+ registry.registerAdapter(view,
+ (IViewClassifier, IMyRoute, IMyRoot),
+ IView, '')
+ registry.registerUtility(IMyRoute, IRouteRequest, name='a')
+ @implementer(IMyRoot)
+ class Factory(object):
+ def __init__(self, request):
+ pass
+ routes = [dummy.DummyRoute('a', '/a', factory=Factory, matchdict={}),
+ dummy.DummyRoute('b', '/b', factory=Factory)]
+ self._register_mapper(registry, routes)
+ command = self._makeOne(registry=registry)
+ result = command._find_view('/a', registry)
+ self.assertEqual(result, view)
+
+ def test__find_view_route_multiview_no_view_registered(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from pyramid.interfaces import IRouteRequest
+ from pyramid.interfaces import IMultiView
+ from pyramid.interfaces import IRootFactory
+ from pyramid.registry import Registry
+ registry = Registry()
+ def view1():pass
+ def view2():pass
+ class IMyRoot(Interface):
+ pass
+ class IMyRoute1(Interface):
+ pass
+ class IMyRoute2(Interface):
+ pass
+ registry.registerUtility(IMyRoute1, IRouteRequest, name='a')
+ registry.registerUtility(IMyRoute2, IRouteRequest, name='b')
+ @implementer(IMyRoot)
+ class Factory(object):
+ def __init__(self, request):
+ pass
+ registry.registerUtility(Factory, IRootFactory)
+ routes = [dummy.DummyRoute('a', '/a', matchdict={}),
+ dummy.DummyRoute('b', '/a', matchdict={})]
+ self._register_mapper(registry, routes)
+ command = self._makeOne(registry=registry)
+ result = command._find_view('/a', registry)
+ self.assertTrue(IMultiView.providedBy(result))
+
+ def test__find_view_route_multiview(self):
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from pyramid.interfaces import IRouteRequest
+ from pyramid.interfaces import IViewClassifier
+ from pyramid.interfaces import IView
+ from pyramid.interfaces import IMultiView
+ from pyramid.interfaces import IRootFactory
+ from pyramid.registry import Registry
+ registry = Registry()
+ def view1():pass
+ def view2():pass
+ class IMyRoot(Interface):
+ pass
+ class IMyRoute1(Interface):
+ pass
+ class IMyRoute2(Interface):
+ pass
+ registry.registerAdapter(view1,
+ (IViewClassifier, IMyRoute1, IMyRoot),
+ IView, '')
+ registry.registerAdapter(view2,
+ (IViewClassifier, IMyRoute2, IMyRoot),
+ IView, '')
+ registry.registerUtility(IMyRoute1, IRouteRequest, name='a')
+ registry.registerUtility(IMyRoute2, IRouteRequest, name='b')
+ @implementer(IMyRoot)
+ class Factory(object):
+ def __init__(self, request):
+ pass
+ registry.registerUtility(Factory, IRootFactory)
+ routes = [dummy.DummyRoute('a', '/a', matchdict={}),
+ dummy.DummyRoute('b', '/a', matchdict={})]
+ self._register_mapper(registry, routes)
+ command = self._makeOne(registry=registry)
+ result = command._find_view('/a', registry)
+ self.assertTrue(IMultiView.providedBy(result))
+ self.assertEqual(len(result.views), 2)
+ self.assertTrue((None, view1, None) in result.views)
+ self.assertTrue((None, view2, None) in result.views)
+
+ def test__find_multi_routes_all_match(self):
+ command = self._makeOne()
+ def factory(request): pass
+ routes = [dummy.DummyRoute('a', '/a', factory=factory, matchdict={}),
+ dummy.DummyRoute('b', '/a', factory=factory, matchdict={})]
+ mapper = dummy.DummyMapper(*routes)
+ request = dummy.DummyRequest({'PATH_INFO':'/a'})
+ result = command._find_multi_routes(mapper, request)
+ self.assertEqual(result, [{'match':{}, 'route':routes[0]},
+ {'match':{}, 'route':routes[1]}])
+
+ def test__find_multi_routes_some_match(self):
+ command = self._makeOne()
+ def factory(request): pass
+ routes = [dummy.DummyRoute('a', '/a', factory=factory),
+ dummy.DummyRoute('b', '/a', factory=factory, matchdict={})]
+ mapper = dummy.DummyMapper(*routes)
+ request = dummy.DummyRequest({'PATH_INFO':'/a'})
+ result = command._find_multi_routes(mapper, request)
+ self.assertEqual(result, [{'match':{}, 'route':routes[1]}])
+
+ def test__find_multi_routes_none_match(self):
+ command = self._makeOne()
+ def factory(request): pass
+ routes = [dummy.DummyRoute('a', '/a', factory=factory),
+ dummy.DummyRoute('b', '/a', factory=factory)]
+ mapper = dummy.DummyMapper(*routes)
+ request = dummy.DummyRequest({'PATH_INFO':'/a'})
+ result = command._find_multi_routes(mapper, request)
+ self.assertEqual(result, [])
+
+ def test_views_command_not_found(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ command._find_view = lambda arg1, arg2: None
+ command.args = ('/foo/bar/myapp.ini#myapp', '/a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' Not found.')
+
+ def test_views_command_not_found_url_starts_without_slash(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ command._find_view = lambda arg1, arg2: None
+ command.args = ('/foo/bar/myapp.ini#myapp', 'a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' Not found.')
+
+ def test_views_command_single_view_traversal(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ view = dummy.DummyView(context='context', view_name='a')
+ command._find_view = lambda arg1, arg2: view
+ command.args = ('/foo/bar/myapp.ini#myapp', '/a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' context: context')
+ self.assertEqual(L[4], ' view name: a')
+ self.assertEqual(L[8],
+ ' pyramid.tests.test_scripts.dummy.DummyView')
+
+ def test_views_command_single_view_function_traversal(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ def view(): pass
+ view.__request_attrs__ = {'context': 'context', 'view_name': 'a'}
+ command._find_view = lambda arg1, arg2: view
+ command.args = ('/foo/bar/myapp.ini#myapp', '/a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' context: context')
+ self.assertEqual(L[4], ' view name: a')
+ self.assertEqual(L[8],
+ ' pyramid.tests.test_scripts.test_pviews.view')
+
+ def test_views_command_single_view_traversal_with_permission(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ view = dummy.DummyView(context='context', view_name='a')
+ view.__permission__ = 'test'
+ command._find_view = lambda arg1, arg2: view
+ command.args = ('/foo/bar/myapp.ini#myapp', '/a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' context: context')
+ self.assertEqual(L[4], ' view name: a')
+ self.assertEqual(L[8],
+ ' pyramid.tests.test_scripts.dummy.DummyView')
+ self.assertEqual(L[9], ' required permission = test')
+
+ def test_views_command_single_view_traversal_with_predicates(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ def predicate(): pass
+ predicate.__text__ = "predicate = x"
+ view = dummy.DummyView(context='context', view_name='a')
+ view.__predicates__ = [predicate]
+ command._find_view = lambda arg1, arg2: view
+ command.args = ('/foo/bar/myapp.ini#myapp', '/a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' context: context')
+ self.assertEqual(L[4], ' view name: a')
+ self.assertEqual(L[8],
+ ' pyramid.tests.test_scripts.dummy.DummyView')
+ self.assertEqual(L[9], ' view predicates (predicate = x)')
+
+ def test_views_command_single_view_route(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ route = dummy.DummyRoute('a', '/a', matchdict={})
+ view = dummy.DummyView(context='context', view_name='a',
+ matched_route=route, subpath='')
+ command._find_view = lambda arg1, arg2: view
+ command.args = ('/foo/bar/myapp.ini#myapp', '/a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' context: context')
+ self.assertEqual(L[4], ' view name: a')
+ self.assertEqual(L[6], ' Route:')
+ self.assertEqual(L[8], ' route name: a')
+ self.assertEqual(L[9], ' route pattern: /a')
+ self.assertEqual(L[10], ' route path: /a')
+ self.assertEqual(L[11], ' subpath: ')
+ self.assertEqual(L[15],
+ ' pyramid.tests.test_scripts.dummy.DummyView')
+
+ def test_views_command_multi_view_nested(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ view1 = dummy.DummyView(context='context', view_name='a1')
+ view1.__name__ = 'view1'
+ view1.__view_attr__ = 'call'
+ multiview1 = dummy.DummyMultiView(view1, context='context',
+ view_name='a1')
+ multiview2 = dummy.DummyMultiView(multiview1, context='context',
+ view_name='a')
+ command._find_view = lambda arg1, arg2: multiview2
+ command.args = ('/foo/bar/myapp.ini#myapp', '/a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' context: context')
+ self.assertEqual(L[4], ' view name: a')
+ self.assertEqual(L[8],
+ ' pyramid.tests.test_scripts.dummy.DummyMultiView')
+ self.assertEqual(L[12],
+ ' pyramid.tests.test_scripts.dummy.view1.call')
+
+ def test_views_command_single_view_route_with_route_predicates(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ def predicate(): pass
+ predicate.__text__ = "predicate = x"
+ route = dummy.DummyRoute('a', '/a', matchdict={}, predicate=predicate)
+ view = dummy.DummyView(context='context', view_name='a',
+ matched_route=route, subpath='')
+ command._find_view = lambda arg1, arg2: view
+ command.args = ('/foo/bar/myapp.ini#myapp', '/a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' context: context')
+ self.assertEqual(L[4], ' view name: a')
+ self.assertEqual(L[6], ' Route:')
+ self.assertEqual(L[8], ' route name: a')
+ self.assertEqual(L[9], ' route pattern: /a')
+ self.assertEqual(L[10], ' route path: /a')
+ self.assertEqual(L[11], ' subpath: ')
+ self.assertEqual(L[12], ' route predicates (predicate = x)')
+ self.assertEqual(L[16],
+ ' pyramid.tests.test_scripts.dummy.DummyView')
+
+ def test_views_command_multiview(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ view = dummy.DummyView(context='context')
+ view.__name__ = 'view'
+ view.__view_attr__ = 'call'
+ multiview = dummy.DummyMultiView(view, context='context', view_name='a')
+ command._find_view = lambda arg1, arg2: multiview
+ command.args = ('/foo/bar/myapp.ini#myapp', '/a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' context: context')
+ self.assertEqual(L[4], ' view name: a')
+ self.assertEqual(L[8],
+ ' pyramid.tests.test_scripts.dummy.view.call')
+
+ def test_views_command_multiview_with_permission(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ view = dummy.DummyView(context='context')
+ view.__name__ = 'view'
+ view.__view_attr__ = 'call'
+ view.__permission__ = 'test'
+ multiview = dummy.DummyMultiView(view, context='context', view_name='a')
+ command._find_view = lambda arg1, arg2: multiview
+ command.args = ('/foo/bar/myapp.ini#myapp', '/a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' context: context')
+ self.assertEqual(L[4], ' view name: a')
+ self.assertEqual(L[8],
+ ' pyramid.tests.test_scripts.dummy.view.call')
+ self.assertEqual(L[9], ' required permission = test')
+
+ def test_views_command_multiview_with_predicates(self):
+ from pyramid.registry import Registry
+ registry = Registry()
+ command = self._makeOne(registry=registry)
+ L = []
+ command.out = L.append
+ def predicate(): pass
+ predicate.__text__ = "predicate = x"
+ view = dummy.DummyView(context='context')
+ view.__name__ = 'view'
+ view.__view_attr__ = 'call'
+ view.__predicates__ = [predicate]
+ multiview = dummy.DummyMultiView(view, context='context', view_name='a')
+ command._find_view = lambda arg1, arg2: multiview
+ command.args = ('/foo/bar/myapp.ini#myapp', '/a')
+ result = command.run()
+ self.assertEqual(result, None)
+ self.assertEqual(L[1], 'URL = /a')
+ self.assertEqual(L[3], ' context: context')
+ self.assertEqual(L[4], ' view name: a')
+ self.assertEqual(L[8],
+ ' pyramid.tests.test_scripts.dummy.view.call')
+ self.assertEqual(L[9], ' view predicates (predicate = x)')
+