"""
Test conda-package-handling can work in `.tar.bz2`-only mode if zstandard is not
available. (Giving the user a chance to immediately install zstandard.)
"""
import importlib
import subprocess
import sys
def test_degraded():
try:
sys.modules["zstandard"] = None # type: ignore
sys.modules["conda_package_streaming.transmute"] = None # type: ignore
sys.modules["conda_package_handling.conda_fmt"] = None # type: ignore
# this is only testing conda_package_handling's code, and does not test
# that conda_package_streaming works without zstandard.
import conda_package_handling.api
importlib.reload(conda_package_handling.api)
assert conda_package_handling.api.libarchive_enabled is False
finally:
sys.modules.pop("zstandard", None)
sys.modules.pop("conda_package_handling.conda_fmt", None)
sys.modules.pop("conda_package_streaming.transmute", None)
import conda_package_handling.api
importlib.reload(conda_package_handling.api)
assert conda_package_handling.api.libarchive_enabled is True
def test_degraded_subprocess():
"""
More reliable way to mock 'zstandard not available'
"""
subprocess.check_call(
[
sys.executable,
"-c",
"import sys; sys.modules['zstandard'] = None; import conda_package_handling.api",
]
)