Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
test_reader.py126 linesDownload Raw Back to tests
1import os.path2import pathlib3import unittest4from importlib import import_module5 6from importlib_resources.readers import MultiplexedPath, NamespaceReader7 8from . import util9 10 11class MultiplexedPathTest(util.DiskSetup, unittest.TestCase):12    MODULE = 'namespacedata01'13 14    def setUp(self):15        super().setUp()16        self.folder = pathlib.Path(self.data.__path__[0])17        self.data01 = pathlib.Path(self.load_fixture('data01').__file__).parent18        self.data02 = pathlib.Path(self.load_fixture('data02').__file__).parent19 20    def test_init_no_paths(self):21        with self.assertRaises(FileNotFoundError):22            MultiplexedPath()23 24    def test_init_file(self):25        with self.assertRaises(NotADirectoryError):26            MultiplexedPath(self.folder / 'binary.file')27 28    def test_iterdir(self):29        contents = {path.name for path in MultiplexedPath(self.folder).iterdir()}30        try:31            contents.remove('__pycache__')32        except (KeyError, ValueError):33            pass34        assert contents == {'subdirectory', 'binary.file', 'utf-16.file', 'utf-8.file'}35 36    def test_iterdir_duplicate(self):37        contents = {38            path.name for path in MultiplexedPath(self.folder, self.data01).iterdir()39        }40        for remove in ('__pycache__', '__init__.pyc'):41            try:42                contents.remove(remove)43            except (KeyError, ValueError):44                pass45        assert contents == {46            '__init__.py',47            'binary.file',48            'subdirectory',49            'utf-16.file',50            'utf-8.file',51        }52 53    def test_is_dir(self):54        assert MultiplexedPath(self.folder).is_dir()55 56    def test_is_file(self):57        assert not MultiplexedPath(self.folder).is_file()58 59    def test_open_file(self):60        path = MultiplexedPath(self.folder)61        with self.assertRaises(FileNotFoundError):62            path.read_bytes()63        with self.assertRaises(FileNotFoundError):64            path.read_text()65        with self.assertRaises(FileNotFoundError):66            path.open()67 68    def test_join_path(self):69        prefix = str(self.folder.parent)70        path = MultiplexedPath(self.folder, self.data01)71        assert str(path.joinpath('binary.file'))[len(prefix) + 1 :] == os.path.join(72            'namespacedata01', 'binary.file'73        )74        sub = path.joinpath('subdirectory')75        assert isinstance(sub, MultiplexedPath)76        assert 'namespacedata01' in str(sub)77        assert 'data01' in str(sub)78        assert str(path.joinpath('imaginary'))[len(prefix) + 1 :] == os.path.join(79            'namespacedata01', 'imaginary'80        )81        assert path.joinpath() == path82 83    def test_join_path_compound(self):84        path = MultiplexedPath(self.folder)85        assert not path.joinpath('imaginary/foo.py').exists()86 87    def test_join_path_common_subdir(self):88        prefix = str(self.data02.parent)89        path = MultiplexedPath(self.data01, self.data02)90        assert isinstance(path.joinpath('subdirectory'), MultiplexedPath)91        assert str(path.joinpath('subdirectory', 'subsubdir'))[len(prefix) + 1 :] == (92            os.path.join('data02', 'subdirectory', 'subsubdir')93        )94 95    def test_repr(self):96        assert repr(MultiplexedPath(self.folder)) == f"MultiplexedPath('{self.folder}')"97 98    def test_name(self):99        assert MultiplexedPath(self.folder).name == os.path.basename(self.folder)100 101 102class NamespaceReaderTest(util.DiskSetup, unittest.TestCase):103    MODULE = 'namespacedata01'104 105    def test_init_error(self):106        with self.assertRaises(ValueError):107            NamespaceReader(['path1', 'path2'])108 109    def test_resource_path(self):110        namespacedata01 = import_module('namespacedata01')111        reader = NamespaceReader(namespacedata01.__spec__.submodule_search_locations)112 113        root = self.data.__path__[0]114        assert reader.resource_path('binary.file') == os.path.join(root, 'binary.file')115        assert reader.resource_path('imaginary') == os.path.join(root, 'imaginary')116 117    def test_files(self):118        reader = NamespaceReader(self.data.__spec__.submodule_search_locations)119        root = self.data.__path__[0]120        assert isinstance(reader.files(), MultiplexedPath)121        assert repr(reader.files()) == f"MultiplexedPath('{root}')"122 123 124if __name__ == '__main__':125    unittest.main()126 
codekingpro/portable-devtools · Team Ai