Traktor/myenv/Lib/site-packages/fsspec/tests/test_generic.py
2024-05-26 05:12:46 +02:00

91 lines
2.8 KiB
Python

import pytest
import fsspec
from fsspec.tests.conftest import data, server # noqa: F401
def test_remote_async_ops(server):
fsspec.filesystem("http", headers={"give_length": "true", "head_ok": "true"})
fs = fsspec.filesystem("generic", default_method="current")
out = fs.info(server + "/index/realfile")
assert out["size"] == len(data)
assert out["type"] == "file"
assert fs.isfile(server + "/index/realfile") # this method from superclass
def test_touch_rm(m):
m.touch("afile")
m.touch("dir/afile")
fs = fsspec.filesystem("generic", default_method="current")
fs.rm("memory://afile")
assert not m.exists("afile")
fs.rm("memory://dir", recursive=True)
assert not m.exists("dir/afile")
assert not m.exists("dir")
def test_cp_async_to_sync(server, m):
fsspec.filesystem("http", headers={"give_length": "true", "head_ok": "true"})
fs = fsspec.filesystem("generic", default_method="current")
fs.cp([server + "/index/realfile"], ["memory://realfile"])
assert m.cat("realfile") == data
fs.rm("memory://realfile")
assert not m.exists("realfile")
def test_pipe_cat_sync(m):
fs = fsspec.filesystem("generic", default_method="current")
fs.pipe("memory://afile", b"data")
assert fs.cat("memory://afile") == b"data"
def test_cat_async(server):
fsspec.filesystem("http", headers={"give_length": "true", "head_ok": "true"})
fs = fsspec.filesystem("generic", default_method="current")
assert fs.cat(server + "/index/realfile") == data
def test_rsync(tmpdir, m):
from fsspec.generic import GenericFileSystem, rsync
fs = GenericFileSystem()
fs.pipe("memory:///deep/path/afile", b"data1")
fs.pipe("memory:///deep/afile", b"data2")
with pytest.raises(ValueError):
rsync("memory:///deep/afile", f"file://{tmpdir}")
rsync("memory://", f"file://{tmpdir}")
allfiles = fs.find(f"file://{tmpdir}", withdirs=True, detail=True)
pos_tmpdir = fsspec.implementations.local.make_path_posix(str(tmpdir)) # for WIN
assert set(allfiles) == {
f"file://{pos_tmpdir}{_}"
for _ in [
"",
"/deep",
"/deep/path",
"/deep/path/afile",
"/deep/afile",
]
}
fs.rm("memory:///deep/afile")
rsync("memory://", f"file://{tmpdir}", delete_missing=True)
allfiles2 = fs.find(f"file://{tmpdir}", withdirs=True, detail=True)
assert set(allfiles2) == {
f"file://{pos_tmpdir}{_}"
for _ in [
"",
"/deep",
"/deep/path",
"/deep/path/afile",
]
}
# the file was not updated, since size was correct
assert (
allfiles[f"file://{pos_tmpdir}/deep/path/afile"]
== allfiles2[f"file://{pos_tmpdir}/deep/path/afile"]
)