mirror of
https://github.com/github/spec-kit.git
synced 2026-07-11 02:24:16 +08:00
* test: isolate integration test home Assisted-by: Codex (model: GPT-5, autonomous) * test: assert integration home isolation Assisted-by: Codex (model: GPT-5, autonomous) * test: extend integration home isolation to module-scoped setup Address Copilot review on #3144. Add a session-scoped autouse fixture so HOME/USERPROFILE/XDG are redirected for setup that runs outside a test function (e.g. the module-scoped status_* fixtures in test_integration_subcommand.py that run `specify init` before any per-test isolation applies). The function-scoped fixture still overrides HOME per test. Also assert Path.home() resolves to the isolated home, since most integrations (Hermes, catalog) read the home via that API rather than the env vars directly.
26 lines
875 B
Python
26 lines
875 B
Python
"""Regression tests for integration-test environment isolation."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
from pathlib import Path
|
|
|
|
|
|
def test_integration_tests_use_tmp_home(tmp_path: Path) -> None:
|
|
home = tmp_path / "home"
|
|
|
|
assert Path(os.environ["HOME"]) == home
|
|
assert Path(os.environ["USERPROFILE"]) == home
|
|
assert Path(os.environ["XDG_CACHE_HOME"]) == home / ".cache"
|
|
assert Path(os.environ["XDG_CONFIG_HOME"]) == home / ".config"
|
|
assert Path(os.environ["XDG_DATA_HOME"]) == home / ".local" / "share"
|
|
|
|
# Most integrations resolve the user home via Path.home() (e.g. Hermes,
|
|
# catalog), so the isolation has to reach that API, not just the env vars.
|
|
assert Path.home() == home
|
|
|
|
assert home.is_dir()
|
|
assert (home / ".cache").is_dir()
|
|
assert (home / ".config").is_dir()
|
|
assert (home / ".local" / "share").is_dir()
|