summaryrefslogtreecommitdiff
path: root/repoze/bfg/tests
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2010-08-02 20:12:11 +0000
committerChris McDonough <chrism@agendaless.com>2010-08-02 20:12:11 +0000
commitb05de75dd707a77c4ca3da5780de79efe4ad1092 (patch)
tree6f3209cf40fc729784fef682cffdeb55bd64a941 /repoze/bfg/tests
parent672bbe5a4c3141e2a995c4bf9998f9b73a99b752 (diff)
downloadpyramid-b05de75dd707a77c4ca3da5780de79efe4ad1092.tar.gz
pyramid-b05de75dd707a77c4ca3da5780de79efe4ad1092.tar.bz2
pyramid-b05de75dd707a77c4ca3da5780de79efe4ad1092.zip
add infrastructure for resolving dotted names
Diffstat (limited to 'repoze/bfg/tests')
-rw-r--r--repoze/bfg/tests/test_configuration.py149
1 files changed, 149 insertions, 0 deletions
diff --git a/repoze/bfg/tests/test_configuration.py b/repoze/bfg/tests/test_configuration.py
index b34f6c270..2f001ba8d 100644
--- a/repoze/bfg/tests/test_configuration.py
+++ b/repoze/bfg/tests/test_configuration.py
@@ -3553,6 +3553,155 @@ class TestMakeApp(unittest.TestCase):
Configurator=DummyConfigurator)
self.assertEqual(app.zcml_file, '2.zcml')
+class TestDottedNameResolver(unittest.TestCase):
+ def _makeOne(self, package=None):
+ from repoze.bfg.configuration import DottedNameResolver
+ return DottedNameResolver(package)
+
+ def config_exc(self, func, *arg, **kw):
+ from repoze.bfg.exceptions import ConfigurationError
+ try:
+ func(*arg, **kw)
+ except ConfigurationError, e:
+ return e
+ else:
+ raise AssertionError('Invalid not raised') # pragma: no cover
+
+ def test_zope_dottedname_style_resolve_absolute(self):
+ typ = self._makeOne()
+ result = typ._zope_dottedname_style(
+ 'repoze.bfg.tests.test_configuration.TestDottedNameResolver')
+ self.assertEqual(result, self.__class__)
+
+ def test_zope_dottedname_style_irrresolveable_absolute(self):
+ typ = self._makeOne()
+ self.assertRaises(ImportError, typ._zope_dottedname_style,
+ 'repoze.bfg.test_configuration.nonexisting_name')
+
+ def test__zope_dottedname_style_resolve_relative(self):
+ import repoze.bfg.tests
+ typ = self._makeOne(package=repoze.bfg.tests)
+ result = typ._zope_dottedname_style(
+ '.test_configuration.TestDottedNameResolver')
+ self.assertEqual(result, self.__class__)
+
+ def test__zope_dottedname_style_resolve_relative_leading_dots(self):
+ import repoze.bfg.tests.test_configuration
+ typ = self._makeOne(package=repoze.bfg.tests.test_configuration)
+ result = typ._zope_dottedname_style(
+ '..test_configuration.TestDottedNameResolver')
+ self.assertEqual(result, self.__class__)
+
+ def test__zope_dottedname_style_resolve_relative_is_dot(self):
+ import repoze.bfg.tests
+ typ = self._makeOne(package=repoze.bfg.tests)
+ result = typ._zope_dottedname_style('.')
+ self.assertEqual(result, repoze.bfg.tests)
+
+ def test__zope_dottedname_style_irresolveable_relative_is_dot(self):
+ typ = self._makeOne()
+ e = self.config_exc(typ._zope_dottedname_style, '.')
+ self.assertEqual(
+ e.args[0],
+ "relative name '.' irresolveable without package")
+
+ def test_zope_dottedname_style_resolve_relative_nocurrentpackage(self):
+ typ = self._makeOne()
+ e = self.config_exc(typ._zope_dottedname_style, '.whatever')
+ self.assertEqual(
+ e.args[0],
+ "relative name '.whatever' irresolveable without package")
+
+ def test_zope_dottedname_style_irrresolveable_relative(self):
+ import repoze.bfg.tests
+ typ = self._makeOne(package=repoze.bfg.tests)
+ self.assertRaises(ImportError, typ._zope_dottedname_style,
+ '.notexisting')
+
+ def test__zope_dottedname_style_resolveable_relative(self):
+ import repoze.bfg
+ typ = self._makeOne(package=repoze.bfg)
+ result = typ._zope_dottedname_style('.tests')
+ from repoze.bfg import tests
+ self.assertEqual(result, tests)
+
+ def test__zope_dottedname_style_irresolveable_absolute(self):
+ typ = self._makeOne()
+ self.assertRaises(
+ ImportError,
+ typ._zope_dottedname_style, 'repoze.bfg.fudge.bar')
+
+ def test__zope_dottedname_style_resolveable_absolute(self):
+ typ = self._makeOne()
+ result = typ._zope_dottedname_style(
+ 'repoze.bfg.tests.test_configuration.TestDottedNameResolver')
+ self.assertEqual(result, self.__class__)
+
+ def test__pkg_resources_style_resolve_absolute(self):
+ typ = self._makeOne()
+ result = typ._pkg_resources_style(
+ 'repoze.bfg.tests.test_configuration:TestDottedNameResolver')
+ self.assertEqual(result, self.__class__)
+
+ def test__pkg_resources_style_irrresolveable_absolute(self):
+ typ = self._makeOne()
+ self.assertRaises(ImportError, typ._pkg_resources_style,
+ 'repoze.bfg.tests:nonexisting')
+
+ def test__pkg_resources_style_resolve_relative_startswith_colon(self):
+ import repoze.bfg.tests.test_configuration
+ typ = self._makeOne(package=repoze.bfg.tests.test_configuration)
+ result = typ._pkg_resources_style(':TestDottedNameResolver')
+ self.assertEqual(result, self.__class__)
+
+ def test__pkg_resources_style_resolve_relative_startswith_dot(self):
+ import repoze.bfg.tests
+ typ = self._makeOne(package=repoze.bfg.tests)
+ result = typ._pkg_resources_style(
+ '.test_configuration:TestDottedNameResolver')
+ self.assertEqual(result, self.__class__)
+
+ def test__pkg_resources_style_resolve_relative_is_dot(self):
+ import repoze.bfg.tests
+ typ = self._makeOne(package=repoze.bfg.tests)
+ result = typ._pkg_resources_style('.')
+ self.assertEqual(result, repoze.bfg.tests)
+
+ def test__pkg_resources_style_resolve_relative_nocurrentpackage(self):
+ typ = self._makeOne()
+ from repoze.bfg.exceptions import ConfigurationError
+ self.assertRaises(ConfigurationError, typ._pkg_resources_style,
+ '.whatever')
+
+ def test__pkg_resources_style_irrresolveable_relative(self):
+ import repoze.bfg
+ typ = self._makeOne(package=repoze.bfg)
+ self.assertRaises(ImportError, typ._pkg_resources_style,
+ ':notexisting')
+
+ def test_deserialize_not_a_string(self):
+ typ = self._makeOne()
+ e = self.config_exc(typ, None)
+ self.assertEqual(e.args[0], 'None is not a string')
+
+ def test_deserialize_using_pkgresources_style(self):
+ typ = self._makeOne()
+ result = typ(
+ 'repoze.bfg.tests.test_configuration:TestDottedNameResolver')
+ self.assertEqual(result, self.__class__)
+
+ def test_deserialize_using_zope_dottedname_style(self):
+ typ = self._makeOne()
+ result = typ(
+ 'repoze.bfg.tests.test_configuration:TestDottedNameResolver')
+ self.assertEqual(result, self.__class__)
+
+ def test_deserialize_style_raises(self):
+ typ = self._makeOne()
+ e = self.config_exc(typ, 'cant.be.found')
+ self.assertEqual(e.args[0],
+ "The dotted name 'cant.be.found' cannot be imported")
+
class DummyRequest:
subpath = ()
def __init__(self):