51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
import os
|
|
import shutil
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
sys.path.insert(0, ROOT)
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def isolated_home(tmp_path, monkeypatch):
|
|
"""User data/config/cache go to a temp folder (never touch the real settings or stores)."""
|
|
monkeypatch.setenv("ACKIT_HOME", str(tmp_path / "home"))
|
|
yield
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def synth_template(tmp_path_factory):
|
|
import synth
|
|
d = tmp_path_factory.mktemp("synth_template")
|
|
originals = synth.make_game(str(d))
|
|
return str(d), originals
|
|
|
|
|
|
@pytest.fixture
|
|
def synth_game(synth_template, tmp_path):
|
|
"""A fresh copy of the synthetic game folder for each test -> (root, originals)."""
|
|
src, originals = synth_template
|
|
dst = str(tmp_path / "game")
|
|
shutil.copytree(src, dst)
|
|
return dst, originals
|
|
|
|
|
|
def _real_game():
|
|
from ackit.game import find_installs
|
|
try:
|
|
found = find_installs()
|
|
except Exception:
|
|
found = []
|
|
return found[0] if found else None
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def real_game_dir():
|
|
d = os.environ.get("ACKIT_TEST_GAME") or _real_game()
|
|
if not d:
|
|
pytest.skip("real game not installed")
|
|
return d
|