test_degraded.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. """
  2. Test conda-package-handling can work in `.tar.bz2`-only mode if zstandard is not
  3. available. (Giving the user a chance to immediately install zstandard.)
  4. """
  5. import importlib
  6. import subprocess
  7. import sys
  8. def test_degraded():
  9. try:
  10. sys.modules["zstandard"] = None # type: ignore
  11. sys.modules["conda_package_streaming.transmute"] = None # type: ignore
  12. sys.modules["conda_package_handling.conda_fmt"] = None # type: ignore
  13. # this is only testing conda_package_handling's code, and does not test
  14. # that conda_package_streaming works without zstandard.
  15. import conda_package_handling.api
  16. importlib.reload(conda_package_handling.api)
  17. assert conda_package_handling.api.libarchive_enabled is False
  18. finally:
  19. sys.modules.pop("zstandard", None)
  20. sys.modules.pop("conda_package_handling.conda_fmt", None)
  21. sys.modules.pop("conda_package_streaming.transmute", None)
  22. import conda_package_handling.api
  23. importlib.reload(conda_package_handling.api)
  24. assert conda_package_handling.api.libarchive_enabled is True
  25. def test_degraded_subprocess():
  26. """
  27. More reliable way to mock 'zstandard not available'
  28. """
  29. subprocess.check_call(
  30. [
  31. sys.executable,
  32. "-c",
  33. "import sys; sys.modules['zstandard'] = None; import conda_package_handling.api",
  34. ]
  35. )