| import io |
| import unittest |
| |
| from importlib import resources |
| |
| from importlib._adapters import ( |
| CompatibilityFiles, |
| wrap_spec, |
| ) |
| |
| from .resources import util |
| |
| |
| class CompatibilityFilesTests(unittest.TestCase): |
| @property |
| def package(self): |
| bytes_data = io.BytesIO(b'Hello, world!') |
| return util.create_package( |
| file=bytes_data, |
| path='some_path', |
| contents=('a', 'b', 'c'), |
| ) |
| |
| @property |
| def files(self): |
| return resources.files(self.package) |
| |
| def test_spec_path_iter(self): |
| self.assertEqual( |
| sorted(path.name for path in self.files.iterdir()), |
| ['a', 'b', 'c'], |
| ) |
| |
| def test_child_path_iter(self): |
| self.assertEqual(list((self.files / 'a').iterdir()), []) |
| |
| def test_orphan_path_iter(self): |
| self.assertEqual(list((self.files / 'a' / 'a').iterdir()), []) |
| self.assertEqual(list((self.files / 'a' / 'a' / 'a').iterdir()), []) |
| |
| def test_spec_path_is(self): |
| self.assertFalse(self.files.is_file()) |
| self.assertFalse(self.files.is_dir()) |
| |
| def test_child_path_is(self): |
| self.assertTrue((self.files / 'a').is_file()) |
| self.assertFalse((self.files / 'a').is_dir()) |
| |
| def test_orphan_path_is(self): |
| self.assertFalse((self.files / 'a' / 'a').is_file()) |
| self.assertFalse((self.files / 'a' / 'a').is_dir()) |
| self.assertFalse((self.files / 'a' / 'a' / 'a').is_file()) |
| self.assertFalse((self.files / 'a' / 'a' / 'a').is_dir()) |
| |
| def test_spec_path_name(self): |
| self.assertEqual(self.files.name, 'testingpackage') |
| |
| def test_child_path_name(self): |
| self.assertEqual((self.files / 'a').name, 'a') |
| |
| def test_orphan_path_name(self): |
| self.assertEqual((self.files / 'a' / 'b').name, 'b') |
| self.assertEqual((self.files / 'a' / 'b' / 'c').name, 'c') |
| |
| def test_spec_path_open(self): |
| self.assertEqual(self.files.read_bytes(), b'Hello, world!') |
| self.assertEqual(self.files.read_text(), 'Hello, world!') |
| |
| def test_child_path_open(self): |
| self.assertEqual((self.files / 'a').read_bytes(), b'Hello, world!') |
| self.assertEqual((self.files / 'a').read_text(), 'Hello, world!') |
| |
| def test_orphan_path_open(self): |
| with self.assertRaises(FileNotFoundError): |
| (self.files / 'a' / 'b').read_bytes() |
| with self.assertRaises(FileNotFoundError): |
| (self.files / 'a' / 'b' / 'c').read_bytes() |
| |
| def test_open_invalid_mode(self): |
| with self.assertRaises(ValueError): |
| self.files.open('0') |
| |
| def test_orphan_path_invalid(self): |
| with self.assertRaises(ValueError): |
| CompatibilityFiles.OrphanPath() |
| |
| def test_wrap_spec(self): |
| spec = wrap_spec(self.package) |
| self.assertIsInstance(spec.loader.get_resource_reader(None), CompatibilityFiles) |
| |
| |
| class CompatibilityFilesNoReaderTests(unittest.TestCase): |
| @property |
| def package(self): |
| return util.create_package_from_loader(None) |
| |
| @property |
| def files(self): |
| return resources.files(self.package) |
| |
| def test_spec_path_joinpath(self): |
| self.assertIsInstance(self.files / 'a', CompatibilityFiles.OrphanPath) |