summaryrefslogtreecommitdiff
path: root/tests/test_path.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_path.py')
-rw-r--r--tests/test_path.py204
1 files changed, 147 insertions, 57 deletions
diff --git a/tests/test_path.py b/tests/test_path.py
index 4ab314f17..626bb1139 100644
--- a/tests/test_path.py
+++ b/tests/test_path.py
@@ -4,14 +4,17 @@ from pyramid.compat import PY2
here = os.path.abspath(os.path.dirname(__file__))
+
class TestCallerPath(unittest.TestCase):
def tearDown(self):
from . import test_path
+
if hasattr(test_path, '__abspath__'):
del test_path.__abspath__
def _callFUT(self, path, level=2):
from pyramid.path import caller_path
+
return caller_path(path, level)
def test_isabs(self):
@@ -20,12 +23,14 @@ class TestCallerPath(unittest.TestCase):
def test_pkgrelative(self):
import os
+
result = self._callFUT('a/b/c')
self.assertEqual(result, os.path.join(here, 'a/b/c'))
def test_memoization_has_abspath(self):
import os
from . import test_path
+
test_path.__abspath__ = '/foo/bar'
result = self._callFUT('a/b/c')
self.assertEqual(result, os.path.join('/foo/bar', 'a/b/c'))
@@ -33,37 +38,46 @@ class TestCallerPath(unittest.TestCase):
def test_memoization_success(self):
import os
from . import test_path
+
result = self._callFUT('a/b/c')
self.assertEqual(result, os.path.join(here, 'a/b/c'))
self.assertEqual(test_path.__abspath__, here)
+
class TestCallerModule(unittest.TestCase):
def _callFUT(self, *arg, **kw):
from pyramid.path import caller_module
+
return caller_module(*arg, **kw)
def test_it_level_1(self):
from . import test_path
+
result = self._callFUT(1)
self.assertEqual(result, test_path)
def test_it_level_2(self):
from . import test_path
+
result = self._callFUT(2)
self.assertEqual(result, test_path)
def test_it_level_3(self):
from . import test_path
+
result = self._callFUT(3)
self.assertNotEqual(result, test_path)
def test_it_no___name__(self):
class DummyFrame(object):
f_globals = {}
+
class DummySys(object):
def _getframe(self, level):
return DummyFrame()
- modules = {'__main__':'main'}
+
+ modules = {'__main__': 'main'}
+
dummy_sys = DummySys()
result = self._callFUT(3, sys=dummy_sys)
self.assertEqual(result, 'main')
@@ -72,67 +86,82 @@ class TestCallerModule(unittest.TestCase):
class TestCallerPackage(unittest.TestCase):
def _callFUT(self, *arg, **kw):
from pyramid.path import caller_package
+
return caller_package(*arg, **kw)
def test_it_level_1(self):
import tests
+
result = self._callFUT(1)
self.assertEqual(result, tests)
def test_it_level_2(self):
import tests
+
result = self._callFUT(2)
self.assertEqual(result, tests)
def test_it_level_3(self):
import unittest
+
result = self._callFUT(3)
self.assertEqual(result, unittest)
def test_it_package(self):
import tests
+
def dummy_caller_module(*arg):
return tests
+
result = self._callFUT(1, caller_module=dummy_caller_module)
self.assertEqual(result, tests)
-
+
+
class TestPackagePath(unittest.TestCase):
def _callFUT(self, package):
from pyramid.path import package_path
+
return package_path(package)
def test_it_package(self):
import tests
+
package = DummyPackageOrModule(tests)
result = self._callFUT(package)
self.assertEqual(result, package.package_path)
-
+
def test_it_module(self):
from . import test_path
+
module = DummyPackageOrModule(test_path)
result = self._callFUT(module)
self.assertEqual(result, module.package_path)
def test_memoization_success(self):
from . import test_path
+
module = DummyPackageOrModule(test_path)
self._callFUT(module)
self.assertEqual(module.__abspath__, module.package_path)
-
+
def test_memoization_fail(self):
from . import test_path
+
module = DummyPackageOrModule(test_path, raise_exc=TypeError)
result = self._callFUT(module)
self.assertFalse(hasattr(module, '__abspath__'))
self.assertEqual(result, module.package_path)
+
class TestPackageOf(unittest.TestCase):
def _callFUT(self, package):
from pyramid.path import package_of
+
return package_of(package)
def test_it_package(self):
import tests
+
package = DummyPackageOrModule(tests)
result = self._callFUT(package)
self.assertEqual(result, tests)
@@ -140,29 +169,35 @@ class TestPackageOf(unittest.TestCase):
def test_it_module(self):
import tests.test_path
import tests
+
package = DummyPackageOrModule(tests.test_path)
result = self._callFUT(package)
self.assertEqual(result, tests)
+
class TestPackageName(unittest.TestCase):
def _callFUT(self, package):
from pyramid.path import package_name
+
return package_name(package)
def test_it_package(self):
import tests
+
package = DummyPackageOrModule(tests)
result = self._callFUT(package)
self.assertEqual(result, 'tests')
def test_it_namespace_package(self):
import tests
+
package = DummyNamespacePackage(tests)
result = self._callFUT(package)
self.assertEqual(result, 'tests')
-
+
def test_it_module(self):
from . import test_path
+
module = DummyPackageOrModule(test_path)
result = self._callFUT(module)
self.assertEqual(result, 'tests')
@@ -173,12 +208,15 @@ class TestPackageName(unittest.TestCase):
def test_it_main(self):
import __main__
+
result = self._callFUT(__main__)
self.assertEqual(result, '__main__')
+
class TestResolver(unittest.TestCase):
def _getTargetClass(self):
from pyramid.path import Resolver
+
return Resolver
def _makeOne(self, package):
@@ -187,26 +225,29 @@ class TestResolver(unittest.TestCase):
def test_get_package_caller_package(self):
import tests
from pyramid.path import CALLER_PACKAGE
- self.assertEqual(self._makeOne(CALLER_PACKAGE).get_package(),
- tests)
+
+ self.assertEqual(self._makeOne(CALLER_PACKAGE).get_package(), tests)
def test_get_package_name_caller_package(self):
from pyramid.path import CALLER_PACKAGE
- self.assertEqual(self._makeOne(CALLER_PACKAGE).get_package_name(),
- 'tests')
+
+ self.assertEqual(
+ self._makeOne(CALLER_PACKAGE).get_package_name(), 'tests'
+ )
def test_get_package_string(self):
import tests
- self.assertEqual(self._makeOne('tests').get_package(),
- tests)
+
+ self.assertEqual(self._makeOne('tests').get_package(), tests)
def test_get_package_name_string(self):
- self.assertEqual(self._makeOne('tests').get_package_name(),
- 'tests')
+ self.assertEqual(self._makeOne('tests').get_package_name(), 'tests')
+
class TestAssetResolver(unittest.TestCase):
def _getTargetClass(self):
from pyramid.path import AssetResolver
+
return AssetResolver
def _makeOne(self, package='tests'):
@@ -214,18 +255,21 @@ class TestAssetResolver(unittest.TestCase):
def test_ctor_as_package(self):
import sys
+
tests = sys.modules['tests']
inst = self._makeOne(tests)
self.assertEqual(inst.package, tests)
def test_ctor_as_str(self):
import sys
+
tests = sys.modules['tests']
inst = self._makeOne('tests')
self.assertEqual(inst.package, tests)
def test_resolve_abspath(self):
from pyramid.path import FSAssetDescriptor
+
inst = self._makeOne(None)
r = inst.resolve(os.path.join(here, 'test_asset.py'))
self.assertEqual(r.__class__, FSAssetDescriptor)
@@ -233,6 +277,7 @@ class TestAssetResolver(unittest.TestCase):
def test_resolve_absspec(self):
from pyramid.path import PkgResourcesAssetDescriptor
+
inst = self._makeOne(None)
r = inst.resolve('tests:test_asset.py')
self.assertEqual(r.__class__, PkgResourcesAssetDescriptor)
@@ -240,6 +285,7 @@ class TestAssetResolver(unittest.TestCase):
def test_resolve_relspec_with_pkg(self):
from pyramid.path import PkgResourcesAssetDescriptor
+
inst = self._makeOne('tests')
r = inst.resolve('test_asset.py')
self.assertEqual(r.__class__, PkgResourcesAssetDescriptor)
@@ -252,14 +298,17 @@ class TestAssetResolver(unittest.TestCase):
def test_resolve_relspec_caller_package(self):
from pyramid.path import PkgResourcesAssetDescriptor
from pyramid.path import CALLER_PACKAGE
+
inst = self._makeOne(CALLER_PACKAGE)
r = inst.resolve('test_asset.py')
self.assertEqual(r.__class__, PkgResourcesAssetDescriptor)
self.assertTrue(r.exists())
-
+
+
class TestPkgResourcesAssetDescriptor(unittest.TestCase):
def _getTargetClass(self):
from pyramid.path import PkgResourcesAssetDescriptor
+
return PkgResourcesAssetDescriptor
def _makeOne(self, pkg='tests', path='test_asset.py'):
@@ -268,11 +317,13 @@ class TestPkgResourcesAssetDescriptor(unittest.TestCase):
def test_class_conforms_to_IAssetDescriptor(self):
from pyramid.interfaces import IAssetDescriptor
from zope.interface.verify import verifyClass
+
verifyClass(IAssetDescriptor, self._getTargetClass())
-
+
def test_instance_conforms_to_IAssetDescriptor(self):
from pyramid.interfaces import IAssetDescriptor
from zope.interface.verify import verifyObject
+
verifyObject(IAssetDescriptor, self._makeOne())
def test_absspec(self):
@@ -288,33 +339,31 @@ class TestPkgResourcesAssetDescriptor(unittest.TestCase):
inst.pkg_resources = DummyPkgResource()
inst.pkg_resources.resource_stream = lambda x, y: '%s:%s' % (x, y)
s = inst.stream()
- self.assertEqual(s,
- '%s:%s' % ('tests', 'test_asset.py'))
+ self.assertEqual(s, '%s:%s' % ('tests', 'test_asset.py'))
def test_isdir(self):
inst = self._makeOne()
inst.pkg_resources = DummyPkgResource()
inst.pkg_resources.resource_isdir = lambda x, y: '%s:%s' % (x, y)
- self.assertEqual(inst.isdir(),
- '%s:%s' % ('tests', 'test_asset.py'))
+ self.assertEqual(inst.isdir(), '%s:%s' % ('tests', 'test_asset.py'))
def test_listdir(self):
inst = self._makeOne()
inst.pkg_resources = DummyPkgResource()
inst.pkg_resources.resource_listdir = lambda x, y: '%s:%s' % (x, y)
- self.assertEqual(inst.listdir(),
- '%s:%s' % ('tests', 'test_asset.py'))
+ self.assertEqual(inst.listdir(), '%s:%s' % ('tests', 'test_asset.py'))
def test_exists(self):
inst = self._makeOne()
inst.pkg_resources = DummyPkgResource()
inst.pkg_resources.resource_exists = lambda x, y: '%s:%s' % (x, y)
- self.assertEqual(inst.exists(),
- '%s:%s' % ('tests', 'test_asset.py'))
+ self.assertEqual(inst.exists(), '%s:%s' % ('tests', 'test_asset.py'))
+
class TestFSAssetDescriptor(unittest.TestCase):
def _getTargetClass(self):
from pyramid.path import FSAssetDescriptor
+
return FSAssetDescriptor
def _makeOne(self, path=os.path.join(here, 'test_asset.py')):
@@ -323,11 +372,13 @@ class TestFSAssetDescriptor(unittest.TestCase):
def test_class_conforms_to_IAssetDescriptor(self):
from pyramid.interfaces import IAssetDescriptor
from zope.interface.verify import verifyClass
+
verifyClass(IAssetDescriptor, self._getTargetClass())
-
+
def test_instance_conforms_to_IAssetDescriptor(self):
from pyramid.interfaces import IAssetDescriptor
from zope.interface.verify import verifyObject
+
verifyObject(IAssetDescriptor, self._makeOne())
def test_absspec(self):
@@ -361,9 +412,11 @@ class TestFSAssetDescriptor(unittest.TestCase):
inst = self._makeOne()
self.assertTrue(inst.exists())
+
class TestDottedNameResolver(unittest.TestCase):
def _makeOne(self, package=None):
from pyramid.path import DottedNameResolver
+
return DottedNameResolver(package)
def config_exc(self, func, *arg, **kw):
@@ -372,7 +425,7 @@ class TestDottedNameResolver(unittest.TestCase):
except ValueError as e:
return e
else:
- raise AssertionError('Invalid not raised') # pragma: no cover
+ raise AssertionError('Invalid not raised') # pragma: no cover
def test_zope_dottedname_style_resolve_builtin(self):
typ = self._makeOne()
@@ -385,30 +438,40 @@ class TestDottedNameResolver(unittest.TestCase):
def test_zope_dottedname_style_resolve_absolute(self):
typ = self._makeOne()
result = typ._zope_dottedname_style(
- 'tests.test_path.TestDottedNameResolver', None)
+ 'tests.test_path.TestDottedNameResolver', None
+ )
self.assertEqual(result, self.__class__)
def test_zope_dottedname_style_irrresolveable_absolute(self):
typ = self._makeOne()
- self.assertRaises(ImportError, typ._zope_dottedname_style,
- 'pyramid.test_path.nonexisting_name', None)
+ self.assertRaises(
+ ImportError,
+ typ._zope_dottedname_style,
+ 'pyramid.test_path.nonexisting_name',
+ None,
+ )
def test__zope_dottedname_style_resolve_relative(self):
import tests
+
typ = self._makeOne()
result = typ._zope_dottedname_style(
- '.test_path.TestDottedNameResolver', tests)
+ '.test_path.TestDottedNameResolver', tests
+ )
self.assertEqual(result, self.__class__)
def test__zope_dottedname_style_resolve_relative_leading_dots(self):
import tests.test_path
+
typ = self._makeOne()
result = typ._zope_dottedname_style(
- '..tests.test_path.TestDottedNameResolver', tests)
+ '..tests.test_path.TestDottedNameResolver', tests
+ )
self.assertEqual(result, self.__class__)
def test__zope_dottedname_style_resolve_relative_is_dot(self):
import tests
+
typ = self._makeOne()
result = typ._zope_dottedname_style('.', tests)
self.assertEqual(result, tests)
@@ -417,24 +480,28 @@ class TestDottedNameResolver(unittest.TestCase):
typ = self._makeOne()
e = self.config_exc(typ._zope_dottedname_style, '.', None)
self.assertEqual(
- e.args[0],
- "relative name '.' irresolveable without package")
+ 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', None)
self.assertEqual(
e.args[0],
- "relative name '.whatever' irresolveable without package")
+ "relative name '.whatever' irresolveable without package",
+ )
def test_zope_dottedname_style_irrresolveable_relative(self):
import tests
+
typ = self._makeOne()
- self.assertRaises(ImportError, typ._zope_dottedname_style,
- '.notexisting', tests)
+ self.assertRaises(
+ ImportError, typ._zope_dottedname_style, '.notexisting', tests
+ )
def test__zope_dottedname_style_resolveable_relative(self):
import tests
+
typ = self._makeOne()
result = typ._zope_dottedname_style('.', tests)
self.assertEqual(result, tests)
@@ -442,49 +509,58 @@ class TestDottedNameResolver(unittest.TestCase):
def test__zope_dottedname_style_irresolveable_absolute(self):
typ = self._makeOne()
self.assertRaises(
- ImportError,
- typ._zope_dottedname_style, 'pyramid.fudge.bar', None)
+ ImportError, typ._zope_dottedname_style, 'pyramid.fudge.bar', None
+ )
def test__zope_dottedname_style_resolveable_absolute(self):
typ = self._makeOne()
result = typ._zope_dottedname_style(
- 'tests.test_path.TestDottedNameResolver', None)
+ 'tests.test_path.TestDottedNameResolver', None
+ )
self.assertEqual(result, self.__class__)
def test__pkg_resources_style_resolve_absolute(self):
typ = self._makeOne()
result = typ._pkg_resources_style(
- 'tests.test_path:TestDottedNameResolver', None)
+ 'tests.test_path:TestDottedNameResolver', None
+ )
self.assertEqual(result, self.__class__)
def test__pkg_resources_style_irrresolveable_absolute(self):
typ = self._makeOne()
- self.assertRaises(ImportError, typ._pkg_resources_style,
- 'tests:nonexisting', None)
+ self.assertRaises(
+ ImportError, typ._pkg_resources_style, 'tests:nonexisting', None
+ )
def test__pkg_resources_style_resolve_relative(self):
import tests
+
typ = self._makeOne()
result = typ._pkg_resources_style(
- '.test_path:TestDottedNameResolver', tests)
+ '.test_path:TestDottedNameResolver', tests
+ )
self.assertEqual(result, self.__class__)
def test__pkg_resources_style_resolve_relative_is_dot(self):
import tests
+
typ = self._makeOne()
result = typ._pkg_resources_style('.', tests)
self.assertEqual(result, tests)
def test__pkg_resources_style_resolve_relative_nocurrentpackage(self):
typ = self._makeOne()
- self.assertRaises(ValueError, typ._pkg_resources_style,
- '.whatever', None)
+ self.assertRaises(
+ ValueError, typ._pkg_resources_style, '.whatever', None
+ )
def test__pkg_resources_style_irrresolveable_relative(self):
import pyramid
+
typ = self._makeOne()
- self.assertRaises(ImportError, typ._pkg_resources_style,
- ':notexisting', pyramid)
+ self.assertRaises(
+ ImportError, typ._pkg_resources_style, ':notexisting', pyramid
+ )
def test_resolve_not_a_string(self):
typ = self._makeOne()
@@ -493,14 +569,12 @@ class TestDottedNameResolver(unittest.TestCase):
def test_resolve_using_pkgresources_style(self):
typ = self._makeOne()
- result = typ.resolve(
- 'tests.test_path:TestDottedNameResolver')
+ result = typ.resolve('tests.test_path:TestDottedNameResolver')
self.assertEqual(result, self.__class__)
def test_resolve_using_zope_dottedname_style(self):
typ = self._makeOne()
- result = typ.resolve(
- 'tests.test_path:TestDottedNameResolver')
+ result = typ.resolve('tests.test_path:TestDottedNameResolver')
self.assertEqual(result, self.__class__)
def test_resolve_missing_raises(self):
@@ -509,23 +583,30 @@ class TestDottedNameResolver(unittest.TestCase):
def test_resolve_caller_package(self):
from pyramid.path import CALLER_PACKAGE
+
typ = self._makeOne(CALLER_PACKAGE)
- self.assertEqual(typ.resolve('.test_path.TestDottedNameResolver'),
- self.__class__)
+ self.assertEqual(
+ typ.resolve('.test_path.TestDottedNameResolver'), self.__class__
+ )
def test_maybe_resolve_caller_package(self):
from pyramid.path import CALLER_PACKAGE
+
typ = self._makeOne(CALLER_PACKAGE)
- self.assertEqual(typ.maybe_resolve('.test_path.TestDottedNameResolver'),
- self.__class__)
+ self.assertEqual(
+ typ.maybe_resolve('.test_path.TestDottedNameResolver'),
+ self.__class__,
+ )
def test_ctor_string_module_resolveable(self):
import tests
+
typ = self._makeOne('tests.test_path')
self.assertEqual(typ.package, tests)
def test_ctor_string_package_resolveable(self):
import tests
+
typ = self._makeOne('tests')
self.assertEqual(typ.package, tests)
@@ -535,11 +616,13 @@ class TestDottedNameResolver(unittest.TestCase):
def test_ctor_module(self):
import tests
from . import test_path
+
typ = self._makeOne(test_path)
self.assertEqual(typ.package, tests)
def test_ctor_package(self):
import tests
+
typ = self._makeOne(tests)
self.assertEqual(typ.package, tests)
@@ -547,16 +630,20 @@ class TestDottedNameResolver(unittest.TestCase):
typ = self._makeOne(None)
self.assertEqual(typ.package, None)
+
class DummyPkgResource(object):
pass
+
class DummyPackageOrModule:
def __init__(self, real_package_or_module, raise_exc=None):
self.__dict__['raise_exc'] = raise_exc
self.__dict__['__name__'] = real_package_or_module.__name__
import os
+
self.__dict__['package_path'] = os.path.dirname(
- os.path.abspath(real_package_or_module.__file__))
+ os.path.abspath(real_package_or_module.__file__)
+ )
self.__dict__['__file__'] = real_package_or_module.__file__
def __setattr__(self, key, val):
@@ -564,12 +651,15 @@ class DummyPackageOrModule:
raise self.raise_exc
self.__dict__[key] = val
+
class DummyNamespacePackage:
"""Has no __file__ attribute.
"""
-
+
def __init__(self, real_package_or_module):
self.__name__ = real_package_or_module.__name__
import os
+
self.package_path = os.path.dirname(
- os.path.abspath(real_package_or_module.__file__))
+ os.path.abspath(real_package_or_module.__file__)
+ )