Skip to content

test: isolate integration test home#3144

Merged
mnriem merged 5 commits into
github:mainfrom
PascalThuet:chore/integration-test-isolation
Jul 9, 2026
Merged

test: isolate integration test home#3144
mnriem merged 5 commits into
github:mainfrom
PascalThuet:chore/integration-test-isolation

Conversation

@PascalThuet

Copy link
Copy Markdown
Contributor

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 test
  • uvx ruff check tests/integrations/conftest.py
  • git 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.

Assisted-by: Codex (model: GPT-5, autonomous)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.py to 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

@mnriem

mnriem commented Jun 24, 2026

Copy link
Copy Markdown
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)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

  • Files reviewed: 2/2 changed files
  • Comments generated: 2
  • Review effort level: Low

Comment thread tests/integrations/conftest.py Outdated
Comment thread tests/integrations/test_home_isolation.py

@mnriem mnriem left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Low

Comment thread tests/integrations/conftest.py
…t-isolation

# Conflicts:
#	tests/integrations/conftest.py
#	tests/integrations/test_home_isolation.py

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review details

  • Files reviewed: 2/2 changed files
  • Comments generated: 0 new
  • Review effort level: Low

@mnriem mnriem merged commit 643f73a into github:main Jul 9, 2026
12 checks passed
@mnriem

mnriem commented Jul 9, 2026

Copy link
Copy Markdown
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants