"""Opt-in integration test for the setup_tier2_clone.ps1 bootstrap.

Runs the script in -WhatIf mode against a fixture workspace. The full
non-WhatIf run is a manual verification (the user runs it once and
inspects the result).
"""
import os
import subprocess
from pathlib import Path

import pytest

pytestmark = [
 pytest.mark.skipif(
  not os.environ.get("TIER2_SANDBOX_TESTS"),
  reason="opt-in: bootstrap test off by default; set TIER2_SANDBOX_TESTS=1",
 ),
 pytest.mark.tier2_sandbox,
]


def test_bootstrap_whatif_does_not_create_clone(tmp_path: Path) -> None:
 """pwsh -WhatIf should print the steps but not actually clone."""
 fake_main = tmp_path / "fake_main"
 fake_main.mkdir()
 fake_clone = tmp_path / "fake_clone"
 script = Path("scripts/tier2/setup_tier2_clone.ps1").resolve()
 result = subprocess.run(
  [
   "pwsh", "-NoProfile", "-File", str(script),
   "-MainRepoPath", str(fake_main),
   "-Tier2ClonePath", str(fake_clone),
   "-WhatIf",
  ],
  capture_output=True, text=True, timeout=60,
 )
 assert result.returncode == 0, f"pwsh exit {result.returncode}\nstdout={result.stdout}\nstderr={result.stderr}"
 assert "What if" in result.stdout or "starting bootstrap" in result.stdout or "Bootstrap Tier 2 clone" in result.stdout
 assert not fake_clone.exists(), "-WhatIf should not have created the clone"


def test_setup_script_overrides_mcp_server() -> None:
 """Regression test: setup_tier2_clone.ps1 MUST override the MCP server's
 command and PYTHONPATH to point at the Tier 2 clone, AND reset the
 clone's mcp_paths.toml to empty extra_dirs. Otherwise the clone inherits
 the main repo's MCP config (which has manual_slop's path and an
 mcp_paths.toml allowlisting gencpp), leading to 'ACCESS DENIED' on clone
 paths (2026-06-17 bug)."""
 script = Path("scripts/tier2/setup_tier2_clone.ps1").resolve()
 content = script.read_text(encoding="utf-8")
 assert "mcp.'manual-slop'.command" in content, "script must override MCP server command"
 assert "mcp.'manual-slop'.environment.PYTHONPATH" in content, "script must override MCP server PYTHONPATH"
 assert "mcp_paths.toml" in content, "script must reset mcp_paths.toml"
 assert "extra_dirs = []" in content, "script must set extra_dirs to empty"


def test_setup_script_overrides_model() -> None:
 """Regression test: setup_tier2_clone.ps1 MUST override the top-level
 'model' field in the clone's opencode.json to the Tier 2 model
 (minimax-coding-plan/MiniMax-M3), not the main repo's zai/glm-5."""
 script = Path("scripts/tier2/setup_tier2_clone.ps1").resolve()
 content = script.read_text(encoding="utf-8")
 assert 'Name model -Value $fragment.model' in content, "script must override top-level model from fragment"
