test_cli.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. """VendorGuard 命令行入口测试。"""
  2. from __future__ import annotations
  3. import unittest
  4. from vendor_guard.cli import (
  5. _approval_outcome_message,
  6. _build_utf8_reexec_command,
  7. _should_reexec_utf8,
  8. )
  9. class CliTests(unittest.TestCase):
  10. def test_windows_without_utf8_mode_requires_reexec(self) -> None:
  11. self.assertTrue(_should_reexec_utf8("nt", 0))
  12. self.assertFalse(_should_reexec_utf8("nt", 1))
  13. self.assertFalse(_should_reexec_utf8("posix", 0))
  14. def test_reexec_command_enables_utf8_and_preserves_arguments(self) -> None:
  15. command = _build_utf8_reexec_command(["ACME"])
  16. self.assertEqual(command[1:5], ["-X", "utf8", "-m", "vendor_guard.cli"])
  17. self.assertEqual(command[5:], ["ACME"])
  18. def test_rejected_approval_is_reported_as_completed(self) -> None:
  19. message = _approval_outcome_message(
  20. vendor_name="ACME",
  21. proposed_decision="conditional",
  22. approved=False,
  23. report_path="reports/ACME/onboarding-report.md",
  24. )
  25. self.assertIn("人工审批已完成", message)
  26. self.assertIn("未批准执行", message)
  27. self.assertIn("准入建议未提交", message)
  28. self.assertNotIn("如需提交", message)
  29. self.assertNotIn("等待", message)
  30. def test_approved_approval_is_reported_as_executed(self) -> None:
  31. message = _approval_outcome_message(
  32. vendor_name="ACME",
  33. proposed_decision="conditional",
  34. approved=True,
  35. report_path="reports/ACME/onboarding-report.md",
  36. )
  37. self.assertIn("人工审批已完成", message)
  38. self.assertIn("已批准执行", message)
  39. self.assertIn("提交工具已执行", message)
  40. if __name__ == "__main__":
  41. unittest.main()