diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-06-30 13:10:44 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-06-30 13:10:44 +0000 |
| commit | 9d6fcd1eeb030be9e0a24399493924cf5d963b28 (patch) | |
| tree | 29ea582d3d32d2d67c7ea96cfdb4d734c163556a /repoze/bfg/tests | |
| parent | af17cce0c37c29981b7f8893433e668ae0197a69 (diff) | |
| download | pyramid-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.py | 62 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_zcml.py | 39 |
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 |
