"""
task-2830 회귀 테스트: G4 Pre-PR Gemini CLI 게이트 기본 OFF.

scripts/finish-task.sh 의 G4-GATE 조건이 `${G4_GATE_ENABLED:-1}` 에서
`${G4_GATE_ENABLED:-0}` 으로 변경되어, 기본값이 OFF(비활성)로 바뀌었다.
단, env `G4_GATE_ENABLED=1` 을 명시하면 여전히 게이트가 되살아나야 한다
(되살리기 경로 보존).

작성자: 아르고스 (dev1팀 테스터)
"""
import subprocess
from pathlib import Path

SCRIPT = Path(__file__).resolve().parents[1] / "scripts" / "finish-task.sh"


def test_g4_gate_default_off():
    """G4 게이트 기본값이 OFF(0)로 변경되었는지 확인한다."""
    content = SCRIPT.read_text(encoding="utf-8")
    assert '${G4_GATE_ENABLED:-0}' in content, (
        "G4_GATE_ENABLED 기본값이 0(OFF)이어야 합니다."
    )
    assert '${G4_GATE_ENABLED:-1}' not in content, (
        "G4_GATE_ENABLED 기본값이 여전히 1(ON)로 남아있습니다."
    )


def test_g4_gate_resurrection_path_preserved():
    """G4_GATE_ENABLED=1 명시 시 게이트가 되살아나는 경로가 보존되는지 확인한다."""
    content = SCRIPT.read_text(encoding="utf-8")
    assert '[ "${G4_GATE_ENABLED:-0}" = "1" ]' in content, (
        "G4_GATE_ENABLED=1 명시 시 게이트를 되살리는 조건문이 보존되어야 합니다."
    )


def test_g4_gate_syntax_valid():
    """finish-task.sh 의 bash 문법이 여전히 유효한지 확인한다."""
    result = subprocess.run(
        ["bash", "-n", str(SCRIPT)],
        capture_output=True,
        text=True,
    )
    assert result.returncode == 0, (
        f"bash -n 문법 검사 실패:\nstdout={result.stdout}\nstderr={result.stderr}"
    )
