From 1115939b6d4e0367386e20100a53c97c811577ad Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sat, 12 Jul 2008 22:39:52 +0000 Subject: Speculative: cause routers to accept an app_context (the zcml configuration context), so we can later enable an app-local component registry. --- repoze/bfg/configure.zcml | 8 ++++++ repoze/bfg/router.py | 16 +++++++++-- repoze/bfg/tests/fixtureapp/__init__.py | 1 + repoze/bfg/tests/fixtureapp/configure.zcml | 14 ++++++++++ repoze/bfg/tests/fixtureapp/models.py | 5 ++++ repoze/bfg/tests/fixtureapp/templates/fixture.pt | 6 ++++ repoze/bfg/tests/fixtureapp/views.py | 8 ++++++ repoze/bfg/tests/test_router.py | 35 ++++++++++++++++++++---- 8 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 repoze/bfg/tests/fixtureapp/__init__.py create mode 100644 repoze/bfg/tests/fixtureapp/configure.zcml create mode 100644 repoze/bfg/tests/fixtureapp/models.py create mode 100644 repoze/bfg/tests/fixtureapp/templates/fixture.pt create mode 100644 repoze/bfg/tests/fixtureapp/views.py diff --git a/repoze/bfg/configure.zcml b/repoze/bfg/configure.zcml index 0223e25ba..2a9eea9dc 100644 --- a/repoze/bfg/configure.zcml +++ b/repoze/bfg/configure.zcml @@ -4,6 +4,14 @@ + + + + + + + + diff --git a/repoze/bfg/tests/fixtureapp/models.py b/repoze/bfg/tests/fixtureapp/models.py new file mode 100644 index 000000000..a57b06308 --- /dev/null +++ b/repoze/bfg/tests/fixtureapp/models.py @@ -0,0 +1,5 @@ +from zope.interface import Interface + +class IFixture(Interface): + pass + diff --git a/repoze/bfg/tests/fixtureapp/templates/fixture.pt b/repoze/bfg/tests/fixtureapp/templates/fixture.pt new file mode 100644 index 000000000..06dd4e2b1 --- /dev/null +++ b/repoze/bfg/tests/fixtureapp/templates/fixture.pt @@ -0,0 +1,6 @@ + + + + + diff --git a/repoze/bfg/tests/fixtureapp/views.py b/repoze/bfg/tests/fixtureapp/views.py new file mode 100644 index 000000000..b9b9fc7d9 --- /dev/null +++ b/repoze/bfg/tests/fixtureapp/views.py @@ -0,0 +1,8 @@ +class FixtureView(object): + def __init__(self, context, request): + self.context = context + self.request = request + + def __call__(self): + pass + diff --git a/repoze/bfg/tests/test_router.py b/repoze/bfg/tests/test_router.py index ae0d1f5bf..d4fd159da 100644 --- a/repoze/bfg/tests/test_router.py +++ b/repoze/bfg/tests/test_router.py @@ -51,7 +51,8 @@ class RouterTests(unittest.TestCase, PlacelessSetup): context = DummyContext() traversalfactory = make_traversal_factory(context, '', []) self._registerTraverserFactory(traversalfactory, '', None, None) - router = self._makeOne(rootpolicy) + app_context = make_appcontext() + router = self._makeOne(rootpolicy, app_context) start_response = DummyStartResponse() result = router(environ, start_response) headers = start_response.headers @@ -71,7 +72,8 @@ class RouterTests(unittest.TestCase, PlacelessSetup): self._registerTraverserFactory(traversalfactory, '', None, None) self._registerViewFactory(viewfactory, '', None, None) self._registerWSGIFactory(wsgifactory, '', None, None, None) - router = self._makeOne(rootpolicy) + app_context = make_appcontext() + router = self._makeOne(rootpolicy, app_context) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(result, ['Hello world']) @@ -92,7 +94,8 @@ class RouterTests(unittest.TestCase, PlacelessSetup): self._registerTraverserFactory(traversalfactory, '', None, None) self._registerViewFactory(viewfactory, 'foo', None, None) self._registerWSGIFactory(wsgifactory, '', None, None, None) - router = self._makeOne(rootpolicy) + app_context = make_appcontext() + router = self._makeOne(rootpolicy, app_context) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(result, ['Hello world']) @@ -119,7 +122,8 @@ class RouterTests(unittest.TestCase, PlacelessSetup): self._registerTraverserFactory(traversalfactory, '', None, None) self._registerViewFactory(viewfactory, '', IContext, IRequest) self._registerWSGIFactory(wsgifactory, '', None, None, None) - router = self._makeOne(rootpolicy) + app_context = make_appcontext() + router = self._makeOne(rootpolicy, app_context) start_response = DummyStartResponse() result = router(environ, start_response) self.assertEqual(result, ['Hello world']) @@ -148,12 +152,26 @@ class RouterTests(unittest.TestCase, PlacelessSetup): self._registerTraverserFactory(traversalfactory, '', None, None) self._registerViewFactory(viewfactory, '', IContext, IRequest) self._registerWSGIFactory(wsgifactory, '', None, None, None) - router = self._makeOne(rootpolicy) + app_context = make_appcontext() + router = self._makeOne(rootpolicy, app_context) start_response = DummyStartResponse() result = router(environ, start_response) self.failUnless('404' in result[0]) self.assertEqual(start_response.status, '404 Not Found') +class MakeAppTests(unittest.TestCase, PlacelessSetup): + def _getFUT(self): + from repoze.bfg.router import make_app + return make_app + + def test_sampleapp(self): + from repoze.bfg.tests import fixtureapp + make_app = self._getFUT() + rootpolicy = make_rootpolicy(None) + app = make_app(rootpolicy, fixtureapp) + self.assertEqual(app.app_context.package, fixtureapp) + self.assertEqual(app.root_policy, rootpolicy) + class DummyContext: pass @@ -198,6 +216,13 @@ def make_rootpolicy(root): return root return rootpolicy +def make_appcontext(): + from zope.configuration.interfaces import IConfigurationContext + from zope.interface import directlyProvides + app_context = DummyContext() + directlyProvides(app_context, IConfigurationContext) + return app_context + class DummyStartResponse: status = () headers = () -- cgit v1.2.3