import os, subprocess, sys
from pathlib import Path

# worktree 내 스크립트 경로 사용 (메인 workspace와 독립적)
WORKSPACE = Path("/home/jay/workspace/.worktrees/task-2461-dev6")


def test_gemini_call_failed_returns_failure_exit_1():
    """task-2461 P1-1: gemini_review_gate.py 가 GEMINI_API_KEY unset에서 conclusion=failure + exit 1"""
    env = os.environ.copy()
    env.pop("GEMINI_API_KEY", None)
    env["GEMINI_REVIEW_MOCK"] = ""  # disable mock
    r = subprocess.run(
        [sys.executable, str(WORKSPACE / "scripts/gemini_review_gate.py"),
         "--commit-sha", "0000000000000000000000000000000000000000",
         "--pr-number", "0", "--force"],
        env=env, capture_output=True, text=True, timeout=30
    )
    # exit code 1 = failure
    assert r.returncode == 1, f"expected exit 1, got {r.returncode}: stderr={r.stderr}"
    # stderr should have FAIL message
    assert "FAIL" in r.stderr or "failure" in r.stdout.lower()


def test_gemini_call_failed_with_allow_neutral_returns_0():
    """--allow-neutral 옵션은 디버깅 전용 — exit 0 + neutral"""
    env = os.environ.copy()
    env.pop("GEMINI_API_KEY", None)
    r = subprocess.run(
        [sys.executable, str(WORKSPACE / "scripts/gemini_review_gate.py"),
         "--commit-sha", "0000000000000000000000000000000000000000",
         "--pr-number", "0", "--force", "--allow-neutral"],
        env=env, capture_output=True, text=True, timeout=30
    )
    assert r.returncode == 0, f"expected exit 0 with --allow-neutral, got {r.returncode}"
