from __future__ import annotations

from pathlib import Path
import os
import stat
import subprocess


def test_dependencies_ready_fails_when_jwt_is_missing(tmp_path: Path) -> None:
    fake_python = tmp_path / "fake-python.sh"
    fake_python.write_text(
        """#!/usr/bin/env bash
if [ "$1" = "-c" ]; then
  case "$2" in
    *jwt*) exit 1 ;;
    *) exit 0 ;;
  esac
fi
exit 0
""",
        encoding="utf-8",
    )
    fake_python.chmod(fake_python.stat().st_mode | stat.S_IEXEC)

    script_path = Path(__file__).resolve().parents[1] / "server_start.sh"
    script_prefix = script_path.read_text(encoding="utf-8").split('case "$MODE" in', 1)[0]
    command = f"""{script_prefix}
PYTHON_BIN="{fake_python}"
dependencies_ready
"""
    result = subprocess.run(
        ["bash", "-c", command],
        capture_output=True,
        text=True,
        env={**os.environ, "MODE": "test"},
        cwd=script_path.parent,
        check=False,
    )

    assert result.returncode != 0
