summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_importlib/test_resource.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_importlib/test_resource.py')
-rw-r--r--Lib/test/test_importlib/test_resource.py169
1 files changed, 89 insertions, 80 deletions
diff --git a/Lib/test/test_importlib/test_resource.py b/Lib/test/test_importlib/test_resource.py
index 1d1bdad..f8d861e 100644
--- a/Lib/test/test_importlib/test_resource.py
+++ b/Lib/test/test_importlib/test_resource.py
@@ -27,20 +27,21 @@ class ResourceTests:
def test_contents(self):
contents = set(resources.contents(self.data))
# There may be cruft in the directory listing of the data directory.
- # Under Python 3 we could have a __pycache__ directory, and under
- # Python 2 we could have .pyc files. These are both artifacts of the
- # test suite importing these modules and writing these caches. They
- # aren't germane to this test, so just filter them out.
+ # It could have a __pycache__ directory,
+ # an artifact of the
+ # test suite importing these modules, which
+ # are not germane to this test, so just filter them out.
contents.discard('__pycache__')
- contents.discard('__init__.pyc')
- contents.discard('__init__.pyo')
- self.assertEqual(contents, {
- '__init__.py',
- 'subdirectory',
- 'utf-8.file',
- 'binary.file',
- 'utf-16.file',
- })
+ self.assertEqual(
+ contents,
+ {
+ '__init__.py',
+ 'subdirectory',
+ 'utf-8.file',
+ 'binary.file',
+ 'utf-16.file',
+ },
+ )
class ResourceDiskTests(ResourceTests, unittest.TestCase):
@@ -55,27 +56,26 @@ class ResourceZipTests(ResourceTests, util.ZipSetup, unittest.TestCase):
class ResourceLoaderTests(unittest.TestCase):
def test_resource_contents(self):
package = util.create_package(
- file=data01, path=data01.__file__, contents=['A', 'B', 'C'])
- self.assertEqual(
- set(resources.contents(package)),
- {'A', 'B', 'C'})
+ file=data01, path=data01.__file__, contents=['A', 'B', 'C']
+ )
+ self.assertEqual(set(resources.contents(package)), {'A', 'B', 'C'})
def test_resource_is_resource(self):
package = util.create_package(
- file=data01, path=data01.__file__,
- contents=['A', 'B', 'C', 'D/E', 'D/F'])
+ file=data01, path=data01.__file__, contents=['A', 'B', 'C', 'D/E', 'D/F']
+ )
self.assertTrue(resources.is_resource(package, 'B'))
def test_resource_directory_is_not_resource(self):
package = util.create_package(
- file=data01, path=data01.__file__,
- contents=['A', 'B', 'C', 'D/E', 'D/F'])
+ file=data01, path=data01.__file__, contents=['A', 'B', 'C', 'D/E', 'D/F']
+ )
self.assertFalse(resources.is_resource(package, 'D'))
def test_resource_missing_is_not_resource(self):
package = util.create_package(
- file=data01, path=data01.__file__,
- contents=['A', 'B', 'C', 'D/E', 'D/F'])
+ file=data01, path=data01.__file__, contents=['A', 'B', 'C', 'D/E', 'D/F']
+ )
self.assertFalse(resources.is_resource(package, 'Z'))
@@ -86,90 +86,63 @@ class ResourceCornerCaseTests(unittest.TestCase):
# 2. Are not on the file system
# 3. Are not in a zip file
module = util.create_package(
- file=data01, path=data01.__file__, contents=['A', 'B', 'C'])
+ file=data01, path=data01.__file__, contents=['A', 'B', 'C']
+ )
# Give the module a dummy loader.
module.__loader__ = object()
# Give the module a dummy origin.
module.__file__ = '/path/which/shall/not/be/named'
- if sys.version_info >= (3,):
- module.__spec__.loader = module.__loader__
- module.__spec__.origin = module.__file__
+ module.__spec__.loader = module.__loader__
+ module.__spec__.origin = module.__file__
self.assertFalse(resources.is_resource(module, 'A'))
-class ResourceFromZipsTest(util.ZipSetupBase, unittest.TestCase):
- ZIP_MODULE = zipdata02 # type: ignore
-
- def test_unrelated_contents(self):
- # https://gitlab.com/python-devs/importlib_resources/issues/44
- #
- # Here we have a zip file with two unrelated subpackages. The bug
- # reports that getting the contents of a resource returns unrelated
- # files.
- self.assertEqual(
- set(resources.contents('ziptestdata.one')),
- {'__init__.py', 'resource1.txt'})
- self.assertEqual(
- set(resources.contents('ziptestdata.two')),
- {'__init__.py', 'resource2.txt'})
-
-
-class SubdirectoryResourceFromZipsTest(util.ZipSetupBase, unittest.TestCase):
- ZIP_MODULE = zipdata01 # type: ignore
+class ResourceFromZipsTest01(util.ZipSetupBase, unittest.TestCase):
+ ZIP_MODULE = zipdata01 # type: ignore
def test_is_submodule_resource(self):
submodule = import_module('ziptestdata.subdirectory')
- self.assertTrue(
- resources.is_resource(submodule, 'binary.file'))
+ self.assertTrue(resources.is_resource(submodule, 'binary.file'))
def test_read_submodule_resource_by_name(self):
self.assertTrue(
- resources.is_resource('ziptestdata.subdirectory', 'binary.file'))
+ resources.is_resource('ziptestdata.subdirectory', 'binary.file')
+ )
def test_submodule_contents(self):
submodule = import_module('ziptestdata.subdirectory')
self.assertEqual(
- set(resources.contents(submodule)),
- {'__init__.py', 'binary.file'})
+ set(resources.contents(submodule)), {'__init__.py', 'binary.file'}
+ )
def test_submodule_contents_by_name(self):
self.assertEqual(
set(resources.contents('ziptestdata.subdirectory')),
- {'__init__.py', 'binary.file'})
-
-
-class NamespaceTest(unittest.TestCase):
- def test_namespaces_cannot_have_resources(self):
- contents = resources.contents('test.test_importlib.data03.namespace')
- self.assertFalse(list(contents))
- # Even though there is a file in the namespace directory, it is not
- # considered a resource, since namespace packages can't have them.
- self.assertFalse(resources.is_resource(
- 'test.test_importlib.data03.namespace',
- 'resource1.txt'))
- # We should get an exception if we try to read it or open it.
- self.assertRaises(
- FileNotFoundError,
- resources.open_text,
- 'test.test_importlib.data03.namespace', 'resource1.txt')
- self.assertRaises(
- FileNotFoundError,
- resources.open_binary,
- 'test.test_importlib.data03.namespace', 'resource1.txt')
- self.assertRaises(
- FileNotFoundError,
- resources.read_text,
- 'test.test_importlib.data03.namespace', 'resource1.txt')
- self.assertRaises(
- FileNotFoundError,
- resources.read_binary,
- 'test.test_importlib.data03.namespace', 'resource1.txt')
+ {'__init__.py', 'binary.file'},
+ )
+
+
+class ResourceFromZipsTest02(util.ZipSetupBase, unittest.TestCase):
+ ZIP_MODULE = zipdata02 # type: ignore
+
+ def test_unrelated_contents(self):
+ """
+ Test thata zip with two unrelated subpackages return
+ distinct resources. Ref python/importlib_resources#44.
+ """
+ self.assertEqual(
+ set(resources.contents('ziptestdata.one')), {'__init__.py', 'resource1.txt'}
+ )
+ self.assertEqual(
+ set(resources.contents('ziptestdata.two')), {'__init__.py', 'resource2.txt'}
+ )
class DeletingZipsTest(unittest.TestCase):
"""Having accessed resources in a zip file should not keep an open
reference to the zip.
"""
+
ZIP_MODULE = zipdata01
def setUp(self):
@@ -241,5 +214,41 @@ class DeletingZipsTest(unittest.TestCase):
del c
+class ResourceFromNamespaceTest01(unittest.TestCase):
+ site_dir = str(pathlib.Path(__file__).parent)
+
+ @classmethod
+ def setUpClass(cls):
+ sys.path.append(cls.site_dir)
+
+ @classmethod
+ def tearDownClass(cls):
+ sys.path.remove(cls.site_dir)
+
+ def test_is_submodule_resource(self):
+ self.assertTrue(
+ resources.is_resource(import_module('namespacedata01'), 'binary.file')
+ )
+
+ def test_read_submodule_resource_by_name(self):
+ self.assertTrue(resources.is_resource('namespacedata01', 'binary.file'))
+
+ def test_submodule_contents(self):
+ contents = set(resources.contents(import_module('namespacedata01')))
+ try:
+ contents.remove('__pycache__')
+ except KeyError:
+ pass
+ self.assertEqual(contents, {'binary.file', 'utf-8.file', 'utf-16.file'})
+
+ def test_submodule_contents_by_name(self):
+ contents = set(resources.contents('namespacedata01'))
+ try:
+ contents.remove('__pycache__')
+ except KeyError:
+ pass
+ self.assertEqual(contents, {'binary.file', 'utf-8.file', 'utf-16.file'})
+
+
if __name__ == '__main__':
unittest.main()