conftest.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import os
  2. import shutil
  3. import subprocess
  4. import sys
  5. import time
  6. import pytest
  7. import fsspec
  8. from fsspec.implementations.cached import CachingFileSystem
  9. @pytest.fixture()
  10. def m():
  11. """
  12. Fixture providing a memory filesystem.
  13. """
  14. m = fsspec.filesystem("memory")
  15. m.store.clear()
  16. m.pseudo_dirs.clear()
  17. m.pseudo_dirs.append("")
  18. try:
  19. yield m
  20. finally:
  21. m.store.clear()
  22. m.pseudo_dirs.clear()
  23. m.pseudo_dirs.append("")
  24. @pytest.fixture
  25. def ftp_writable(tmpdir):
  26. """
  27. Fixture providing a writable FTP filesystem.
  28. """
  29. pytest.importorskip("pyftpdlib")
  30. from fsspec.implementations.ftp import FTPFileSystem
  31. FTPFileSystem.clear_instance_cache() # remove lingering connections
  32. CachingFileSystem.clear_instance_cache()
  33. d = str(tmpdir)
  34. with open(os.path.join(d, "out"), "wb") as f:
  35. f.write(b"hello" * 10000)
  36. P = subprocess.Popen(
  37. [sys.executable, "-m", "pyftpdlib", "-d", d, "-u", "user", "-P", "pass", "-w"]
  38. )
  39. try:
  40. time.sleep(1)
  41. yield "localhost", 2121, "user", "pass"
  42. finally:
  43. P.terminate()
  44. P.wait()
  45. try:
  46. shutil.rmtree(tmpdir)
  47. except Exception:
  48. pass