........................................................................ [ 12%]
................................FFF.FFF................................. [ 24%]
........................................................................ [ 36%]
..............................................................F......... [ 49%]
........................................................ [ 58%]
........................................................................ [ 70%]
........................................................................ [ 83%]
........................................................................ [ 95%]
..........................                                               [100%]
=================================== FAILURES ===================================
_____________________________ TestCLI.test_version _____________________________

self = <test_cli.TestCLI object at 0x70cb780ee600>
capsys = <_pytest.capture.CaptureFixture object at 0x70cb77c665d0>

    def test_version(self, capsys):
        with pytest.raises(SystemExit) as exc_info:
            with patch("sys.argv", ["agent-reach", "version"]):
>               main()

tests/test_cli.py:21: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
agent_reach/cli.py:219: in main
    _configure_logging(getattr(args, "verbose", False))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

verbose = False

    def _configure_logging(verbose: bool = False):
        """Suppress loguru output unless --verbose is set."""
>       from loguru import logger
E       ModuleNotFoundError: No module named 'loguru'

agent_reach/cli.py:53: ModuleNotFoundError
______________________ TestCLI.test_no_command_shows_help ______________________

self = <test_cli.TestCLI object at 0x70cb780ee9c0>
capsys = <_pytest.capture.CaptureFixture object at 0x70cb77c8d8b0>

    def test_no_command_shows_help(self, capsys):
        with pytest.raises(SystemExit) as exc_info:
            with patch("sys.argv", ["agent-reach"]):
>               main()

tests/test_cli.py:29: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
agent_reach/cli.py:219: in main
    _configure_logging(getattr(args, "verbose", False))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

verbose = False

    def _configure_logging(verbose: bool = False):
        """Suppress loguru output unless --verbose is set."""
>       from loguru import logger
E       ModuleNotFoundError: No module named 'loguru'

agent_reach/cli.py:53: ModuleNotFoundError
___________________________ TestCLI.test_doctor_runs ___________________________

self = <test_cli.TestCLI object at 0x70cb780eed80>
capsys = <_pytest.capture.CaptureFixture object at 0x70cb77c8ed50>

    def test_doctor_runs(self, capsys):
        with patch(
            "agent_reach.doctor.check_all",
            return_value={
                "web": {
                    "status": "ok",
                    "name": "网页",
                    "message": "可用",
                    "tier": 0,
                    "backends": ["Jina Reader"],
                    "active_backend": "Jina Reader",
                }
            },
        ), patch(
            "agent_reach.doctor.format_report",
            return_value="Agent Reach\n✅ 网页可用",
        ), patch("sys.argv", ["agent-reach", "doctor"]):
>           main()

tests/test_cli.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
agent_reach/cli.py:219: in main
    _configure_logging(getattr(args, "verbose", False))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

verbose = False

    def _configure_logging(verbose: bool = False):
        """Suppress loguru output unless --verbose is set."""
>       from loguru import logger
E       ModuleNotFoundError: No module named 'loguru'

agent_reach/cli.py:53: ModuleNotFoundError
_________________ TestCLI.test_transcribe_command_prints_text __________________

self = <test_cli.TestCLI object at 0x70cb780ef500>
capsys = <_pytest.capture.CaptureFixture object at 0x70cb77c8d3d0>

    def test_transcribe_command_prints_text(self, capsys):
        with patch("agent_reach.transcribe.transcribe", return_value="hello transcript"):
            with patch("sys.argv", ["agent-reach", "transcribe", "audio.mp3"]):
>               main()

tests/test_cli.py:94: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
agent_reach/cli.py:219: in main
    _configure_logging(getattr(args, "verbose", False))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

verbose = False

    def _configure_logging(verbose: bool = False):
        """Suppress loguru output unless --verbose is set."""
>       from loguru import logger
E       ModuleNotFoundError: No module named 'loguru'

agent_reach/cli.py:53: ModuleNotFoundError
______________ TestCLI.test_transcribe_command_writes_output_file ______________

self = <test_cli.TestCLI object at 0x70cb780ef8c0>
capsys = <_pytest.capture.CaptureFixture object at 0x70cb77d031d0>
tmp_path = PosixPath('/tmp/pytest-of-hermes/pytest-24/test_transcribe_command_writes0')

    def test_transcribe_command_writes_output_file(self, capsys, tmp_path):
        out_file = tmp_path / "t.txt"
        with patch("agent_reach.transcribe.transcribe", return_value="saved text"):
            with patch("sys.argv", ["agent-reach", "transcribe", "audio.mp3", "-o", str(out_file)]):
>               main()

tests/test_cli.py:102: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
agent_reach/cli.py:219: in main
    _configure_logging(getattr(args, "verbose", False))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

verbose = False

    def _configure_logging(verbose: bool = False):
        """Suppress loguru output unless --verbose is set."""
>       from loguru import logger
E       ModuleNotFoundError: No module named 'loguru'

agent_reach/cli.py:53: ModuleNotFoundError
_______ TestCLI.test_transcribe_provider_fallback_requires_explicit_flag _______

self = <test_cli.TestCLI object at 0x70cb780efc80>

    def test_transcribe_provider_fallback_requires_explicit_flag(self):
        with patch(
            "agent_reach.transcribe.transcribe",
            return_value="hello transcript",
        ) as mock_transcribe:
            with patch(
                "sys.argv",
                [
                    "agent-reach",
                    "transcribe",
                    "audio.mp3",
                    "--allow-provider-fallback",
                ],
            ):
>               main()

tests/test_cli.py:120: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
agent_reach/cli.py:219: in main
    _configure_logging(getattr(args, "verbose", False))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

verbose = False

    def _configure_logging(verbose: bool = False):
        """Suppress loguru output unless --verbose is set."""
>       from loguru import logger
E       ModuleNotFoundError: No module named 'loguru'

agent_reach/cli.py:53: ModuleNotFoundError
__________ test_ytdlp_config_dir_matches_upstream_first_user_location __________

monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x70cb778a9550>
tmp_path = PosixPath('/tmp/pytest-of-hermes/pytest-24/test_ytdlp_config_dir_matches_0')

    def test_ytdlp_config_dir_matches_upstream_first_user_location(
        monkeypatch, tmp_path
    ):
>       from yt_dlp.options import get_user_config_dirs
E       ModuleNotFoundError: No module named 'yt_dlp'

tests/test_paths.py:36: ModuleNotFoundError
=========================== short test summary info ============================
FAILED tests/test_cli.py::TestCLI::test_version - ModuleNotFoundError: No mod...
FAILED tests/test_cli.py::TestCLI::test_no_command_shows_help - ModuleNotFoun...
FAILED tests/test_cli.py::TestCLI::test_doctor_runs - ModuleNotFoundError: No...
FAILED tests/test_cli.py::TestCLI::test_transcribe_command_prints_text - Modu...
FAILED tests/test_cli.py::TestCLI::test_transcribe_command_writes_output_file
FAILED tests/test_cli.py::TestCLI::test_transcribe_provider_fallback_requires_explicit_flag
FAILED tests/test_paths.py::test_ytdlp_config_dir_matches_upstream_first_user_location
7 failed, 579 passed, 16 subtests passed in 11.64s
