def test_list_files_with_unreadable_file(tmp_path): file = tmp_path / 'foo.jpg' file.write_text('asdf') file_mode = os.stat(file).st_mode os.chmod(file, mode=0o222) try: with pytest.raises(errors.ReadError) as exc_info: utils.list_files(file) assert str(exc_info.value) == f'{file}: Permission denied' finally: os.chmod(file, mode=file_mode)
def test_list_files_with_unreadable_directory(tmp_path): dir = tmp_path / 'dir' dir.mkdir() file = dir / 'foo.jpg' file.write_text('asdf') dir_mode = os.stat(dir).st_mode os.chmod(dir, mode=0o222) try: for path in (dir, file): with pytest.raises(errors.ReadError) as exc_info: utils.list_files(path) assert str(exc_info.value) == f'{path}: Permission denied' finally: os.chmod(dir, mode=dir_mode)
def test_list_files_with_file(testdir): files = [ Path(filepath).relative_to(testdir.parent) for filepath in utils.list_files(testdir / 'foo/empty') ] exp = ['base/foo/empty'] assert files == [Path(p) for p in exp]
def test_list_files_with_directory(testdir): files = [Path(filepath).relative_to(testdir.parent) for filepath in utils.list_files(testdir)] exp = sorted(['base/foo/.empty', 'base/foo/.not_empty', 'base/foo/empty', 'base/foo/not_empty', 'base/.bar/.empty', 'base/.bar/.not_empty', 'base/.bar/empty', 'base/.bar/not_empty', 'base/.bar/baz/.empty', 'base/.bar/baz/.not_empty', 'base/.bar/baz/empty', 'base/.bar/baz/not_empty']) assert files == [Path(p) for p in exp]
def test_filter_files_without_empty_files(testdir): filelist = [str(Path(filepath).relative_to(testdir.parent)) for filepath in utils.list_files(testdir)] cwd = os.getcwd() try: os.chdir(testdir.parent) assert utils.filter_files(filelist, empty=False) == sorted(['base/foo/.not_empty', 'base/foo/not_empty', 'base/.bar/.not_empty', 'base/.bar/not_empty', 'base/.bar/baz/.not_empty', 'base/.bar/baz/not_empty']) finally: os.chdir(cwd)