Make some fixture local (#2919)

* Make xdg fixtures local

* Make create fixtures local
This commit is contained in:
Antoine Prouvost 2023-10-17 16:27:47 +02:00 committed by GitHub
parent 8100f0e6ef
commit a8464367c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 56 additions and 92 deletions

View File

@ -184,95 +184,3 @@ def tmp_xtensor_env(tmp_prefix: pathlib.Path) -> Generator[pathlib.Path, None, N
"""An activated environment with Xtensor installed."""
helpers.install("-c", "conda-forge", "--json", "xtensor", no_dry_run=True)
yield tmp_prefix
@pytest.fixture
def user_config_dir(tmp_home: pathlib.Path) -> Generator[pathlib.Path, None, None]:
"""Location of config files that are generated from mamba"""
maybe_xdg_config = os.getenv("XDG_CONFIG_DIR", "")
if maybe_xdg_config:
yield pathlib.Path(maybe_xdg_config)
system = platform.system()
if system == "Linux" or system == "Darwin":
yield tmp_home / ".config/mamba"
elif system == "Windows":
yield pathlib.Path(os.environ["APPDATA"]) / "mamba"
else:
raise RuntimeError(f"Unsupported system {system}")
@pytest.fixture
def user_data_dir(tmp_home: pathlib.Path) -> Generator[pathlib.Path, None, None]:
"""Location of data files that are generated from mamba"""
maybe_xdg_data = os.getenv("XDG_DATA_DIR", "")
if maybe_xdg_data:
yield pathlib.Path(maybe_xdg_data)
system = platform.system()
if system == "Linux" or system == "Darwin":
yield tmp_home / ".local/share/mamba"
elif system == "Windows":
yield pathlib.Path(os.environ["APPDATA"]) / "mamba"
else:
raise RuntimeError(f"Unsupported system {system}")
@pytest.fixture
def user_cache_dir(tmp_home: pathlib.Path) -> Generator[pathlib.Path, None, None]:
"""Location of data files that are generated from mamba"""
maybe_xdg_cache = os.getenv("XDG_CACHE_DIR", "")
if maybe_xdg_cache:
yield pathlib.Path(maybe_xdg_cache)
system = platform.system()
if system == "Linux" or system == "Darwin":
yield tmp_home / ".cache/mamba"
elif system == "Windows":
yield pathlib.Path(os.environ["LOCALAPPDATA"]) / "mamba"
else:
raise RuntimeError(f"Unsupported system {system}")
def get_glibc_version():
try:
output = subprocess.check_output(["ldd", "--version"])
except:
return
output.splitlines()
version = output.splitlines()[0].split()[-1]
return version.decode("ascii")
@pytest.fixture
def add_glibc_virtual_package():
version = get_glibc_version()
here = os.path.dirname(os.path.abspath(__file__))
with open(os.path.join(here, "channel_a/linux-64/repodata.tpl")) as f:
repodata = f.read()
with open(os.path.join(here, "channel_a/linux-64/repodata.json"), "w") as f:
if version is not None:
glibc_placeholder = ', "__glibc=' + version + '"'
else:
glibc_placeholder = ""
repodata = repodata.replace("GLIBC_PLACEHOLDER", glibc_placeholder)
f.write(repodata)
@pytest.fixture
def copy_channels_osx():
import shutil
here = os.path.dirname(os.path.abspath(__file__))
for channel in ["a", "b"]:
if not os.path.exists(os.path.join(here, f"channel_{channel}/osx-64")):
shutil.copytree(
os.path.join(here, f"channel_{channel}/linux-64"),
os.path.join(here, f"channel_{channel}/osx-64"),
)
with open(
os.path.join(here, f"channel_{channel}/osx-64/repodata.json")
) as f:
repodata = f.read()
with open(
os.path.join(here, f"channel_{channel}/osx-64/repodata.json"), "w"
) as f:
repodata = repodata.replace("linux", "osx")
f.write(repodata)

View File

@ -11,6 +11,21 @@ import yaml
from . import helpers
@pytest.fixture
def user_config_dir(tmp_home: Path):
"""Location of config files that are generated from mamba"""
maybe_xdg_config = os.getenv("XDG_CONFIG_DIR", "")
if maybe_xdg_config:
yield Path(maybe_xdg_config)
system = platform.system()
if system == "Linux" or system == "Darwin":
yield tmp_home / ".config/mamba"
elif system == "Windows":
yield Path(os.environ["APPDATA"]) / "mamba"
else:
raise RuntimeError(f"Unsupported system {system}")
class Dumper(yaml.Dumper):
"""A YAML dumper to properly indent lists.

View File

@ -939,6 +939,47 @@ def test_long_path_support(tmp_home, tmp_root_prefix):
assert res["success"]
def get_glibc_version():
try:
output = subprocess.check_output(["ldd", "--version"])
except Exception:
return
output.splitlines()
version = output.splitlines()[0].split()[-1]
return version.decode("ascii")
@pytest.fixture
def add_glibc_virtual_package():
version = get_glibc_version()
with open(__this_dir__ / "channel_a/linux-64/repodata.tpl") as f:
repodata = f.read()
with open(__this_dir__ / "channel_a/linux-64/repodata.json", "w") as f:
if version is not None:
glibc_placeholder = ', "__glibc=' + version + '"'
else:
glibc_placeholder = ""
repodata = repodata.replace("GLIBC_PLACEHOLDER", glibc_placeholder)
f.write(repodata)
@pytest.fixture
def copy_channels_osx():
for channel in ["a", "b"]:
if not (__this_dir__ / f"channel_{channel}/osx-64").exists():
shutil.copytree(
__this_dir__ / f"channel_{channel}/linux-64",
__this_dir__ / f"channel_{channel}/osx-64",
)
with open(__this_dir__ / f"channel_{channel}/osx-64/repodata.json") as f:
repodata = f.read()
with open(
__this_dir__ / f"channel_{channel}/osx-64/repodata.json", "w"
) as f:
repodata = repodata.replace("linux", "osx")
f.write(repodata)
def test_dummy_create(
add_glibc_virtual_package, copy_channels_osx, tmp_home, tmp_root_prefix
):