summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests/test_resource.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-06-29 02:49:30 +0000
committerChris McDonough <chrism@agendaless.com>2009-06-29 02:49:30 +0000
commit2869fc2f7f8fa9a4230d66859f232fe2e764103f (patch)
treef947f4ac308595f115966b47eaea2594697c00c3 /repoze/bfg/tests/test_resource.py
parente1622d3f023e1fe5c6a580668ec3f5ecab9c0a37 (diff)
downloadpyramid-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.py237
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
+