You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.2 KiB
56 lines
1.2 KiB
5 months ago
|
import os
|
||
|
import shutil
|
||
|
import subprocess
|
||
|
import sys
|
||
|
import time
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
import fsspec
|
||
|
from fsspec.implementations.cached import CachingFileSystem
|
||
|
|
||
|
|
||
|
@pytest.fixture()
|
||
|
def m():
|
||
|
"""
|
||
|
Fixture providing a memory filesystem.
|
||
|
"""
|
||
|
m = fsspec.filesystem("memory")
|
||
|
m.store.clear()
|
||
|
m.pseudo_dirs.clear()
|
||
|
m.pseudo_dirs.append("")
|
||
|
try:
|
||
|
yield m
|
||
|
finally:
|
||
|
m.store.clear()
|
||
|
m.pseudo_dirs.clear()
|
||
|
m.pseudo_dirs.append("")
|
||
|
|
||
|
|
||
|
@pytest.fixture
|
||
|
def ftp_writable(tmpdir):
|
||
|
"""
|
||
|
Fixture providing a writable FTP filesystem.
|
||
|
"""
|
||
|
pytest.importorskip("pyftpdlib")
|
||
|
from fsspec.implementations.ftp import FTPFileSystem
|
||
|
|
||
|
FTPFileSystem.clear_instance_cache() # remove lingering connections
|
||
|
CachingFileSystem.clear_instance_cache()
|
||
|
d = str(tmpdir)
|
||
|
with open(os.path.join(d, "out"), "wb") as f:
|
||
|
f.write(b"hello" * 10000)
|
||
|
P = subprocess.Popen(
|
||
|
[sys.executable, "-m", "pyftpdlib", "-d", d, "-u", "user", "-P", "pass", "-w"]
|
||
|
)
|
||
|
try:
|
||
|
time.sleep(1)
|
||
|
yield "localhost", 2121, "user", "pass"
|
||
|
finally:
|
||
|
P.terminate()
|
||
|
P.wait()
|
||
|
try:
|
||
|
shutil.rmtree(tmpdir)
|
||
|
except Exception:
|
||
|
pass
|