def test_get_module_name(files, expected, tmp_path): for file_path in files: path = tmp_path.joinpath(file_path) if '/' in file_path: path.parent.mkdir(parents=True, exist_ok=True) path.touch() root = Root(path=tmp_path, name='foobar') for file_path, module_name in expected.items(): assert root._get_module_name(path=tmp_path.joinpath(file_path)) == module_name
def test_discover_packages(tmp_path): package = Root(path=tmp_path) path = tmp_path / 'project1' path.mkdir() (path / 'dir1').mkdir() (path / 'dir2').mkdir() (path / 'dir3').mkdir() (path / 'dir3' / 'dir4').mkdir() (path / 'empty').mkdir() (path / '__pycache__').mkdir() (tmp_path / 'ignore.json').touch() (path / '__init__.py').touch() (path / 'file1.py').touch() (path / 'file2.db').touch() (path / 'dir1' / '__init__.py').touch() (path / 'dir2' / 'file3.json').touch() (path / 'dir3' / '__init__.py').touch() (path / 'dir3' / 'dir4' / 'file4.json').touch() (path / '__pycache__' / 'lol.pyc').touch() assert set(map(str, package.packages)) == { 'project1', 'project1.dir1', 'project1.dir3' } data = defaultdict(set) for subpackage in package.data: data[subpackage.module].add(str(subpackage)) assert set(data) == {'project1', 'project1.dir3'} assert data['project1'] == {'*.db', 'dir2/*.json'} assert data['project1.dir3'] == {'dir4/*.json'}
def test_package_dir(files, expected, tmp_path): for file_path in files: path = tmp_path.joinpath(file_path) if '/' in file_path: path.parent.mkdir(parents=True, exist_ok=True) path.touch() root = Root(path=tmp_path, name='foobar') assert root.package_dir == expected
def test_packages_path(files, expected_paths, tmp_path): for file_path in files: path = tmp_path.joinpath(file_path) if '/' in file_path: path.parent.mkdir(parents=True, exist_ok=True) path.touch() root = Root(path=tmp_path, name='foobar') assert {package.relative for package in root.packages} == expected_paths