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/test_resource.py | |
| 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/test_resource.py')
| -rw-r--r-- | repoze/bfg/tests/test_resource.py | 62 |
1 files changed, 51 insertions, 11 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 + |
