test: isolate integration test home#3144
Merged
Merged
Conversation
Assisted-by: Codex (model: GPT-5, autonomous)
Contributor
There was a problem hiding this comment.
Pull request overview
This PR makes integration tests hermetic by automatically redirecting user-home and XDG base directories (HOME/USERPROFILE, XDG_CACHE_HOME, XDG_CONFIG_HOME, XDG_DATA_HOME) into each test’s tmp_path, preventing accidental reads/writes to the real developer/CI home directory.
Changes:
- Added an autouse pytest fixture in
tests/integrations/conftest.pyto isolate HOME/USERPROFILE and XDG directories per test. - Ensured the expected XDG subdirectories exist under the isolated home before tests run.
Show a summary per file
| File | Description |
|---|---|
| tests/integrations/conftest.py | Adds an autouse fixture to sandbox user-home/XDG env vars under tmp_path for integration test isolation. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 1/1 changed files
- Comments generated: 0
Collaborator
|
Good instinct, but drop the XDG vars — they're not read anywhere — and either align with the existing Path.home monkeypatch or add an assertion so this actually fails loudly when someone forgets |
Assisted-by: Codex (model: GPT-5, autonomous)
Assisted-by: Codex (model: GPT-5, autonomous)
mnriem
requested changes
Jul 6, 2026
mnriem
left a comment
Collaborator
There was a problem hiding this comment.
Please address Copilot feedback
Address Copilot review on github#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.
…t-isolation # Conflicts: # tests/integrations/conftest.py # tests/integrations/test_home_isolation.py
mnriem
approved these changes
Jul 9, 2026
Collaborator
|
Thank you! |
kanfil
added a commit
to tikalk/agentic-sdlc-spec-kit
that referenced
this pull request
Jul 11, 2026
Upstream merge (30 commits, 3 releases 0.12.9-0.12.11): - invoke_separator parse-success fix (github#3304) - Windows Store python3 stub skip + _interpreter_runs() probe (github#3385) - SKILL.md frontmatter control char escape via yaml_quote() (github#3399) - chained expression filters left-to-right refactor (github#3339) - refresh_shared_templates preserves recovered files (github#3378) - Goose yaml skill placeholder resolution (github#3374) - bundled version pin enforcement (github#3377) - integration test home isolation (github#3144) - py: script type in command templates (github#3403) - configurable shell step timeout (github#3404) - find plans in nested spec directories (github#3405) - plan.md phase numbering fix (github#3416) - PowerShell -Number 0 honor via ContainsKey (github#3412) - workflow.yml non-string scalar validation (github#3421) - plan-template.md self-referencing path fix (github#3417) - pre-commit config + trailing whitespace cleanup (github#3430) - malformed URL error handling (github#3433/github#3435/github#3437) - agent-context nested plan.md discovery (github#3301) - community catalog additions (EARS, Figma) (github#3407/github#3408) 9 conflicts resolved: pyproject.toml, integrations/base.py, agents.py, forge/__init__.py, hermes/__init__.py, create-new-feature-branch.ps1, test_git_extension.py, test_base.py, test_integration_devin.py. Template-to-preset alignment: added py: script lines to 6 preset commands, removed stale Phase 1 agent context line from plan preset, fixed phase numbering. Pre-merge fix: wrapped bare make_typer import with fallback. Assisted-by: opencode (model: glm-5.2, autonomous)
kanfil
added a commit
to tikalk/agentic-sdlc-spec-kit
that referenced
this pull request
Jul 11, 2026
Upstream merge (30 commits, 3 releases 0.12.9-0.12.11): - invoke_separator parse-success fix (github#3304) - Windows Store python3 stub skip + _interpreter_runs() probe (github#3385) - SKILL.md frontmatter control char escape via yaml_quote() (github#3399) - chained expression filters left-to-right refactor (github#3339) - refresh_shared_templates preserves recovered files (github#3378) - Goose yaml skill placeholder resolution (github#3374) - bundled version pin enforcement (github#3377) - integration test home isolation (github#3144) - py: script type in command templates (github#3403) - configurable shell step timeout (github#3404) - find plans in nested spec directories (github#3405) - plan.md phase numbering fix (github#3416) - PowerShell -Number 0 honor via ContainsKey (github#3412) - workflow.yml non-string scalar validation (github#3421) - plan-template.md self-referencing path fix (github#3417) - pre-commit config + trailing whitespace cleanup (github#3430) - malformed URL error handling (github#3433/github#3435/github#3437) - agent-context nested plan.md discovery (github#3301) - community catalog additions (EARS, Figma) (github#3407/github#3408) 9 conflicts resolved: pyproject.toml, integrations/base.py, agents.py, forge/__init__.py, hermes/__init__.py, create-new-feature-branch.ps1, test_git_extension.py, test_base.py, test_integration_devin.py. Template-to-preset alignment: added py: script lines to 6 preset commands, removed stale Phase 1 agent context line from plan preset, fixed phase numbering. Pre-merge fix: wrapped bare make_typer import with fallback. Assisted-by: opencode (model: glm-5.2, autonomous)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Isolate integration-test HOME/USERPROFILE and XDG directories to each test tmp path.
Why
Some integrations intentionally write to user-global locations such as
~/.hermes/skills. Without a shared isolation fixture, inherited/base integration tests can write to the real developer or CI home and also block safe parallel execution later.Validation
uv sync --extra testuvx ruff check tests/integrations/conftest.pygit diff --check.venv/bin/python -m pytest tests/integrations/test_integration_hermes.py -q(34 passed).venv/bin/python -m pytest tests/integrations --durations=30 -q(2688 passed, 1 skipped in 100.07s)Disclosure
Prepared by Codex (model: GPT-5) on behalf of @PascalThuet.