summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-06-30 13:10:44 +0000
committerChris McDonough <chrism@agendaless.com>2009-06-30 13:10:44 +0000
commit9d6fcd1eeb030be9e0a24399493924cf5d963b28 (patch)
tree29ea582d3d32d2d67c7ea96cfdb4d734c163556a /repoze/bfg/tests
parentaf17cce0c37c29981b7f8893433e668ae0197a69 (diff)
downloadpyramid-9d6fcd1eeb030be9e0a24399493924cf5d963b28.tar.gz
pyramid-9d6fcd1eeb030be9e0a24399493924cf5d963b28.tar.bz2
pyramid-9d6fcd1eeb030be9e0a24399493924cf5d963b28.zip
- Register a ``repoze.bfg.resource.OverrideProvider`` as a
pkg_resources provider only for modules which are known to have overrides, instead of globally, when a <resource> directive is used (performance).
Diffstat (limited to 'repoze/bfg/tests')
-rw-r--r--repoze/bfg/tests/test_resource.py62
-rw-r--r--repoze/bfg/tests/test_zcml.py39
2 files changed, 68 insertions, 33 deletions
diff --git a/repoze/bfg/tests/test_resource.py b/repoze/bfg/tests/test_resource.py
index 176a07049..9f466b002 100644
--- a/repoze/bfg/tests/test_resource.py
+++ b/repoze/bfg/tests/test_resource.py
@@ -117,13 +117,40 @@ class TestPackageOverrides(unittest.TestCase):
from repoze.bfg.resource import PackageOverrides
return PackageOverrides
- def _makeOne(self, package):
+ def _makeOne(self, package, pkg_resources=None):
klass = self._getTargetClass()
- return klass(package)
+ if pkg_resources is None:
+ pkg_resources = DummyPkgResources()
+ return klass(package, pkg_resources=pkg_resources)
+
+ def test_ctor_package_already_has_loader(self):
+ package = DummyPackage('package')
+ package.__loader__ = True
+ self.assertRaises(TypeError, self._makeOne, package)
+
+ def test_ctor_sets_loader(self):
+ package = DummyPackage('package')
+ po = self._makeOne(package)
+ self.assertEqual(package.__loader__, po)
+
+ def test_ctor_registers_loader_type(self):
+ from repoze.bfg.resource import OverrideProvider
+ dummy_pkg_resources = DummyPkgResources()
+ package = DummyPackage('package')
+ po = self._makeOne(package, dummy_pkg_resources)
+ self.assertEqual(dummy_pkg_resources.registered, [(po.__class__,
+ OverrideProvider)])
+
+ def test_ctor_sets_local_state(self):
+ package = DummyPackage('package')
+ po = self._makeOne(package)
+ self.assertEqual(po.overrides, [])
+ self.assertEqual(po.overridden_package_name, 'package')
def test_insert_directory(self):
from repoze.bfg.resource import DirectoryOverride
- po = self._makeOne('package')
+ package = DummyPackage('package')
+ po = self._makeOne(package)
po.overrides= [None]
po.insert('foo/', 'package', 'bar/')
self.assertEqual(len(po.overrides), 2)
@@ -132,7 +159,8 @@ class TestPackageOverrides(unittest.TestCase):
def test_insert_file(self):
from repoze.bfg.resource import FileOverride
- po = self._makeOne('package')
+ package = DummyPackage('package')
+ po = self._makeOne(package)
po.overrides= [None]
po.insert('foo.pt', 'package', 'bar.pt')
self.assertEqual(len(po.overrides), 2)
@@ -141,7 +169,8 @@ class TestPackageOverrides(unittest.TestCase):
def test_search_path(self):
overrides = [ DummyOverride(None), DummyOverride(('package', 'name'))]
- po = self._makeOne('package')
+ package = DummyPackage('package')
+ po = self._makeOne(package)
po.overrides= overrides
self.assertEqual(list(po.search_path('whatever')),
[('package', 'name')])
@@ -150,7 +179,8 @@ class TestPackageOverrides(unittest.TestCase):
import os
overrides = [ DummyOverride(None), DummyOverride(
('repoze.bfg.tests', 'test_resource.py'))]
- po = self._makeOne('package')
+ package = DummyPackage('package')
+ po = self._makeOne(package)
po.overrides= overrides
here = os.path.dirname(os.path.abspath(__file__))
expected = os.path.join(here, 'test_resource.py')
@@ -160,7 +190,8 @@ class TestPackageOverrides(unittest.TestCase):
import os
overrides = [ DummyOverride(None), DummyOverride(
('repoze.bfg.tests', 'test_resource.py'))]
- po = self._makeOne('package')
+ package = DummyPackage('package')
+ po = self._makeOne(package)
po.overrides= overrides
here = os.path.dirname(os.path.abspath(__file__))
expected = open(os.path.join(here, 'test_resource.py')).read()
@@ -170,7 +201,8 @@ class TestPackageOverrides(unittest.TestCase):
import os
overrides = [ DummyOverride(None), DummyOverride(
('repoze.bfg.tests', 'test_resource.py'))]
- po = self._makeOne('package')
+ package = DummyPackage('package')
+ po = self._makeOne(package)
po.overrides= overrides
here = os.path.dirname(os.path.abspath(__file__))
expected = open(os.path.join(here, 'test_resource.py')).read()
@@ -216,15 +248,12 @@ class TestFileOverride(unittest.TestCase):
result = o('notfound.pt')
self.assertEqual(result, None)
-
-
class DummyOverride:
def __init__(self, result):
self.result = result
def __call__(self, resource_name):
return self.result
-
class DummyOverrides:
def __init__(self, result):
@@ -235,3 +264,14 @@ class DummyOverrides:
get_stream = get_string = get_filename
+class DummyPkgResources:
+ def __init__(self):
+ self.registered = []
+
+ def register_loader_type(self, typ, inst):
+ self.registered.append((typ, inst))
+
+class DummyPackage:
+ def __init__(self, name):
+ self.__name__ = name
+
diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py
index cba460a0a..cb841013d 100644
--- a/repoze/bfg/tests/test_zcml.py
+++ b/repoze/bfg/tests/test_zcml.py
@@ -883,7 +883,7 @@ class TestResourceDirective(unittest.TestCase):
self.assertEqual(action['callable'], _override)
self.assertEqual(action['discriminator'], None)
self.assertEqual(action['args'],
- ('IDummy', '', 'IDummy', ''))
+ (IDummy, '', IDummy, ''))
def test_with_colons(self):
from repoze.bfg.zcml import _override
@@ -895,7 +895,7 @@ class TestResourceDirective(unittest.TestCase):
self.assertEqual(action['callable'], _override)
self.assertEqual(action['discriminator'], None)
self.assertEqual(action['args'],
- ('IDummy', 'foo.pt', 'IDummy', 'foo.pt'))
+ (IDummy, 'foo.pt', IDummy, 'foo.pt'))
def test_override_module_with_directory(self):
from repoze.bfg.zcml import _override
@@ -907,7 +907,7 @@ class TestResourceDirective(unittest.TestCase):
self.assertEqual(action['callable'], _override)
self.assertEqual(action['discriminator'], None)
self.assertEqual(action['args'],
- ('IDummy', '', 'IDummy', 'foo/'))
+ (IDummy, '', IDummy, 'foo/'))
def test_override_directory_with_module(self):
from repoze.bfg.zcml import _override
@@ -919,7 +919,7 @@ class TestResourceDirective(unittest.TestCase):
self.assertEqual(action['callable'], _override)
self.assertEqual(action['discriminator'], None)
self.assertEqual(action['args'],
- ('IDummy', 'foo/', 'IDummy', ''))
+ (IDummy, 'foo/', IDummy, ''))
def test_override_module_with_module(self):
from repoze.bfg.zcml import _override
@@ -931,7 +931,7 @@ class TestResourceDirective(unittest.TestCase):
self.assertEqual(action['callable'], _override)
self.assertEqual(action['discriminator'], None)
self.assertEqual(action['args'],
- ('IDummy', '', 'IDummy', ''))
+ (IDummy, '', IDummy, ''))
class Test_OverrideFunction(unittest.TestCase):
def setUp(self):
@@ -951,24 +951,22 @@ class Test_OverrideFunction(unittest.TestCase):
sm.registerUtility(overrides, IPackageOverrides, name=package_name)
def test_overrides_not_yet_registered(self):
- from repoze.bfg.resource import OverrideProvider
from zope.component import queryUtility
from repoze.bfg.interfaces import IPackageOverrides
- resources = DummyPackageResources()
- self._callFUT('package', 'path', 'opackage', 'oprefix',
- PackageOverrides=DummyOverrides, pkg_resources=resources)
+ package = DummyPackage('package')
+ opackage = DummyPackage('opackage')
+ self._callFUT(package, 'path', opackage, 'oprefix',
+ PackageOverrides=DummyOverrides)
overrides = queryUtility(IPackageOverrides, name='package')
- self.assertEqual(overrides.package, 'package')
+ self.assertEqual(overrides.package, package)
self.assertEqual(overrides.inserted, [('path', 'opackage', 'oprefix')])
- self.assertEqual(len(resources.registered), 1)
- resource = resources.registered[0]
- self.assertEqual(resource[0], type(None))
- self.assertEqual(resource[1], OverrideProvider)
def test_overrides_already_registered(self):
- overrides = DummyOverrides('package')
+ package = DummyPackage('package')
+ opackage = DummyPackage('opackage')
+ overrides = DummyOverrides(package)
self._registerOverrides(overrides, 'package')
- self._callFUT('package', 'path', 'opackage', 'oprefix')
+ self._callFUT(package, 'path', opackage, 'oprefix')
self.assertEqual(overrides.inserted, [('path', 'opackage', 'oprefix')])
class TestZCMLConfigure(unittest.TestCase):
@@ -1374,10 +1372,7 @@ class DummyOverrides:
def insert(self, path, package, prefix):
self.inserted.append((path, package, prefix))
-class DummyPackageResources:
- def __init__(self):
- self.registered = []
-
- def register_loader_type(self, typ, provider):
- self.registered.append((typ, provider))
+class DummyPackage:
+ def __init__(self, name):
+ self.__name__ = name