summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2008-09-04 05:58:05 +0000
committerChris McDonough <chrism@agendaless.com>2008-09-04 05:58:05 +0000
commit23756f9943958e957270ad84912dc074ddc3b026 (patch)
tree936a47d40f5f5df1c1b9d89bc2c627e27148ccda /repoze/bfg/tests
parent6f97fecf3b0a4fa9f3cb193b6efad3fc6fd67d44 (diff)
downloadpyramid-23756f9943958e957270ad84912dc074ddc3b026.tar.gz
pyramid-23756f9943958e957270ad84912dc074ddc3b026.tar.bz2
pyramid-23756f9943958e957270ad84912dc074ddc3b026.zip
- Allow configuration cache to be bypassed by actions which include
special "uncacheable" discriminators (for actions that have variable results).
Diffstat (limited to 'repoze/bfg/tests')
-rw-r--r--repoze/bfg/tests/test_registry.py19
-rw-r--r--repoze/bfg/tests/test_zcml.py53
2 files changed, 60 insertions, 12 deletions
diff --git a/repoze/bfg/tests/test_registry.py b/repoze/bfg/tests/test_registry.py
index de8481fd8..efc99b41a 100644
--- a/repoze/bfg/tests/test_registry.py
+++ b/repoze/bfg/tests/test_registry.py
@@ -42,17 +42,16 @@ class TestGetOptions(unittest.TestCase):
from repoze.bfg.registry import get_options
return get_options
- def test_it(self):
+ def test_reload_templates(self):
get_options = self._getFUT()
- self.assertEqual(get_options({}),
- {'reload_templates':False})
- self.assertEqual(get_options({'reload_templates':'false'}),
- {'reload_templates':False})
- self.assertEqual(get_options({'reload_templates':'t'}),
- {'reload_templates':True})
- self.assertEqual(get_options({'reload_templates':'1'}),
- {'reload_templates':True})
-
+ result = get_options({})
+ self.assertEqual(result['reload_templates'], False)
+ result = get_options({'reload_templates':'false'})
+ self.assertEqual(result['reload_templates'], False)
+ result = get_options({'reload_templates':'t'})
+ self.assertEqual(result['reload_templates'], True)
+ result = get_options({'reload_templates':'1'})
+ self.assertEqual(result['reload_templates'], True)
class TestThreadLocalRegistryManager(unittest.TestCase, PlacelessSetup):
def setUp(self):
diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py
index 28ea04ff6..158743c64 100644
--- a/repoze/bfg/tests/test_zcml.py
+++ b/repoze/bfg/tests/test_zcml.py
@@ -57,7 +57,7 @@ class TestViewDirective(unittest.TestCase, PlacelessSetup):
self.assertEqual(permission['args'][5], None)
regadapt = actions[2]
- regadapt_discriminator = ('view', IFoo, '', IRequest, IView)
+ regadapt_discriminator = ('view', IFoo, '', IRequest, IView, True)
self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
self.assertEqual(regadapt['callable'], handler)
self.assertEqual(regadapt['args'][0], 'registerAdapter')
@@ -104,7 +104,34 @@ class TestViewDirective(unittest.TestCase, PlacelessSetup):
self.assertEqual(permission['args'][5], None)
regadapt = actions[2]
- regadapt_discriminator = ('view', IFoo, '', IDummy, IView)
+ regadapt_discriminator = ('view', IFoo, '', IDummy, IView, True)
+ self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
+ self.assertEqual(regadapt['callable'], handler)
+ self.assertEqual(regadapt['args'][0], 'registerAdapter')
+ self.assertEqual(regadapt['args'][1], view)
+ self.assertEqual(regadapt['args'][2], (IFoo, IDummy))
+ self.assertEqual(regadapt['args'][3], IView)
+ self.assertEqual(regadapt['args'][4], '')
+ self.assertEqual(regadapt['args'][5], None)
+
+ def test_uncacheable(self):
+ f = self._getFUT()
+ context = DummyContext()
+ class IFoo:
+ pass
+ def view(context, request):
+ pass
+ f(context, 'repoze.view', IFoo, view=view, request_type=IDummy,
+ cacheable=False)
+ actions = context.actions
+ from repoze.bfg.interfaces import IView
+ from zope.component.zcml import handler
+ from repoze.bfg.zcml import Uncacheable
+
+ self.assertEqual(len(actions), 3)
+
+ regadapt = actions[2]
+ regadapt_discriminator = ('view', IFoo, '', IDummy, IView, Uncacheable)
self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
self.assertEqual(regadapt['callable'], handler)
self.assertEqual(regadapt['args'][0], 'registerAdapter')
@@ -180,6 +207,28 @@ class TestZCMLPickling(unittest.TestCase, PlacelessSetup):
actions = cPickle.load(open(picklename, 'rb'))
self.failUnless(actions)
+ def test_file_configure_uncacheable_removes_cache(self):
+ import os
+ from repoze.bfg.zcml import file_configure
+ picklename = os.path.join(self.packagepath, 'configure.zcml.cache')
+ f = open(picklename, 'w')
+ f.write('imhere')
+ self.failUnless(os.path.exists(picklename))
+
+ import repoze.bfg.zcml
+ keep_view = repoze.bfg.zcml.view
+
+ def wrap_view(*arg, **kw):
+ kw['cacheable'] = False
+ return keep_view(*arg, **kw)
+
+ try:
+ repoze.bfg.zcml.view = wrap_view
+ file_configure('configure.zcml', self.module)
+ self.failIf(os.path.exists(picklename)) # should be deleted
+ finally:
+ repoze.bfg.zcml.view = keep_view
+
def test_file_configure_nonexistent_configure_dot_zcml(self):
import os
from repoze.bfg.zcml import file_configure