589 lines
18 KiB
Python
589 lines
18 KiB
Python
|
import pytest
|
||
|
|
||
|
from fsspec.asyn import AsyncFileSystem
|
||
|
from fsspec.implementations.dirfs import DirFileSystem
|
||
|
from fsspec.spec import AbstractFileSystem
|
||
|
|
||
|
PATH = "path/to/dir"
|
||
|
ARGS = ["foo", "bar"]
|
||
|
KWARGS = {"baz": "baz", "qux": "qux"}
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def make_fs(mocker):
|
||
|
def _make_fs(async_impl=False, asynchronous=False):
|
||
|
attrs = {
|
||
|
"sep": "/",
|
||
|
"async_impl": async_impl,
|
||
|
"_strip_protocol": lambda path: path,
|
||
|
}
|
||
|
|
||
|
if async_impl:
|
||
|
attrs["asynchronous"] = asynchronous
|
||
|
cls = AsyncFileSystem
|
||
|
else:
|
||
|
cls = AbstractFileSystem
|
||
|
|
||
|
fs = mocker.MagicMock(spec=cls, **attrs)
|
||
|
|
||
|
return fs
|
||
|
|
||
|
return _make_fs
|
||
|
|
||
|
|
||
|
@pytest.fixture(
|
||
|
params=[
|
||
|
pytest.param(False, id="sync"),
|
||
|
pytest.param(True, id="async"),
|
||
|
]
|
||
|
)
|
||
|
def fs(make_fs, request):
|
||
|
return make_fs(async_impl=request.param)
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def asyncfs(make_fs):
|
||
|
return make_fs(async_impl=True, asynchronous=True)
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def make_dirfs():
|
||
|
def _make_dirfs(fs, asynchronous=False):
|
||
|
return DirFileSystem(PATH, fs, asynchronous=asynchronous)
|
||
|
|
||
|
return _make_dirfs
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def dirfs(make_dirfs, fs):
|
||
|
return make_dirfs(fs)
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def adirfs(make_dirfs, asyncfs):
|
||
|
return make_dirfs(asyncfs, asynchronous=True)
|
||
|
|
||
|
|
||
|
def test_dirfs(fs, asyncfs):
|
||
|
DirFileSystem("path", fs)
|
||
|
DirFileSystem("path", asyncfs, asynchronous=True)
|
||
|
|
||
|
with pytest.raises(ValueError):
|
||
|
DirFileSystem("path", asyncfs)
|
||
|
|
||
|
with pytest.raises(ValueError):
|
||
|
DirFileSystem("path", fs, asynchronous=True)
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"root, rel, full",
|
||
|
[
|
||
|
("", "", ""),
|
||
|
("", "foo", "foo"),
|
||
|
("root", "", "root"),
|
||
|
("root", "foo", "root/foo"),
|
||
|
],
|
||
|
)
|
||
|
def test_path(fs, root, rel, full):
|
||
|
dirfs = DirFileSystem(root, fs)
|
||
|
assert dirfs._join(rel) == full
|
||
|
assert dirfs._relpath(full) == rel
|
||
|
|
||
|
|
||
|
def test_sep(mocker, dirfs):
|
||
|
sep = mocker.Mock()
|
||
|
dirfs.fs.sep = sep
|
||
|
assert dirfs.sep == sep
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_set_session(mocker, adirfs):
|
||
|
adirfs.fs.set_session = mocker.AsyncMock()
|
||
|
assert (
|
||
|
await adirfs.set_session(*ARGS, **KWARGS) == adirfs.fs.set_session.return_value
|
||
|
)
|
||
|
adirfs.fs.set_session.assert_called_once_with(*ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_rm_file(adirfs):
|
||
|
await adirfs._rm_file("file", **KWARGS)
|
||
|
adirfs.fs._rm_file.assert_called_once_with(f"{PATH}/file", **KWARGS)
|
||
|
|
||
|
|
||
|
def test_rm_file(dirfs):
|
||
|
dirfs.rm_file("file", **KWARGS)
|
||
|
dirfs.fs.rm_file.assert_called_once_with("path/to/dir/file", **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_rm(adirfs):
|
||
|
await adirfs._rm("file", *ARGS, **KWARGS)
|
||
|
adirfs.fs._rm.assert_called_once_with("path/to/dir/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_rm(dirfs):
|
||
|
dirfs.rm("file", *ARGS, **KWARGS)
|
||
|
dirfs.fs.rm.assert_called_once_with("path/to/dir/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_cp_file(adirfs):
|
||
|
await adirfs._cp_file("one", "two", **KWARGS)
|
||
|
adirfs.fs._cp_file.assert_called_once_with(f"{PATH}/one", f"{PATH}/two", **KWARGS)
|
||
|
|
||
|
|
||
|
def test_cp_file(dirfs):
|
||
|
dirfs.cp_file("one", "two", **KWARGS)
|
||
|
dirfs.fs.cp_file.assert_called_once_with(f"{PATH}/one", f"{PATH}/two", **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_copy(adirfs):
|
||
|
await adirfs._copy("one", "two", *ARGS, **KWARGS)
|
||
|
adirfs.fs._copy.assert_called_once_with(
|
||
|
f"{PATH}/one", f"{PATH}/two", *ARGS, **KWARGS
|
||
|
)
|
||
|
|
||
|
|
||
|
def test_copy(dirfs):
|
||
|
dirfs.copy("one", "two", *ARGS, **KWARGS)
|
||
|
dirfs.fs.copy.assert_called_once_with(f"{PATH}/one", f"{PATH}/two", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_pipe(adirfs):
|
||
|
await adirfs._pipe("file", *ARGS, **KWARGS)
|
||
|
adirfs.fs._pipe.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_pipe(dirfs):
|
||
|
dirfs.pipe("file", *ARGS, **KWARGS)
|
||
|
dirfs.fs.pipe.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_pipe_file(adirfs):
|
||
|
await adirfs._pipe_file("file", *ARGS, **KWARGS)
|
||
|
adirfs.fs._pipe_file.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_pipe_file(dirfs):
|
||
|
dirfs.pipe_file("file", *ARGS, **KWARGS)
|
||
|
dirfs.fs.pipe_file.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_cat_file(adirfs):
|
||
|
assert (
|
||
|
await adirfs._cat_file("file", *ARGS, **KWARGS)
|
||
|
== adirfs.fs._cat_file.return_value
|
||
|
)
|
||
|
adirfs.fs._cat_file.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_cat_file(dirfs):
|
||
|
assert dirfs.cat_file("file", *ARGS, **KWARGS) == dirfs.fs.cat_file.return_value
|
||
|
dirfs.fs.cat_file.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_cat(adirfs):
|
||
|
assert await adirfs._cat("file", *ARGS, **KWARGS) == adirfs.fs._cat.return_value
|
||
|
adirfs.fs._cat.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_cat(dirfs):
|
||
|
assert dirfs.cat("file", *ARGS, **KWARGS) == dirfs.fs.cat.return_value
|
||
|
dirfs.fs.cat.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_cat_list(adirfs):
|
||
|
adirfs.fs._cat.return_value = {f"{PATH}/one": "foo", f"{PATH}/two": "bar"}
|
||
|
assert await adirfs._cat(["one", "two"], *ARGS, **KWARGS) == {
|
||
|
"one": "foo",
|
||
|
"two": "bar",
|
||
|
}
|
||
|
adirfs.fs._cat.assert_called_once_with(
|
||
|
[f"{PATH}/one", f"{PATH}/two"], *ARGS, **KWARGS
|
||
|
)
|
||
|
|
||
|
|
||
|
def test_cat_list(dirfs):
|
||
|
dirfs.fs.cat.return_value = {f"{PATH}/one": "foo", f"{PATH}/two": "bar"}
|
||
|
assert dirfs.cat(["one", "two"], *ARGS, **KWARGS) == {"one": "foo", "two": "bar"}
|
||
|
dirfs.fs.cat.assert_called_once_with(
|
||
|
[f"{PATH}/one", f"{PATH}/two"], *ARGS, **KWARGS
|
||
|
)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_put_file(adirfs):
|
||
|
await adirfs._put_file("local", "file", **KWARGS)
|
||
|
adirfs.fs._put_file.assert_called_once_with("local", f"{PATH}/file", **KWARGS)
|
||
|
|
||
|
|
||
|
def test_put_file(dirfs):
|
||
|
dirfs.put_file("local", "file", **KWARGS)
|
||
|
dirfs.fs.put_file.assert_called_once_with("local", f"{PATH}/file", **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_put(adirfs):
|
||
|
await adirfs._put("local", "file", **KWARGS)
|
||
|
adirfs.fs._put.assert_called_once_with("local", f"{PATH}/file", **KWARGS)
|
||
|
|
||
|
|
||
|
def test_put(dirfs):
|
||
|
dirfs.put("local", "file", **KWARGS)
|
||
|
dirfs.fs.put.assert_called_once_with("local", f"{PATH}/file", **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_get_file(adirfs):
|
||
|
await adirfs._get_file("file", "local", **KWARGS)
|
||
|
adirfs.fs._get_file.assert_called_once_with(f"{PATH}/file", "local", **KWARGS)
|
||
|
|
||
|
|
||
|
def test_get_file(dirfs):
|
||
|
dirfs.get_file("file", "local", **KWARGS)
|
||
|
dirfs.fs.get_file.assert_called_once_with(f"{PATH}/file", "local", **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_get(adirfs):
|
||
|
await adirfs._get("file", "local", **KWARGS)
|
||
|
adirfs.fs._get.assert_called_once_with(f"{PATH}/file", "local", **KWARGS)
|
||
|
|
||
|
|
||
|
def test_get(dirfs):
|
||
|
dirfs.get("file", "local", **KWARGS)
|
||
|
dirfs.fs.get.assert_called_once_with(f"{PATH}/file", "local", **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_isfile(adirfs):
|
||
|
assert await adirfs._isfile("file") == adirfs.fs._isfile.return_value
|
||
|
adirfs.fs._isfile.assert_called_once_with(f"{PATH}/file")
|
||
|
|
||
|
|
||
|
def test_isfile(dirfs):
|
||
|
assert dirfs.isfile("file") == dirfs.fs.isfile.return_value
|
||
|
dirfs.fs.isfile.assert_called_once_with(f"{PATH}/file")
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_isdir(adirfs):
|
||
|
assert await adirfs._isdir("file") == adirfs.fs._isdir.return_value
|
||
|
adirfs.fs._isdir.assert_called_once_with(f"{PATH}/file")
|
||
|
|
||
|
|
||
|
def test_isdir(dirfs):
|
||
|
assert dirfs.isdir("file") == dirfs.fs.isdir.return_value
|
||
|
dirfs.fs.isdir.assert_called_once_with(f"{PATH}/file")
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_size(adirfs):
|
||
|
assert await adirfs._size("file") == adirfs.fs._size.return_value
|
||
|
adirfs.fs._size.assert_called_once_with(f"{PATH}/file")
|
||
|
|
||
|
|
||
|
def test_size(dirfs):
|
||
|
assert dirfs.size("file") == dirfs.fs.size.return_value
|
||
|
dirfs.fs.size.assert_called_once_with(f"{PATH}/file")
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_exists(adirfs):
|
||
|
assert await adirfs._exists("file") == adirfs.fs._exists.return_value
|
||
|
adirfs.fs._exists.assert_called_once_with(f"{PATH}/file")
|
||
|
|
||
|
|
||
|
def test_exists(dirfs):
|
||
|
assert dirfs.exists("file") == dirfs.fs.exists.return_value
|
||
|
dirfs.fs.exists.assert_called_once_with(f"{PATH}/file")
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_info(adirfs):
|
||
|
assert await adirfs._info("file", **KWARGS) == adirfs.fs._info.return_value
|
||
|
adirfs.fs._info.assert_called_once_with(f"{PATH}/file", **KWARGS)
|
||
|
|
||
|
|
||
|
def test_info(dirfs):
|
||
|
assert dirfs.info("file", **KWARGS) == dirfs.fs.info.return_value
|
||
|
dirfs.fs.info.assert_called_once_with(f"{PATH}/file", **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_ls(adirfs):
|
||
|
adirfs.fs._ls.return_value = [f"{PATH}/file"]
|
||
|
assert await adirfs._ls("file", detail=False, **KWARGS) == ["file"]
|
||
|
adirfs.fs._ls.assert_called_once_with(f"{PATH}/file", detail=False, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_ls(dirfs):
|
||
|
dirfs.fs.ls.return_value = [f"{PATH}/file"]
|
||
|
assert dirfs.ls("file", detail=False, **KWARGS) == ["file"]
|
||
|
dirfs.fs.ls.assert_called_once_with(f"{PATH}/file", detail=False, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_ls_detail(adirfs):
|
||
|
adirfs.fs._ls.return_value = [{"name": f"{PATH}/file", "foo": "bar"}]
|
||
|
assert await adirfs._ls("file", detail=True, **KWARGS) == [
|
||
|
{"name": "file", "foo": "bar"}
|
||
|
]
|
||
|
adirfs.fs._ls.assert_called_once_with(f"{PATH}/file", detail=True, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_ls_detail(dirfs):
|
||
|
dirfs.fs.ls.return_value = [{"name": f"{PATH}/file", "foo": "bar"}]
|
||
|
assert dirfs.ls("file", detail=True, **KWARGS) == [{"name": "file", "foo": "bar"}]
|
||
|
dirfs.fs.ls.assert_called_once_with(f"{PATH}/file", detail=True, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_walk(adirfs, mocker):
|
||
|
async def _walk(path, *args, **kwargs):
|
||
|
yield (f"{PATH}/root", ["foo", "bar"], ["baz", "qux"])
|
||
|
|
||
|
adirfs.fs._walk = mocker.MagicMock()
|
||
|
adirfs.fs._walk.side_effect = _walk
|
||
|
|
||
|
actual = []
|
||
|
async for entry in adirfs._walk("root", *ARGS, **KWARGS):
|
||
|
actual.append(entry) # noqa: PERF402
|
||
|
assert actual == [("root", ["foo", "bar"], ["baz", "qux"])]
|
||
|
adirfs.fs._walk.assert_called_once_with(f"{PATH}/root", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_walk(dirfs):
|
||
|
dirfs.fs.walk.return_value = iter(
|
||
|
[(f"{PATH}/root", ["foo", "bar"], ["baz", "qux"])]
|
||
|
)
|
||
|
assert list(dirfs.walk("root", *ARGS, **KWARGS)) == [
|
||
|
("root", ["foo", "bar"], ["baz", "qux"])
|
||
|
]
|
||
|
dirfs.fs.walk.assert_called_once_with(f"{PATH}/root", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_glob(adirfs):
|
||
|
adirfs.fs._glob.return_value = [f"{PATH}/one", f"{PATH}/two"]
|
||
|
assert await adirfs._glob("*", **KWARGS) == ["one", "two"]
|
||
|
adirfs.fs._glob.assert_called_once_with(f"{PATH}/*", **KWARGS)
|
||
|
|
||
|
|
||
|
def test_glob(dirfs):
|
||
|
dirfs.fs.glob.return_value = [f"{PATH}/one", f"{PATH}/two"]
|
||
|
assert dirfs.glob("*", **KWARGS) == ["one", "two"]
|
||
|
dirfs.fs.glob.assert_called_once_with(f"{PATH}/*", **KWARGS)
|
||
|
|
||
|
|
||
|
def test_glob_with_protocol(dirfs):
|
||
|
dirfs.fs.glob.return_value = [f"{PATH}/one", f"{PATH}/two"]
|
||
|
assert dirfs.glob("dir://*", **KWARGS) == ["one", "two"]
|
||
|
dirfs.fs.glob.assert_called_once_with(f"{PATH}/*", **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_glob_detail(adirfs):
|
||
|
adirfs.fs._glob.return_value = {
|
||
|
f"{PATH}/one": {"foo": "bar"},
|
||
|
f"{PATH}/two": {"baz": "qux"},
|
||
|
}
|
||
|
assert await adirfs._glob("*", detail=True, **KWARGS) == {
|
||
|
"one": {"foo": "bar"},
|
||
|
"two": {"baz": "qux"},
|
||
|
}
|
||
|
adirfs.fs._glob.assert_called_once_with(f"{PATH}/*", detail=True, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_glob_detail(dirfs):
|
||
|
dirfs.fs.glob.return_value = {
|
||
|
f"{PATH}/one": {"foo": "bar"},
|
||
|
f"{PATH}/two": {"baz": "qux"},
|
||
|
}
|
||
|
assert dirfs.glob("*", detail=True, **KWARGS) == {
|
||
|
"one": {"foo": "bar"},
|
||
|
"two": {"baz": "qux"},
|
||
|
}
|
||
|
dirfs.fs.glob.assert_called_once_with(f"{PATH}/*", detail=True, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_du(adirfs):
|
||
|
adirfs.fs._du.return_value = 1234
|
||
|
assert await adirfs._du("file", *ARGS, **KWARGS) == 1234
|
||
|
adirfs.fs._du.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_du(dirfs):
|
||
|
dirfs.fs.du.return_value = 1234
|
||
|
assert dirfs.du("file", *ARGS, **KWARGS) == 1234
|
||
|
dirfs.fs.du.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_du_granular(adirfs):
|
||
|
adirfs.fs._du.return_value = {f"{PATH}/dir/one": 1, f"{PATH}/dir/two": 2}
|
||
|
assert await adirfs._du("dir", *ARGS, total=False, **KWARGS) == {
|
||
|
"dir/one": 1,
|
||
|
"dir/two": 2,
|
||
|
}
|
||
|
adirfs.fs._du.assert_called_once_with(f"{PATH}/dir", *ARGS, total=False, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_du_granular(dirfs):
|
||
|
dirfs.fs.du.return_value = {f"{PATH}/dir/one": 1, f"{PATH}/dir/two": 2}
|
||
|
assert dirfs.du("dir", *ARGS, total=False, **KWARGS) == {"dir/one": 1, "dir/two": 2}
|
||
|
dirfs.fs.du.assert_called_once_with(f"{PATH}/dir", *ARGS, total=False, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_find(adirfs):
|
||
|
adirfs.fs._find.return_value = [f"{PATH}/dir/one", f"{PATH}/dir/two"]
|
||
|
assert await adirfs._find("dir", *ARGS, **KWARGS) == ["dir/one", "dir/two"]
|
||
|
adirfs.fs._find.assert_called_once_with(f"{PATH}/dir", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_find(dirfs):
|
||
|
dirfs.fs.find.return_value = [f"{PATH}/dir/one", f"{PATH}/dir/two"]
|
||
|
assert dirfs.find("dir", *ARGS, **KWARGS) == ["dir/one", "dir/two"]
|
||
|
dirfs.fs.find.assert_called_once_with(f"{PATH}/dir", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_find_detail(adirfs):
|
||
|
adirfs.fs._find.return_value = {
|
||
|
f"{PATH}/dir/one": {"foo": "bar"},
|
||
|
f"{PATH}/dir/two": {"baz": "qux"},
|
||
|
}
|
||
|
assert await adirfs._find("dir", *ARGS, detail=True, **KWARGS) == {
|
||
|
"dir/one": {"foo": "bar"},
|
||
|
"dir/two": {"baz": "qux"},
|
||
|
}
|
||
|
adirfs.fs._find.assert_called_once_with(f"{PATH}/dir", *ARGS, detail=True, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_find_detail(dirfs):
|
||
|
dirfs.fs.find.return_value = {
|
||
|
f"{PATH}/dir/one": {"foo": "bar"},
|
||
|
f"{PATH}/dir/two": {"baz": "qux"},
|
||
|
}
|
||
|
assert dirfs.find("dir", *ARGS, detail=True, **KWARGS) == {
|
||
|
"dir/one": {"foo": "bar"},
|
||
|
"dir/two": {"baz": "qux"},
|
||
|
}
|
||
|
dirfs.fs.find.assert_called_once_with(f"{PATH}/dir", *ARGS, detail=True, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_expand_path(adirfs):
|
||
|
adirfs.fs._expand_path.return_value = [f"{PATH}/file"]
|
||
|
assert await adirfs._expand_path("*", *ARGS, **KWARGS) == ["file"]
|
||
|
adirfs.fs._expand_path.assert_called_once_with(f"{PATH}/*", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_expand_path(dirfs):
|
||
|
dirfs.fs.expand_path.return_value = [f"{PATH}/file"]
|
||
|
assert dirfs.expand_path("*", *ARGS, **KWARGS) == ["file"]
|
||
|
dirfs.fs.expand_path.assert_called_once_with(f"{PATH}/*", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_expand_path_list(adirfs):
|
||
|
adirfs.fs._expand_path.return_value = [f"{PATH}/1file", f"{PATH}/2file"]
|
||
|
assert await adirfs._expand_path(["1*", "2*"], *ARGS, **KWARGS) == [
|
||
|
"1file",
|
||
|
"2file",
|
||
|
]
|
||
|
adirfs.fs._expand_path.assert_called_once_with(
|
||
|
[f"{PATH}/1*", f"{PATH}/2*"], *ARGS, **KWARGS
|
||
|
)
|
||
|
|
||
|
|
||
|
def test_expand_path_list(dirfs):
|
||
|
dirfs.fs.expand_path.return_value = [f"{PATH}/1file", f"{PATH}/2file"]
|
||
|
assert dirfs.expand_path(["1*", "2*"], *ARGS, **KWARGS) == ["1file", "2file"]
|
||
|
dirfs.fs.expand_path.assert_called_once_with(
|
||
|
[f"{PATH}/1*", f"{PATH}/2*"], *ARGS, **KWARGS
|
||
|
)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_mkdir(adirfs):
|
||
|
await adirfs._mkdir("dir", *ARGS, **KWARGS)
|
||
|
adirfs.fs._mkdir.assert_called_once_with(f"{PATH}/dir", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_mkdir(dirfs):
|
||
|
dirfs.mkdir("dir", *ARGS, **KWARGS)
|
||
|
dirfs.fs.mkdir.assert_called_once_with(f"{PATH}/dir", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
@pytest.mark.asyncio
|
||
|
async def test_async_makedirs(adirfs):
|
||
|
await adirfs._makedirs("dir", *ARGS, **KWARGS)
|
||
|
adirfs.fs._makedirs.assert_called_once_with(f"{PATH}/dir", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_makedirs(dirfs):
|
||
|
dirfs.makedirs("dir", *ARGS, **KWARGS)
|
||
|
dirfs.fs.makedirs.assert_called_once_with(f"{PATH}/dir", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_rmdir(mocker, dirfs):
|
||
|
dirfs.fs.rmdir = mocker.Mock()
|
||
|
dirfs.rmdir("dir")
|
||
|
dirfs.fs.rmdir.assert_called_once_with(f"{PATH}/dir")
|
||
|
|
||
|
|
||
|
def test_mv(mocker, dirfs):
|
||
|
dirfs.fs.mv = mocker.Mock()
|
||
|
dirfs.mv("one", "two", **KWARGS)
|
||
|
dirfs.fs.mv.assert_called_once_with(f"{PATH}/one", f"{PATH}/two", **KWARGS)
|
||
|
|
||
|
|
||
|
def test_touch(mocker, dirfs):
|
||
|
dirfs.fs.touch = mocker.Mock()
|
||
|
dirfs.touch("file", **KWARGS)
|
||
|
dirfs.fs.touch.assert_called_once_with(f"{PATH}/file", **KWARGS)
|
||
|
|
||
|
|
||
|
def test_created(mocker, dirfs):
|
||
|
dirfs.fs.created = mocker.Mock(return_value="date")
|
||
|
assert dirfs.created("file") == "date"
|
||
|
dirfs.fs.created.assert_called_once_with(f"{PATH}/file")
|
||
|
|
||
|
|
||
|
def test_modified(mocker, dirfs):
|
||
|
dirfs.fs.modified = mocker.Mock(return_value="date")
|
||
|
assert dirfs.modified("file") == "date"
|
||
|
dirfs.fs.modified.assert_called_once_with(f"{PATH}/file")
|
||
|
|
||
|
|
||
|
def test_sign(mocker, dirfs):
|
||
|
dirfs.fs.sign = mocker.Mock(return_value="url")
|
||
|
assert dirfs.sign("file", *ARGS, **KWARGS) == "url"
|
||
|
dirfs.fs.sign.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_open(mocker, dirfs):
|
||
|
dirfs.fs.open = mocker.Mock()
|
||
|
assert dirfs.open("file", *ARGS, **KWARGS) == dirfs.fs.open.return_value
|
||
|
dirfs.fs.open.assert_called_once_with(f"{PATH}/file", *ARGS, **KWARGS)
|
||
|
|
||
|
|
||
|
def test_from_url(m):
|
||
|
from fsspec.core import url_to_fs
|
||
|
|
||
|
m.pipe("inner/file", b"data")
|
||
|
fs, _ = url_to_fs("dir::memory://inner")
|
||
|
assert fs.ls("", False) == ["file"]
|
||
|
assert fs.ls("", True)[0]["name"] == "file"
|
||
|
assert fs.cat("file") == b"data"
|