diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-06-29 02:49:30 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-06-29 02:49:30 +0000 |
| commit | 2869fc2f7f8fa9a4230d66859f232fe2e764103f (patch) | |
| tree | f947f4ac308595f115966b47eaea2594697c00c3 /repoze/bfg/tests/test_resource.py | |
| parent | e1622d3f023e1fe5c6a580668ec3f5ecab9c0a37 (diff) | |
| download | pyramid-2869fc2f7f8fa9a4230d66859f232fe2e764103f.tar.gz pyramid-2869fc2f7f8fa9a4230d66859f232fe2e764103f.tar.bz2 pyramid-2869fc2f7f8fa9a4230d66859f232fe2e764103f.zip | |
Merge pkg_resource_overrides branch.
Diffstat (limited to 'repoze/bfg/tests/test_resource.py')
| -rw-r--r-- | repoze/bfg/tests/test_resource.py | 237 |
1 files changed, 237 insertions, 0 deletions
diff --git a/repoze/bfg/tests/test_resource.py b/repoze/bfg/tests/test_resource.py new file mode 100644 index 000000000..176a07049 --- /dev/null +++ b/repoze/bfg/tests/test_resource.py @@ -0,0 +1,237 @@ +import unittest +from repoze.bfg.testing import cleanUp + +class TestOverrideProvider(unittest.TestCase): + def setUp(self): + cleanUp() + + def tearDown(self): + cleanUp() + + def _getTargetClass(self): + from repoze.bfg.resource import OverrideProvider + return OverrideProvider + + def _makeOne(self, module): + klass = self._getTargetClass() + return klass(module) + + def _registerOverrides(self, overrides, name='repoze.bfg.tests'): + from repoze.bfg.interfaces import IPackageOverrides + from zope.component import getSiteManager + sm = getSiteManager() + sm.registerUtility(overrides, IPackageOverrides, name=name) + + def test_get_resource_filename_no_overrides(self): + import os + resource_name = 'test_resource.py' + import repoze.bfg.tests + provider = self._makeOne(repoze.bfg.tests) + here = os.path.dirname(os.path.abspath(__file__)) + expected = os.path.join(here, resource_name) + result = provider.get_resource_filename(None, resource_name) + self.assertEqual(result, expected) + + def test_get_resource_stream_no_overrides(self): + import os + resource_name = 'test_resource.py' + import repoze.bfg.tests + provider = self._makeOne(repoze.bfg.tests) + here = os.path.dirname(os.path.abspath(__file__)) + expected = open(os.path.join(here, resource_name)).read() + result = provider.get_resource_stream(None, resource_name) + self.assertEqual(result.read(), expected) + + def test_get_resource_string_no_overrides(self): + import os + resource_name = 'test_resource.py' + import repoze.bfg.tests + provider = self._makeOne(repoze.bfg.tests) + here = os.path.dirname(os.path.abspath(__file__)) + expected = open(os.path.join(here, resource_name)).read() + result = provider.get_resource_string(None, resource_name) + self.assertEqual(result, expected) + + def test_get_resource_filename_override_returns_None(self): + overrides = DummyOverrides(None) + self._registerOverrides(overrides) + import os + resource_name = 'test_resource.py' + import repoze.bfg.tests + provider = self._makeOne(repoze.bfg.tests) + here = os.path.dirname(os.path.abspath(__file__)) + expected = os.path.join(here, resource_name) + result = provider.get_resource_filename(None, resource_name) + self.assertEqual(result, expected) + + def test_get_resource_stream_override_returns_None(self): + overrides = DummyOverrides(None) + self._registerOverrides(overrides) + import os + resource_name = 'test_resource.py' + import repoze.bfg.tests + provider = self._makeOne(repoze.bfg.tests) + here = os.path.dirname(os.path.abspath(__file__)) + expected = os.path.join(here, resource_name) + result = provider.get_resource_filename(None, resource_name) + self.assertEqual(result, expected) + + def test_get_resource_string_override_returns_None(self): + overrides = DummyOverrides(None) + self._registerOverrides(overrides) + import os + resource_name = 'test_resource.py' + import repoze.bfg.tests + provider = self._makeOne(repoze.bfg.tests) + here = os.path.dirname(os.path.abspath(__file__)) + expected = os.path.join(here, resource_name) + result = provider.get_resource_filename(None, resource_name) + self.assertEqual(result, expected) + + def test_get_resource_filename_override_returns_value(self): + overrides = DummyOverrides('value') + import repoze.bfg.tests + self._registerOverrides(overrides) + provider = self._makeOne(repoze.bfg.tests) + result = provider.get_resource_filename(None, 'test_resource.py') + self.assertEqual(result, 'value') + + def test_get_resource_stream_override_returns_value(self): + overrides = DummyOverrides('value') + import repoze.bfg.tests + self._registerOverrides(overrides) + provider = self._makeOne(repoze.bfg.tests) + result = provider.get_resource_stream(None, 'test_resource.py') + self.assertEqual(result, 'value') + + def test_get_resource_string_override_returns_value(self): + overrides = DummyOverrides('value') + import repoze.bfg.tests + self._registerOverrides(overrides) + provider = self._makeOne(repoze.bfg.tests) + result = provider.get_resource_string(None, 'test_resource.py') + self.assertEqual(result, 'value') + +class TestPackageOverrides(unittest.TestCase): + def _getTargetClass(self): + from repoze.bfg.resource import PackageOverrides + return PackageOverrides + + def _makeOne(self, package): + klass = self._getTargetClass() + return klass(package) + + def test_insert_directory(self): + from repoze.bfg.resource import DirectoryOverride + po = self._makeOne('package') + po.overrides= [None] + po.insert('foo/', 'package', 'bar/') + self.assertEqual(len(po.overrides), 2) + override = po.overrides[0] + self.assertEqual(override.__class__, DirectoryOverride) + + def test_insert_file(self): + from repoze.bfg.resource import FileOverride + po = self._makeOne('package') + po.overrides= [None] + po.insert('foo.pt', 'package', 'bar.pt') + self.assertEqual(len(po.overrides), 2) + override = po.overrides[0] + self.assertEqual(override.__class__, FileOverride) + + def test_search_path(self): + overrides = [ DummyOverride(None), DummyOverride(('package', 'name'))] + po = self._makeOne('package') + po.overrides= overrides + self.assertEqual(list(po.search_path('whatever')), + [('package', 'name')]) + + def test_get_filename(self): + import os + overrides = [ DummyOverride(None), DummyOverride( + ('repoze.bfg.tests', 'test_resource.py'))] + po = self._makeOne('package') + po.overrides= overrides + here = os.path.dirname(os.path.abspath(__file__)) + expected = os.path.join(here, 'test_resource.py') + self.assertEqual(po.get_filename('whatever'), expected) + + def test_get_stream(self): + import os + overrides = [ DummyOverride(None), DummyOverride( + ('repoze.bfg.tests', 'test_resource.py'))] + 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() + self.assertEqual(po.get_stream('whatever').read(), expected) + + def test_get_string(self): + import os + overrides = [ DummyOverride(None), DummyOverride( + ('repoze.bfg.tests', 'test_resource.py'))] + 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() + self.assertEqual(po.get_string('whatever'), expected) + + +class TestDirectoryOverride(unittest.TestCase): + def _getTargetClass(self): + from repoze.bfg.resource import DirectoryOverride + return DirectoryOverride + + def _makeOne(self, path, package, prefix): + klass = self._getTargetClass() + return klass(path, package, prefix) + + def test_it_match(self): + o = self._makeOne('foo/', 'package', 'bar/') + result = o('foo/something.pt') + self.assertEqual(result, ('package', 'bar/something.pt')) + + def test_it_no_match(self): + o = self._makeOne('foo/', 'package', 'bar/') + result = o('baz/notfound.pt') + self.assertEqual(result, None) + + +class TestFileOverride(unittest.TestCase): + def _getTargetClass(self): + from repoze.bfg.resource import FileOverride + return FileOverride + + def _makeOne(self, path, package, prefix): + klass = self._getTargetClass() + return klass(path, package, prefix) + + def test_it_match(self): + o = self._makeOne('foo.pt', 'package', 'bar.pt') + result = o('foo.pt') + self.assertEqual(result, ('package', 'bar.pt')) + + def test_it_no_match(self): + o = self._makeOne('foo.pt', 'package', 'bar.pt') + 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): + self.result = result + + def get_filename(self, resource_name): + return self.result + + get_stream = get_string = get_filename + |
