test_main_cli.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from __future__ import annotations
  2. import pytest
  3. import main
  4. def test_build_arg_parser_supports_init_and_doctor():
  5. parser = main.build_arg_parser()
  6. args = parser.parse_args(["doctor"])
  7. assert args.command == "doctor"
  8. assert args.fix is False
  9. args = parser.parse_args(["init"])
  10. assert args.command == "init"
  11. def test_build_arg_parser_supports_doctor_fix_flag():
  12. parser = main.build_arg_parser()
  13. args = parser.parse_args(["doctor", "--fix"])
  14. assert args.command == "doctor"
  15. assert args.fix is True
  16. def test_main_doctor_command_prints_report(monkeypatch, capsys):
  17. monkeypatch.setattr(main.process_manager, "stop_all", lambda: [])
  18. class FakeReport:
  19. lite_available = True
  20. full_available = False
  21. monkeypatch.setattr(main, "collect_doctor_report", lambda: FakeReport())
  22. monkeypatch.setattr(main, "format_doctor_report", lambda report: "lite: available\nfull: unavailable")
  23. main.main(["doctor"])
  24. output = capsys.readouterr().out
  25. assert "lite: available" in output
  26. assert "full: unavailable" in output
  27. def test_main_init_command_runs_setup_wizard(monkeypatch):
  28. called: list[str] = []
  29. monkeypatch.setattr(main, "run_setup_wizard", lambda: called.append("wizard"))
  30. monkeypatch.setattr(main, "_run_uv_sync", lambda: called.append("uv-sync") or True)
  31. main.main(["init"])
  32. assert called == ["wizard", "uv-sync"]